xref: /aosp_15_r20/external/coreboot/src/vendorcode/cavium/include/bdk/libbdk-arch/bdk-csrs-pcierc.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 #ifndef __BDK_CSRS_PCIERC_H__
2 #define __BDK_CSRS_PCIERC_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 PCIERC.
50  *
51  * This file is auto generated. Do not edit.
52  *
53  */
54 
55 /**
56  * Register (PCICONFIGRC) pcierc#_ack_freq
57  *
58  * PCIe RC Ack Frequency Register
59  */
60 union bdk_pciercx_ack_freq
61 {
62     uint32_t u;
63     struct bdk_pciercx_ack_freq_s
64     {
65 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
66         uint32_t reserved_31           : 1;
67         uint32_t easpml1               : 1;  /**< [ 30: 30](R/W/H) Enter ASPM L1 without receive in L0s. Allow core to enter ASPM L1 even when link partner
68                                                                  did not go to L0s (receive is not in L0s). When not set, core goes to ASPM L1 only after
69                                                                  idle period, during which both receive and transmit are in L0s. */
70         uint32_t l1el                  : 3;  /**< [ 29: 27](R/W) L1 entrance latency. Values correspond to:
71                                                                  0x0 = 1 ms.
72                                                                  0x1 = 2 ms.
73                                                                  0x2 = 4 ms.
74                                                                  0x3 = 8 ms.
75                                                                  0x4 = 16 ms.
76                                                                  0x5 = 32 ms.
77                                                                  0x6 or 0x7 = 64 ms. */
78         uint32_t l0el                  : 3;  /**< [ 26: 24](R/W) L0s entrance latency. Values correspond to:
79                                                                  0x0 = 1 ms.
80                                                                  0x1 = 2 ms.
81                                                                  0x2 = 3 ms.
82                                                                  0x3 = 4 ms.
83                                                                  0x4 = 5 ms.
84                                                                  0x5 = 6 ms.
85                                                                  0x6 or 0x7 = 7 ms. */
86         uint32_t n_fts_cc              : 8;  /**< [ 23: 16](RO) The number of fast training sequence (FTS) ordered sets to be transmitted when
87                                                                  transitioning from L0s to L0. The maximum number of FTS ordered sets that a component can
88                                                                  request is 255.
89                                                                  A value of zero is not supported; a value of zero can cause the LTSSM to go into the
90                                                                  recovery state when exiting from L0s. */
91         uint32_t n_fts                 : 8;  /**< [ 15:  8](R/W) The number of fast training sequence (FTS) ordered sets to be transmitted when
92                                                                  transitioning from L0s to L0. The maximum number of FTS ordered sets that a component can
93                                                                  request is 255.
94                                                                  A value of zero is not supported; a value of zero can cause the LTSSM to go into the
95                                                                  recovery state when exiting from L0s. */
96         uint32_t ack_freq              : 8;  /**< [  7:  0](R/W) ACK frequency. The number of pending ACKs specified here (up to 255) before sending an ACK. */
97 #else /* Word 0 - Little Endian */
98         uint32_t ack_freq              : 8;  /**< [  7:  0](R/W) ACK frequency. The number of pending ACKs specified here (up to 255) before sending an ACK. */
99         uint32_t n_fts                 : 8;  /**< [ 15:  8](R/W) The number of fast training sequence (FTS) ordered sets to be transmitted when
100                                                                  transitioning from L0s to L0. The maximum number of FTS ordered sets that a component can
101                                                                  request is 255.
102                                                                  A value of zero is not supported; a value of zero can cause the LTSSM to go into the
103                                                                  recovery state when exiting from L0s. */
104         uint32_t n_fts_cc              : 8;  /**< [ 23: 16](RO) The number of fast training sequence (FTS) ordered sets to be transmitted when
105                                                                  transitioning from L0s to L0. The maximum number of FTS ordered sets that a component can
106                                                                  request is 255.
107                                                                  A value of zero is not supported; a value of zero can cause the LTSSM to go into the
108                                                                  recovery state when exiting from L0s. */
109         uint32_t l0el                  : 3;  /**< [ 26: 24](R/W) L0s entrance latency. Values correspond to:
110                                                                  0x0 = 1 ms.
111                                                                  0x1 = 2 ms.
112                                                                  0x2 = 3 ms.
113                                                                  0x3 = 4 ms.
114                                                                  0x4 = 5 ms.
115                                                                  0x5 = 6 ms.
116                                                                  0x6 or 0x7 = 7 ms. */
117         uint32_t l1el                  : 3;  /**< [ 29: 27](R/W) L1 entrance latency. Values correspond to:
118                                                                  0x0 = 1 ms.
119                                                                  0x1 = 2 ms.
120                                                                  0x2 = 4 ms.
121                                                                  0x3 = 8 ms.
122                                                                  0x4 = 16 ms.
123                                                                  0x5 = 32 ms.
124                                                                  0x6 or 0x7 = 64 ms. */
125         uint32_t easpml1               : 1;  /**< [ 30: 30](R/W/H) Enter ASPM L1 without receive in L0s. Allow core to enter ASPM L1 even when link partner
126                                                                  did not go to L0s (receive is not in L0s). When not set, core goes to ASPM L1 only after
127                                                                  idle period, during which both receive and transmit are in L0s. */
128         uint32_t reserved_31           : 1;
129 #endif /* Word 0 - End */
130     } s;
131     /* struct bdk_pciercx_ack_freq_s cn; */
132 };
133 typedef union bdk_pciercx_ack_freq bdk_pciercx_ack_freq_t;
134 
135 static inline uint64_t BDK_PCIERCX_ACK_FREQ(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ACK_FREQ(unsigned long a)136 static inline uint64_t BDK_PCIERCX_ACK_FREQ(unsigned long a)
137 {
138     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
139         return 0x70cll + 0x100000000ll * ((a) & 0x3);
140     __bdk_csr_fatal("PCIERCX_ACK_FREQ", 1, a, 0, 0, 0);
141 }
142 
143 #define typedef_BDK_PCIERCX_ACK_FREQ(a) bdk_pciercx_ack_freq_t
144 #define bustype_BDK_PCIERCX_ACK_FREQ(a) BDK_CSR_TYPE_PCICONFIGRC
145 #define basename_BDK_PCIERCX_ACK_FREQ(a) "PCIERCX_ACK_FREQ"
146 #define busnum_BDK_PCIERCX_ACK_FREQ(a) (a)
147 #define arguments_BDK_PCIERCX_ACK_FREQ(a) (a),-1,-1,-1
148 
149 /**
150  * Register (PCICONFIGRC) pcierc#_ack_timer
151  *
152  * PCIe RC Ack Latency Timer/Replay Timer Register
153  */
154 union bdk_pciercx_ack_timer
155 {
156     uint32_t u;
157     struct bdk_pciercx_ack_timer_s
158     {
159 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
160         uint32_t rtl                   : 16; /**< [ 31: 16](R/W/H) Replay time limit. The replay timer expires when it reaches this limit. The PCI Express
161                                                                  bus initiates a replay upon reception of a NAK or when the replay timer expires. This
162                                                                  value is set correctly by the hardware out of reset or when the negotiated link width or
163                                                                  payload size changes. If the user changes this value
164                                                                  they should refer to the PCIe specification for the correct value. */
165         uint32_t rtltl                 : 16; /**< [ 15:  0](R/W/H) Round trip latency time limit. The ACK/NAK latency timer expires when it reaches this
166                                                                  limit. This value is set correctly by the hardware out of reset or when the negotiated
167                                                                  link width or payload size changes. If the user changes this value
168                                                                  they should refer to the PCIe specification for the correct value. */
169 #else /* Word 0 - Little Endian */
170         uint32_t rtltl                 : 16; /**< [ 15:  0](R/W/H) Round trip latency time limit. The ACK/NAK latency timer expires when it reaches this
171                                                                  limit. This value is set correctly by the hardware out of reset or when the negotiated
172                                                                  link width or payload size changes. If the user changes this value
173                                                                  they should refer to the PCIe specification for the correct value. */
174         uint32_t rtl                   : 16; /**< [ 31: 16](R/W/H) Replay time limit. The replay timer expires when it reaches this limit. The PCI Express
175                                                                  bus initiates a replay upon reception of a NAK or when the replay timer expires. This
176                                                                  value is set correctly by the hardware out of reset or when the negotiated link width or
177                                                                  payload size changes. If the user changes this value
178                                                                  they should refer to the PCIe specification for the correct value. */
179 #endif /* Word 0 - End */
180     } s;
181     /* struct bdk_pciercx_ack_timer_s cn; */
182 };
183 typedef union bdk_pciercx_ack_timer bdk_pciercx_ack_timer_t;
184 
185 static inline uint64_t BDK_PCIERCX_ACK_TIMER(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ACK_TIMER(unsigned long a)186 static inline uint64_t BDK_PCIERCX_ACK_TIMER(unsigned long a)
187 {
188     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
189         return 0x700ll + 0x100000000ll * ((a) & 0x3);
190     __bdk_csr_fatal("PCIERCX_ACK_TIMER", 1, a, 0, 0, 0);
191 }
192 
193 #define typedef_BDK_PCIERCX_ACK_TIMER(a) bdk_pciercx_ack_timer_t
194 #define bustype_BDK_PCIERCX_ACK_TIMER(a) BDK_CSR_TYPE_PCICONFIGRC
195 #define basename_BDK_PCIERCX_ACK_TIMER(a) "PCIERCX_ACK_TIMER"
196 #define busnum_BDK_PCIERCX_ACK_TIMER(a) (a)
197 #define arguments_BDK_PCIERCX_ACK_TIMER(a) (a),-1,-1,-1
198 
199 /**
200  * Register (PCICONFIGRC) pcierc#_acs_cap_ctl
201  *
202  * PCIe RC ACS Capability and Control Register
203  */
204 union bdk_pciercx_acs_cap_ctl
205 {
206     uint32_t u;
207     struct bdk_pciercx_acs_cap_ctl_s
208     {
209 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
210         uint32_t reserved_23_31        : 9;
211         uint32_t dte                   : 1;  /**< [ 22: 22](R/W) ACS direct translated P2P enable. */
212         uint32_t ece                   : 1;  /**< [ 21: 21](R/W) ACS P2P egress control enable. */
213         uint32_t ufe                   : 1;  /**< [ 20: 20](R/W) ACS upstream forwarding enable. */
214         uint32_t cre                   : 1;  /**< [ 19: 19](R/W) ACS P2P completion redirect enable. */
215         uint32_t rre                   : 1;  /**< [ 18: 18](R/W) ACS P2P request redirect enable. */
216         uint32_t tbe                   : 1;  /**< [ 17: 17](R/W) ACS translation blocking enable. */
217         uint32_t sve                   : 1;  /**< [ 16: 16](R/W) ACS source validation enable. */
218         uint32_t ecvs                  : 8;  /**< [ 15:  8](RO/WRSL) Egress control vector size.
219                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
220         uint32_t reserved_7            : 1;
221         uint32_t dt                    : 1;  /**< [  6:  6](RO/WRSL) ACS direct translated P2P.
222                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
223         uint32_t ec                    : 1;  /**< [  5:  5](RO/WRSL) ACS P2P egress control.
224                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
225         uint32_t uf                    : 1;  /**< [  4:  4](RO/WRSL) ACS upstream forwarding.
226                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
227         uint32_t cr                    : 1;  /**< [  3:  3](RO/WRSL) ACS P2P completion redirect.
228                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
229         uint32_t rr                    : 1;  /**< [  2:  2](RO/WRSL) ACS P2P request redirect.
230                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
231         uint32_t tb                    : 1;  /**< [  1:  1](RO/WRSL) ACS translation blocking.
232                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
233         uint32_t sv                    : 1;  /**< [  0:  0](RO/WRSL) ACS source validation.
234                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
235 #else /* Word 0 - Little Endian */
236         uint32_t sv                    : 1;  /**< [  0:  0](RO/WRSL) ACS source validation.
237                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
238         uint32_t tb                    : 1;  /**< [  1:  1](RO/WRSL) ACS translation blocking.
239                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
240         uint32_t rr                    : 1;  /**< [  2:  2](RO/WRSL) ACS P2P request redirect.
241                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
242         uint32_t cr                    : 1;  /**< [  3:  3](RO/WRSL) ACS P2P completion redirect.
243                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
244         uint32_t uf                    : 1;  /**< [  4:  4](RO/WRSL) ACS upstream forwarding.
245                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
246         uint32_t ec                    : 1;  /**< [  5:  5](RO/WRSL) ACS P2P egress control.
247                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
248         uint32_t dt                    : 1;  /**< [  6:  6](RO/WRSL) ACS direct translated P2P.
249                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
250         uint32_t reserved_7            : 1;
251         uint32_t ecvs                  : 8;  /**< [ 15:  8](RO/WRSL) Egress control vector size.
252                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
253         uint32_t sve                   : 1;  /**< [ 16: 16](R/W) ACS source validation enable. */
254         uint32_t tbe                   : 1;  /**< [ 17: 17](R/W) ACS translation blocking enable. */
255         uint32_t rre                   : 1;  /**< [ 18: 18](R/W) ACS P2P request redirect enable. */
256         uint32_t cre                   : 1;  /**< [ 19: 19](R/W) ACS P2P completion redirect enable. */
257         uint32_t ufe                   : 1;  /**< [ 20: 20](R/W) ACS upstream forwarding enable. */
258         uint32_t ece                   : 1;  /**< [ 21: 21](R/W) ACS P2P egress control enable. */
259         uint32_t dte                   : 1;  /**< [ 22: 22](R/W) ACS direct translated P2P enable. */
260         uint32_t reserved_23_31        : 9;
261 #endif /* Word 0 - End */
262     } s;
263     /* struct bdk_pciercx_acs_cap_ctl_s cn; */
264 };
265 typedef union bdk_pciercx_acs_cap_ctl bdk_pciercx_acs_cap_ctl_t;
266 
267 static inline uint64_t BDK_PCIERCX_ACS_CAP_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ACS_CAP_CTL(unsigned long a)268 static inline uint64_t BDK_PCIERCX_ACS_CAP_CTL(unsigned long a)
269 {
270     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
271         return 0x2f0ll + 0x100000000ll * ((a) & 0x3);
272     __bdk_csr_fatal("PCIERCX_ACS_CAP_CTL", 1, a, 0, 0, 0);
273 }
274 
275 #define typedef_BDK_PCIERCX_ACS_CAP_CTL(a) bdk_pciercx_acs_cap_ctl_t
276 #define bustype_BDK_PCIERCX_ACS_CAP_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
277 #define basename_BDK_PCIERCX_ACS_CAP_CTL(a) "PCIERCX_ACS_CAP_CTL"
278 #define busnum_BDK_PCIERCX_ACS_CAP_CTL(a) (a)
279 #define arguments_BDK_PCIERCX_ACS_CAP_CTL(a) (a),-1,-1,-1
280 
281 /**
282  * Register (PCICONFIGRC) pcierc#_acs_cap_hdr
283  *
284  * PCIe RC PCI Express ACS Extended Capability Header Register
285  */
286 union bdk_pciercx_acs_cap_hdr
287 {
288     uint32_t u;
289     struct bdk_pciercx_acs_cap_hdr_s
290     {
291 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
292         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
293                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
294         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
295                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
296         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
297                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
298 #else /* Word 0 - Little Endian */
299         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
300                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
301         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
302                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
303         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
304                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
305 #endif /* Word 0 - End */
306     } s;
307     /* struct bdk_pciercx_acs_cap_hdr_s cn; */
308 };
309 typedef union bdk_pciercx_acs_cap_hdr bdk_pciercx_acs_cap_hdr_t;
310 
311 static inline uint64_t BDK_PCIERCX_ACS_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ACS_CAP_HDR(unsigned long a)312 static inline uint64_t BDK_PCIERCX_ACS_CAP_HDR(unsigned long a)
313 {
314     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
315         return 0x2ecll + 0x100000000ll * ((a) & 0x3);
316     __bdk_csr_fatal("PCIERCX_ACS_CAP_HDR", 1, a, 0, 0, 0);
317 }
318 
319 #define typedef_BDK_PCIERCX_ACS_CAP_HDR(a) bdk_pciercx_acs_cap_hdr_t
320 #define bustype_BDK_PCIERCX_ACS_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
321 #define basename_BDK_PCIERCX_ACS_CAP_HDR(a) "PCIERCX_ACS_CAP_HDR"
322 #define busnum_BDK_PCIERCX_ACS_CAP_HDR(a) (a)
323 #define arguments_BDK_PCIERCX_ACS_CAP_HDR(a) (a),-1,-1,-1
324 
325 /**
326  * Register (PCICONFIGRC) pcierc#_acs_egr_ctl_vec
327  *
328  * PCIe RC Egress Control Vector Register
329  */
330 union bdk_pciercx_acs_egr_ctl_vec
331 {
332     uint32_t u;
333     struct bdk_pciercx_acs_egr_ctl_vec_s
334     {
335 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
336         uint32_t unused                : 29; /**< [ 31:  3](R/W/H) Reserved. */
337         uint32_t ecv                   : 3;  /**< [  2:  0](R/W/H) Egress control vector. */
338 #else /* Word 0 - Little Endian */
339         uint32_t ecv                   : 3;  /**< [  2:  0](R/W/H) Egress control vector. */
340         uint32_t unused                : 29; /**< [ 31:  3](R/W/H) Reserved. */
341 #endif /* Word 0 - End */
342     } s;
343     /* struct bdk_pciercx_acs_egr_ctl_vec_s cn; */
344 };
345 typedef union bdk_pciercx_acs_egr_ctl_vec bdk_pciercx_acs_egr_ctl_vec_t;
346 
347 static inline uint64_t BDK_PCIERCX_ACS_EGR_CTL_VEC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ACS_EGR_CTL_VEC(unsigned long a)348 static inline uint64_t BDK_PCIERCX_ACS_EGR_CTL_VEC(unsigned long a)
349 {
350     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
351         return 0x2f4ll + 0x100000000ll * ((a) & 0x3);
352     __bdk_csr_fatal("PCIERCX_ACS_EGR_CTL_VEC", 1, a, 0, 0, 0);
353 }
354 
355 #define typedef_BDK_PCIERCX_ACS_EGR_CTL_VEC(a) bdk_pciercx_acs_egr_ctl_vec_t
356 #define bustype_BDK_PCIERCX_ACS_EGR_CTL_VEC(a) BDK_CSR_TYPE_PCICONFIGRC
357 #define basename_BDK_PCIERCX_ACS_EGR_CTL_VEC(a) "PCIERCX_ACS_EGR_CTL_VEC"
358 #define busnum_BDK_PCIERCX_ACS_EGR_CTL_VEC(a) (a)
359 #define arguments_BDK_PCIERCX_ACS_EGR_CTL_VEC(a) (a),-1,-1,-1
360 
361 /**
362  * Register (PCICONFIGRC) pcierc#_adv_err_cap_cntrl
363  *
364  * PCIe RC Advanced Capabilities and Control Register
365  */
366 union bdk_pciercx_adv_err_cap_cntrl
367 {
368     uint32_t u;
369     struct bdk_pciercx_adv_err_cap_cntrl_s
370     {
371 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
372         uint32_t reserved_12_31        : 20;
373         uint32_t tlp_plp               : 1;  /**< [ 11: 11](RO) TLP prefix log present. */
374         uint32_t mult_hdr_en           : 1;  /**< [ 10: 10](RO) Multiple header recording enable (not supported). */
375         uint32_t mult_hdr_cap          : 1;  /**< [  9:  9](RO) Multiple header recording capability (not supported). */
376         uint32_t ce                    : 1;  /**< [  8:  8](R/W) ECRC check enable. */
377         uint32_t cc                    : 1;  /**< [  7:  7](RO) ECRC check capable. */
378         uint32_t ge                    : 1;  /**< [  6:  6](R/W) ECRC generation enable. */
379         uint32_t gc                    : 1;  /**< [  5:  5](RO) ECRC generation capability. */
380         uint32_t fep                   : 5;  /**< [  4:  0](RO) First error pointer. */
381 #else /* Word 0 - Little Endian */
382         uint32_t fep                   : 5;  /**< [  4:  0](RO) First error pointer. */
383         uint32_t gc                    : 1;  /**< [  5:  5](RO) ECRC generation capability. */
384         uint32_t ge                    : 1;  /**< [  6:  6](R/W) ECRC generation enable. */
385         uint32_t cc                    : 1;  /**< [  7:  7](RO) ECRC check capable. */
386         uint32_t ce                    : 1;  /**< [  8:  8](R/W) ECRC check enable. */
387         uint32_t mult_hdr_cap          : 1;  /**< [  9:  9](RO) Multiple header recording capability (not supported). */
388         uint32_t mult_hdr_en           : 1;  /**< [ 10: 10](RO) Multiple header recording enable (not supported). */
389         uint32_t tlp_plp               : 1;  /**< [ 11: 11](RO) TLP prefix log present. */
390         uint32_t reserved_12_31        : 20;
391 #endif /* Word 0 - End */
392     } s;
393     /* struct bdk_pciercx_adv_err_cap_cntrl_s cn; */
394 };
395 typedef union bdk_pciercx_adv_err_cap_cntrl bdk_pciercx_adv_err_cap_cntrl_t;
396 
397 static inline uint64_t BDK_PCIERCX_ADV_ERR_CAP_CNTRL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ADV_ERR_CAP_CNTRL(unsigned long a)398 static inline uint64_t BDK_PCIERCX_ADV_ERR_CAP_CNTRL(unsigned long a)
399 {
400     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
401         return 0x118ll + 0x100000000ll * ((a) & 0x3);
402     __bdk_csr_fatal("PCIERCX_ADV_ERR_CAP_CNTRL", 1, a, 0, 0, 0);
403 }
404 
405 #define typedef_BDK_PCIERCX_ADV_ERR_CAP_CNTRL(a) bdk_pciercx_adv_err_cap_cntrl_t
406 #define bustype_BDK_PCIERCX_ADV_ERR_CAP_CNTRL(a) BDK_CSR_TYPE_PCICONFIGRC
407 #define basename_BDK_PCIERCX_ADV_ERR_CAP_CNTRL(a) "PCIERCX_ADV_ERR_CAP_CNTRL"
408 #define busnum_BDK_PCIERCX_ADV_ERR_CAP_CNTRL(a) (a)
409 #define arguments_BDK_PCIERCX_ADV_ERR_CAP_CNTRL(a) (a),-1,-1,-1
410 
411 /**
412  * Register (PCICONFIGRC) pcierc#_aux_clk_freq
413  *
414  * PCIe RC Auxillary Clock Frequency Control Register
415  */
416 union bdk_pciercx_aux_clk_freq
417 {
418     uint32_t u;
419     struct bdk_pciercx_aux_clk_freq_s
420     {
421 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
422         uint32_t reserved_10_31        : 22;
423         uint32_t upc_supp              : 10; /**< [  9:  0](R/W) The aux_clk frequency in MHz. This value is used to provide a 1 us reference for
424                                                                  counting time during low-power states with aux_clk when the PHY has removed the
425                                                                  pipe_clk. */
426 #else /* Word 0 - Little Endian */
427         uint32_t upc_supp              : 10; /**< [  9:  0](R/W) The aux_clk frequency in MHz. This value is used to provide a 1 us reference for
428                                                                  counting time during low-power states with aux_clk when the PHY has removed the
429                                                                  pipe_clk. */
430         uint32_t reserved_10_31        : 22;
431 #endif /* Word 0 - End */
432     } s;
433     /* struct bdk_pciercx_aux_clk_freq_s cn; */
434 };
435 typedef union bdk_pciercx_aux_clk_freq bdk_pciercx_aux_clk_freq_t;
436 
437 static inline uint64_t BDK_PCIERCX_AUX_CLK_FREQ(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_AUX_CLK_FREQ(unsigned long a)438 static inline uint64_t BDK_PCIERCX_AUX_CLK_FREQ(unsigned long a)
439 {
440     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
441         return 0xb40ll + 0x100000000ll * ((a) & 0x3);
442     __bdk_csr_fatal("PCIERCX_AUX_CLK_FREQ", 1, a, 0, 0, 0);
443 }
444 
445 #define typedef_BDK_PCIERCX_AUX_CLK_FREQ(a) bdk_pciercx_aux_clk_freq_t
446 #define bustype_BDK_PCIERCX_AUX_CLK_FREQ(a) BDK_CSR_TYPE_PCICONFIGRC
447 #define basename_BDK_PCIERCX_AUX_CLK_FREQ(a) "PCIERCX_AUX_CLK_FREQ"
448 #define busnum_BDK_PCIERCX_AUX_CLK_FREQ(a) (a)
449 #define arguments_BDK_PCIERCX_AUX_CLK_FREQ(a) (a),-1,-1,-1
450 
451 /**
452  * Register (PCICONFIGRC) pcierc#_bar0l
453  *
454  * PCIe RC Base Address 0 Low Register
455  */
456 union bdk_pciercx_bar0l
457 {
458     uint32_t u;
459     struct bdk_pciercx_bar0l_s
460     {
461 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
462         uint32_t reserved_0_31         : 32;
463 #else /* Word 0 - Little Endian */
464         uint32_t reserved_0_31         : 32;
465 #endif /* Word 0 - End */
466     } s;
467     /* struct bdk_pciercx_bar0l_s cn; */
468 };
469 typedef union bdk_pciercx_bar0l bdk_pciercx_bar0l_t;
470 
471 static inline uint64_t BDK_PCIERCX_BAR0L(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_BAR0L(unsigned long a)472 static inline uint64_t BDK_PCIERCX_BAR0L(unsigned long a)
473 {
474     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
475         return 0x10ll + 0x100000000ll * ((a) & 0x3);
476     __bdk_csr_fatal("PCIERCX_BAR0L", 1, a, 0, 0, 0);
477 }
478 
479 #define typedef_BDK_PCIERCX_BAR0L(a) bdk_pciercx_bar0l_t
480 #define bustype_BDK_PCIERCX_BAR0L(a) BDK_CSR_TYPE_PCICONFIGRC
481 #define basename_BDK_PCIERCX_BAR0L(a) "PCIERCX_BAR0L"
482 #define busnum_BDK_PCIERCX_BAR0L(a) (a)
483 #define arguments_BDK_PCIERCX_BAR0L(a) (a),-1,-1,-1
484 
485 /**
486  * Register (PCICONFIGRC) pcierc#_bar0u
487  *
488  * PCIe RC Base Address 0 High Register
489  */
490 union bdk_pciercx_bar0u
491 {
492     uint32_t u;
493     struct bdk_pciercx_bar0u_s
494     {
495 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
496         uint32_t reserved_0_31         : 32;
497 #else /* Word 0 - Little Endian */
498         uint32_t reserved_0_31         : 32;
499 #endif /* Word 0 - End */
500     } s;
501     /* struct bdk_pciercx_bar0u_s cn; */
502 };
503 typedef union bdk_pciercx_bar0u bdk_pciercx_bar0u_t;
504 
505 static inline uint64_t BDK_PCIERCX_BAR0U(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_BAR0U(unsigned long a)506 static inline uint64_t BDK_PCIERCX_BAR0U(unsigned long a)
507 {
508     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
509         return 0x14ll + 0x100000000ll * ((a) & 0x3);
510     __bdk_csr_fatal("PCIERCX_BAR0U", 1, a, 0, 0, 0);
511 }
512 
513 #define typedef_BDK_PCIERCX_BAR0U(a) bdk_pciercx_bar0u_t
514 #define bustype_BDK_PCIERCX_BAR0U(a) BDK_CSR_TYPE_PCICONFIGRC
515 #define basename_BDK_PCIERCX_BAR0U(a) "PCIERCX_BAR0U"
516 #define busnum_BDK_PCIERCX_BAR0U(a) (a)
517 #define arguments_BDK_PCIERCX_BAR0U(a) (a),-1,-1,-1
518 
519 /**
520  * Register (PCICONFIGRC) pcierc#_bnum
521  *
522  * PCIe RC Bus Number Register
523  */
524 union bdk_pciercx_bnum
525 {
526     uint32_t u;
527     struct bdk_pciercx_bnum_s
528     {
529 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
530         uint32_t slt                   : 8;  /**< [ 31: 24](RO) Secondary latency timer. Not applicable to PCI Express, hardwired to 0x0. */
531         uint32_t subbnum               : 8;  /**< [ 23: 16](R/W) Subordinate bus number.
532                                                                  If 0x0 no configuration accesses are forwarded to the secondary bus.
533 
534                                                                  Internal:
535                                                                  Note IOB/ECAM snoops on writes to this register. */
536         uint32_t sbnum                 : 8;  /**< [ 15:  8](R/W) Secondary bus number.
537                                                                  If 0x0 no configuration accesses are forwarded to the secondary bus.
538 
539                                                                  Internal:
540                                                                  Note IOB/ECAM snoops on writes to this register. */
541         uint32_t pbnum                 : 8;  /**< [  7:  0](R/W) Primary bus number. */
542 #else /* Word 0 - Little Endian */
543         uint32_t pbnum                 : 8;  /**< [  7:  0](R/W) Primary bus number. */
544         uint32_t sbnum                 : 8;  /**< [ 15:  8](R/W) Secondary bus number.
545                                                                  If 0x0 no configuration accesses are forwarded to the secondary bus.
546 
547                                                                  Internal:
548                                                                  Note IOB/ECAM snoops on writes to this register. */
549         uint32_t subbnum               : 8;  /**< [ 23: 16](R/W) Subordinate bus number.
550                                                                  If 0x0 no configuration accesses are forwarded to the secondary bus.
551 
552                                                                  Internal:
553                                                                  Note IOB/ECAM snoops on writes to this register. */
554         uint32_t slt                   : 8;  /**< [ 31: 24](RO) Secondary latency timer. Not applicable to PCI Express, hardwired to 0x0. */
555 #endif /* Word 0 - End */
556     } s;
557     /* struct bdk_pciercx_bnum_s cn; */
558 };
559 typedef union bdk_pciercx_bnum bdk_pciercx_bnum_t;
560 
561 static inline uint64_t BDK_PCIERCX_BNUM(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_BNUM(unsigned long a)562 static inline uint64_t BDK_PCIERCX_BNUM(unsigned long a)
563 {
564     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
565         return 0x18ll + 0x100000000ll * ((a) & 0x3);
566     __bdk_csr_fatal("PCIERCX_BNUM", 1, a, 0, 0, 0);
567 }
568 
569 #define typedef_BDK_PCIERCX_BNUM(a) bdk_pciercx_bnum_t
570 #define bustype_BDK_PCIERCX_BNUM(a) BDK_CSR_TYPE_PCICONFIGRC
571 #define basename_BDK_PCIERCX_BNUM(a) "PCIERCX_BNUM"
572 #define busnum_BDK_PCIERCX_BNUM(a) (a)
573 #define arguments_BDK_PCIERCX_BNUM(a) (a),-1,-1,-1
574 
575 /**
576  * Register (PCICONFIGRC) pcierc#_c_rcv_credit
577  *
578  * PCIe RC VC0 Completion Receive Queue Control Register
579  */
580 union bdk_pciercx_c_rcv_credit
581 {
582     uint32_t u;
583     struct bdk_pciercx_c_rcv_credit_s
584     {
585 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
586         uint32_t reserved_28_31        : 4;
587         uint32_t data_sc               : 2;  /**< [ 27: 26](RO/WRSL) VC0 scale completion data credits.
588 
589                                                                  Reset values:
590                                                                  _ UPEM:      0x2.
591                                                                  _ BPEM:      0x1. */
592         uint32_t hdr_sc                : 2;  /**< [ 25: 24](RO/WRSL) VC0 scale completion header credits.
593 
594                                                                  Reset values:
595                                                                  _ UPEM:      0x3.
596                                                                  _ BPEM:      0x2. */
597         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 completion TLP queue mode. The operating mode of the completion receive queue for VC0,
598                                                                  used only in the segmented-buffer configuration, writable through
599                                                                  PEM()_CFG_WR.
600                                                                  Only one bit can be set at a time:
601 
602                                                                  _ Bit 23 = Bypass.
603 
604                                                                  _ Bit 22 = Cut-through.
605 
606                                                                  _ Bit 21 = Store-and-forward.
607 
608                                                                  The application must not change this field. */
609         uint32_t reserved_20           : 1;
610         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL/H) VC0 completion header credits. The number of initial completion header credits for VC0,
611                                                                  used for all receive queue buffer configurations. This field is writable through
612                                                                  PEM()_CFG_WR. However, the application must not change this field.
613 
614                                                                  Reset values:
615                                                                  _ UPEM:      0x28.
616                                                                  _ BPEM:      0x50. */
617         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL/H) VC0 completion data credits. The number of initial completion data credits for VC0, used
618                                                                  for all receive queue buffer configurations. This field is writable through
619                                                                  PEM()_CFG_WR. However, the application must not change this field.
620 
621                                                                  Reset values:
622                                                                  _ UPEM:      0x300.
623                                                                  _ BPEM:      0x600. */
624 #else /* Word 0 - Little Endian */
625         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL/H) VC0 completion data credits. The number of initial completion data credits for VC0, used
626                                                                  for all receive queue buffer configurations. This field is writable through
627                                                                  PEM()_CFG_WR. However, the application must not change this field.
628 
629                                                                  Reset values:
630                                                                  _ UPEM:      0x300.
631                                                                  _ BPEM:      0x600. */
632         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL/H) VC0 completion header credits. The number of initial completion header credits for VC0,
633                                                                  used for all receive queue buffer configurations. This field is writable through
634                                                                  PEM()_CFG_WR. However, the application must not change this field.
635 
636                                                                  Reset values:
637                                                                  _ UPEM:      0x28.
638                                                                  _ BPEM:      0x50. */
639         uint32_t reserved_20           : 1;
640         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 completion TLP queue mode. The operating mode of the completion receive queue for VC0,
641                                                                  used only in the segmented-buffer configuration, writable through
642                                                                  PEM()_CFG_WR.
643                                                                  Only one bit can be set at a time:
644 
645                                                                  _ Bit 23 = Bypass.
646 
647                                                                  _ Bit 22 = Cut-through.
648 
649                                                                  _ Bit 21 = Store-and-forward.
650 
651                                                                  The application must not change this field. */
652         uint32_t hdr_sc                : 2;  /**< [ 25: 24](RO/WRSL) VC0 scale completion header credits.
653 
654                                                                  Reset values:
655                                                                  _ UPEM:      0x3.
656                                                                  _ BPEM:      0x2. */
657         uint32_t data_sc               : 2;  /**< [ 27: 26](RO/WRSL) VC0 scale completion data credits.
658 
659                                                                  Reset values:
660                                                                  _ UPEM:      0x2.
661                                                                  _ BPEM:      0x1. */
662         uint32_t reserved_28_31        : 4;
663 #endif /* Word 0 - End */
664     } s;
665     /* struct bdk_pciercx_c_rcv_credit_s cn; */
666 };
667 typedef union bdk_pciercx_c_rcv_credit bdk_pciercx_c_rcv_credit_t;
668 
669 static inline uint64_t BDK_PCIERCX_C_RCV_CREDIT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_C_RCV_CREDIT(unsigned long a)670 static inline uint64_t BDK_PCIERCX_C_RCV_CREDIT(unsigned long a)
671 {
672     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
673         return 0x750ll + 0x100000000ll * ((a) & 0x3);
674     __bdk_csr_fatal("PCIERCX_C_RCV_CREDIT", 1, a, 0, 0, 0);
675 }
676 
677 #define typedef_BDK_PCIERCX_C_RCV_CREDIT(a) bdk_pciercx_c_rcv_credit_t
678 #define bustype_BDK_PCIERCX_C_RCV_CREDIT(a) BDK_CSR_TYPE_PCICONFIGRC
679 #define basename_BDK_PCIERCX_C_RCV_CREDIT(a) "PCIERCX_C_RCV_CREDIT"
680 #define busnum_BDK_PCIERCX_C_RCV_CREDIT(a) (a)
681 #define arguments_BDK_PCIERCX_C_RCV_CREDIT(a) (a),-1,-1,-1
682 
683 /**
684  * Register (PCICONFIGRC) pcierc#_c_xmit_credit
685  *
686  * PCIe RC Transmit Completion FC Credit Status Register
687  */
688 union bdk_pciercx_c_xmit_credit
689 {
690     uint32_t u;
691     struct bdk_pciercx_c_xmit_credit_s
692     {
693 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
694         uint32_t reserved_20_31        : 12;
695         uint32_t tchfcc                : 8;  /**< [ 19: 12](RO/H) Transmit completion header FC credits. The completion header credits advertised by the
696                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
697         uint32_t tcdfcc                : 12; /**< [ 11:  0](RO/H) Transmit completion data FC credits. The completion data credits advertised by the
698                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
699 #else /* Word 0 - Little Endian */
700         uint32_t tcdfcc                : 12; /**< [ 11:  0](RO/H) Transmit completion data FC credits. The completion data credits advertised by the
701                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
702         uint32_t tchfcc                : 8;  /**< [ 19: 12](RO/H) Transmit completion header FC credits. The completion header credits advertised by the
703                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
704         uint32_t reserved_20_31        : 12;
705 #endif /* Word 0 - End */
706     } s;
707     /* struct bdk_pciercx_c_xmit_credit_s cn; */
708 };
709 typedef union bdk_pciercx_c_xmit_credit bdk_pciercx_c_xmit_credit_t;
710 
711 static inline uint64_t BDK_PCIERCX_C_XMIT_CREDIT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_C_XMIT_CREDIT(unsigned long a)712 static inline uint64_t BDK_PCIERCX_C_XMIT_CREDIT(unsigned long a)
713 {
714     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
715         return 0x738ll + 0x100000000ll * ((a) & 0x3);
716     __bdk_csr_fatal("PCIERCX_C_XMIT_CREDIT", 1, a, 0, 0, 0);
717 }
718 
719 #define typedef_BDK_PCIERCX_C_XMIT_CREDIT(a) bdk_pciercx_c_xmit_credit_t
720 #define bustype_BDK_PCIERCX_C_XMIT_CREDIT(a) BDK_CSR_TYPE_PCICONFIGRC
721 #define basename_BDK_PCIERCX_C_XMIT_CREDIT(a) "PCIERCX_C_XMIT_CREDIT"
722 #define busnum_BDK_PCIERCX_C_XMIT_CREDIT(a) (a)
723 #define arguments_BDK_PCIERCX_C_XMIT_CREDIT(a) (a),-1,-1,-1
724 
725 /**
726  * Register (PCICONFIGRC) pcierc#_cap_ptr
727  *
728  * PCIe RC Capability Pointer Register
729  */
730 union bdk_pciercx_cap_ptr
731 {
732     uint32_t u;
733     struct bdk_pciercx_cap_ptr_s
734     {
735 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
736         uint32_t reserved_8_31         : 24;
737         uint32_t cp                    : 8;  /**< [  7:  0](RO/WRSL) First capability pointer. Points to power management capability structure by default,
738                                                                  writable through PEM()_CFG_WR. However, the application must not change this field. */
739 #else /* Word 0 - Little Endian */
740         uint32_t cp                    : 8;  /**< [  7:  0](RO/WRSL) First capability pointer. Points to power management capability structure by default,
741                                                                  writable through PEM()_CFG_WR. However, the application must not change this field. */
742         uint32_t reserved_8_31         : 24;
743 #endif /* Word 0 - End */
744     } s;
745     /* struct bdk_pciercx_cap_ptr_s cn; */
746 };
747 typedef union bdk_pciercx_cap_ptr bdk_pciercx_cap_ptr_t;
748 
749 static inline uint64_t BDK_PCIERCX_CAP_PTR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CAP_PTR(unsigned long a)750 static inline uint64_t BDK_PCIERCX_CAP_PTR(unsigned long a)
751 {
752     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
753         return 0x34ll + 0x100000000ll * ((a) & 0x3);
754     __bdk_csr_fatal("PCIERCX_CAP_PTR", 1, a, 0, 0, 0);
755 }
756 
757 #define typedef_BDK_PCIERCX_CAP_PTR(a) bdk_pciercx_cap_ptr_t
758 #define bustype_BDK_PCIERCX_CAP_PTR(a) BDK_CSR_TYPE_PCICONFIGRC
759 #define basename_BDK_PCIERCX_CAP_PTR(a) "PCIERCX_CAP_PTR"
760 #define busnum_BDK_PCIERCX_CAP_PTR(a) (a)
761 #define arguments_BDK_PCIERCX_CAP_PTR(a) (a),-1,-1,-1
762 
763 /**
764  * Register (PCICONFIGRC) pcierc#_cfg000
765  *
766  * PCIe RC Device ID and Vendor ID Register
767  * This register contains the first 32-bits of PCIe type 1 configuration space.
768  */
769 union bdk_pciercx_cfg000
770 {
771     uint32_t u;
772     struct bdk_pciercx_cfg000_s
773     {
774 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
775         uint32_t devid                 : 16; /**< [ 31: 16](RO/WRSL) Device ID for PCIERC, writable through PEM()_CFG_WR. However, the application must not
776                                                                  change this field.
777                                                                  _ \<15:8\> resets to PCC_PROD_E::CNXXXX.
778                                                                  _ \<7:0\> resets to PCC_DEV_IDL_E::PCIERC. */
779         uint32_t vendid                : 16; /**< [ 15:  0](RO/WRSL) Vendor ID, writable through PEM()_CFG_WR. However, the application must not change this field. */
780 #else /* Word 0 - Little Endian */
781         uint32_t vendid                : 16; /**< [ 15:  0](RO/WRSL) Vendor ID, writable through PEM()_CFG_WR. However, the application must not change this field. */
782         uint32_t devid                 : 16; /**< [ 31: 16](RO/WRSL) Device ID for PCIERC, writable through PEM()_CFG_WR. However, the application must not
783                                                                  change this field.
784                                                                  _ \<15:8\> resets to PCC_PROD_E::CNXXXX.
785                                                                  _ \<7:0\> resets to PCC_DEV_IDL_E::PCIERC. */
786 #endif /* Word 0 - End */
787     } s;
788     /* struct bdk_pciercx_cfg000_s cn81xx; */
789     struct bdk_pciercx_cfg000_cn88xx
790     {
791 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
792         uint32_t devid                 : 16; /**< [ 31: 16](RO/WRSL) Device ID, writable through PEM()_CFG_WR. However, the application must not change this field. */
793         uint32_t vendid                : 16; /**< [ 15:  0](RO/WRSL) Vendor ID, writable through PEM()_CFG_WR. However, the application must not change this field. */
794 #else /* Word 0 - Little Endian */
795         uint32_t vendid                : 16; /**< [ 15:  0](RO/WRSL) Vendor ID, writable through PEM()_CFG_WR. However, the application must not change this field. */
796         uint32_t devid                 : 16; /**< [ 31: 16](RO/WRSL) Device ID, writable through PEM()_CFG_WR. However, the application must not change this field. */
797 #endif /* Word 0 - End */
798     } cn88xx;
799     /* struct bdk_pciercx_cfg000_s cn83xx; */
800 };
801 typedef union bdk_pciercx_cfg000 bdk_pciercx_cfg000_t;
802 
803 static inline uint64_t BDK_PCIERCX_CFG000(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG000(unsigned long a)804 static inline uint64_t BDK_PCIERCX_CFG000(unsigned long a)
805 {
806     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
807         return 0x20000000000ll + 0x100000000ll * ((a) & 0x3);
808     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
809         return 0x20000000000ll + 0x100000000ll * ((a) & 0x3);
810     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
811         return 0x20000000000ll + 0x100000000ll * ((a) & 0x7);
812     __bdk_csr_fatal("PCIERCX_CFG000", 1, a, 0, 0, 0);
813 }
814 
815 #define typedef_BDK_PCIERCX_CFG000(a) bdk_pciercx_cfg000_t
816 #define bustype_BDK_PCIERCX_CFG000(a) BDK_CSR_TYPE_PCICONFIGRC
817 #define basename_BDK_PCIERCX_CFG000(a) "PCIERCX_CFG000"
818 #define busnum_BDK_PCIERCX_CFG000(a) (a)
819 #define arguments_BDK_PCIERCX_CFG000(a) (a),-1,-1,-1
820 
821 /**
822  * Register (PCICONFIGRC) pcierc#_cfg001
823  *
824  * PCIe RC Command/Status Register
825  * This register contains the second 32-bits of PCIe type 1 configuration space.
826  */
827 union bdk_pciercx_cfg001
828 {
829     uint32_t u;
830     struct bdk_pciercx_cfg001_s
831     {
832 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
833         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
834         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
835         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
836         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
837         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
838         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to 0x0. */
839         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error. */
840         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to 0. */
841         uint32_t reserved_22           : 1;
842         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to 0. */
843         uint32_t cl                    : 1;  /**< [ 20: 20](RO) Capabilities list. Indicates presence of an extended capability item. Hardwired to 1. */
844         uint32_t i_stat                : 1;  /**< [ 19: 19](RO) INTx status. */
845         uint32_t reserved_11_18        : 8;
846         uint32_t i_dis                 : 1;  /**< [ 10: 10](R/W) INTx assertion disable. */
847         uint32_t fbbe                  : 1;  /**< [  9:  9](RO) Fast back-to-back transaction enable. Not applicable for PCI Express. Must be hardwired to 0. */
848         uint32_t see                   : 1;  /**< [  8:  8](R/W) SERR# enable. */
849         uint32_t ids_wcc               : 1;  /**< [  7:  7](RO) IDSEL stepping/wait cycle control. Not applicable for PCI Express. Must be hardwired to 0. */
850         uint32_t per                   : 1;  /**< [  6:  6](R/W) Parity error response. */
851         uint32_t vps                   : 1;  /**< [  5:  5](RO) VGA palette snoop. Not applicable for PCI Express. Must be hardwired to 0. */
852         uint32_t mwice                 : 1;  /**< [  4:  4](RO) Memory write and invalidate. Not applicable for PCI Express. Must be hardwired to 0. */
853         uint32_t scse                  : 1;  /**< [  3:  3](RO) Special cycle enable. Not applicable for PCI Express. Must be hardwired to 0. */
854         uint32_t me                    : 1;  /**< [  2:  2](R/W) Bus master enable. */
855         uint32_t msae                  : 1;  /**< [  1:  1](R/W) Memory space access enable. */
856         uint32_t isae                  : 1;  /**< [  0:  0](R/W) I/O space access enable. */
857 #else /* Word 0 - Little Endian */
858         uint32_t isae                  : 1;  /**< [  0:  0](R/W) I/O space access enable. */
859         uint32_t msae                  : 1;  /**< [  1:  1](R/W) Memory space access enable. */
860         uint32_t me                    : 1;  /**< [  2:  2](R/W) Bus master enable. */
861         uint32_t scse                  : 1;  /**< [  3:  3](RO) Special cycle enable. Not applicable for PCI Express. Must be hardwired to 0. */
862         uint32_t mwice                 : 1;  /**< [  4:  4](RO) Memory write and invalidate. Not applicable for PCI Express. Must be hardwired to 0. */
863         uint32_t vps                   : 1;  /**< [  5:  5](RO) VGA palette snoop. Not applicable for PCI Express. Must be hardwired to 0. */
864         uint32_t per                   : 1;  /**< [  6:  6](R/W) Parity error response. */
865         uint32_t ids_wcc               : 1;  /**< [  7:  7](RO) IDSEL stepping/wait cycle control. Not applicable for PCI Express. Must be hardwired to 0. */
866         uint32_t see                   : 1;  /**< [  8:  8](R/W) SERR# enable. */
867         uint32_t fbbe                  : 1;  /**< [  9:  9](RO) Fast back-to-back transaction enable. Not applicable for PCI Express. Must be hardwired to 0. */
868         uint32_t i_dis                 : 1;  /**< [ 10: 10](R/W) INTx assertion disable. */
869         uint32_t reserved_11_18        : 8;
870         uint32_t i_stat                : 1;  /**< [ 19: 19](RO) INTx status. */
871         uint32_t cl                    : 1;  /**< [ 20: 20](RO) Capabilities list. Indicates presence of an extended capability item. Hardwired to 1. */
872         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to 0. */
873         uint32_t reserved_22           : 1;
874         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to 0. */
875         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error. */
876         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to 0x0. */
877         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
878         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
879         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
880         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
881         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
882 #endif /* Word 0 - End */
883     } s;
884     /* struct bdk_pciercx_cfg001_s cn81xx; */
885     /* struct bdk_pciercx_cfg001_s cn88xx; */
886     struct bdk_pciercx_cfg001_cn83xx
887     {
888 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
889         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
890         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
891         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
892         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
893         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
894         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to 0x0. */
895         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error. */
896         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to 0. */
897         uint32_t reserved_22           : 1;
898         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to 0. */
899         uint32_t cl                    : 1;  /**< [ 20: 20](RO) Capabilities list. Indicates presence of an extended capability item. Hardwired to 1. */
900         uint32_t i_stat                : 1;  /**< [ 19: 19](RO) INTx status. */
901         uint32_t reserved_11_18        : 8;
902         uint32_t i_dis                 : 1;  /**< [ 10: 10](R/W) INTx assertion disable. */
903         uint32_t fbbe                  : 1;  /**< [  9:  9](RO) Fast back-to-back transaction enable. Not applicable for PCI Express. Must be hardwired to 0. */
904         uint32_t see                   : 1;  /**< [  8:  8](R/W) SERR# enable. */
905         uint32_t ids_wcc               : 1;  /**< [  7:  7](RO) IDSEL stepping/wait cycle control. Not applicable for PCI Express. Must be hardwired to 0. */
906         uint32_t per                   : 1;  /**< [  6:  6](R/W) Parity error response. */
907         uint32_t vps                   : 1;  /**< [  5:  5](RO) VGA palette snoop. Not applicable for PCI Express. Must be hardwired to 0. */
908         uint32_t mwice                 : 1;  /**< [  4:  4](RO) Memory write and invalidate. Not applicable for PCI Express. Must be hardwired to 0. */
909         uint32_t scse                  : 1;  /**< [  3:  3](RO) Special cycle enable. Not applicable for PCI Express. Must be hardwired to 0. */
910         uint32_t me                    : 1;  /**< [  2:  2](R/W) Bus master enable. */
911         uint32_t msae                  : 1;  /**< [  1:  1](R/W) Memory space access enable. */
912         uint32_t isae                  : 1;  /**< [  0:  0](R/W) I/O space access enable.
913                                                                  There are no I/O BARs supported. */
914 #else /* Word 0 - Little Endian */
915         uint32_t isae                  : 1;  /**< [  0:  0](R/W) I/O space access enable.
916                                                                  There are no I/O BARs supported. */
917         uint32_t msae                  : 1;  /**< [  1:  1](R/W) Memory space access enable. */
918         uint32_t me                    : 1;  /**< [  2:  2](R/W) Bus master enable. */
919         uint32_t scse                  : 1;  /**< [  3:  3](RO) Special cycle enable. Not applicable for PCI Express. Must be hardwired to 0. */
920         uint32_t mwice                 : 1;  /**< [  4:  4](RO) Memory write and invalidate. Not applicable for PCI Express. Must be hardwired to 0. */
921         uint32_t vps                   : 1;  /**< [  5:  5](RO) VGA palette snoop. Not applicable for PCI Express. Must be hardwired to 0. */
922         uint32_t per                   : 1;  /**< [  6:  6](R/W) Parity error response. */
923         uint32_t ids_wcc               : 1;  /**< [  7:  7](RO) IDSEL stepping/wait cycle control. Not applicable for PCI Express. Must be hardwired to 0. */
924         uint32_t see                   : 1;  /**< [  8:  8](R/W) SERR# enable. */
925         uint32_t fbbe                  : 1;  /**< [  9:  9](RO) Fast back-to-back transaction enable. Not applicable for PCI Express. Must be hardwired to 0. */
926         uint32_t i_dis                 : 1;  /**< [ 10: 10](R/W) INTx assertion disable. */
927         uint32_t reserved_11_18        : 8;
928         uint32_t i_stat                : 1;  /**< [ 19: 19](RO) INTx status. */
929         uint32_t cl                    : 1;  /**< [ 20: 20](RO) Capabilities list. Indicates presence of an extended capability item. Hardwired to 1. */
930         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to 0. */
931         uint32_t reserved_22           : 1;
932         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to 0. */
933         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error. */
934         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to 0x0. */
935         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
936         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
937         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
938         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
939         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
940 #endif /* Word 0 - End */
941     } cn83xx;
942 };
943 typedef union bdk_pciercx_cfg001 bdk_pciercx_cfg001_t;
944 
945 static inline uint64_t BDK_PCIERCX_CFG001(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG001(unsigned long a)946 static inline uint64_t BDK_PCIERCX_CFG001(unsigned long a)
947 {
948     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
949         return 0x20000000004ll + 0x100000000ll * ((a) & 0x3);
950     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
951         return 0x20000000004ll + 0x100000000ll * ((a) & 0x3);
952     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
953         return 0x20000000004ll + 0x100000000ll * ((a) & 0x7);
954     __bdk_csr_fatal("PCIERCX_CFG001", 1, a, 0, 0, 0);
955 }
956 
957 #define typedef_BDK_PCIERCX_CFG001(a) bdk_pciercx_cfg001_t
958 #define bustype_BDK_PCIERCX_CFG001(a) BDK_CSR_TYPE_PCICONFIGRC
959 #define basename_BDK_PCIERCX_CFG001(a) "PCIERCX_CFG001"
960 #define busnum_BDK_PCIERCX_CFG001(a) (a)
961 #define arguments_BDK_PCIERCX_CFG001(a) (a),-1,-1,-1
962 
963 /**
964  * Register (PCICONFIGRC) pcierc#_cfg002
965  *
966  * PCIe RC Class Code/Revision ID Register
967  * This register contains the third 32-bits of PCIe type 1 configuration space.
968  */
969 union bdk_pciercx_cfg002
970 {
971     uint32_t u;
972     struct bdk_pciercx_cfg002_s
973     {
974 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
975         uint32_t bcc                   : 8;  /**< [ 31: 24](RO/WRSL) Base class code, writable through PEM()_CFG_WR. However, the application must not
976                                                                  change this field.
977                                                                  0x6 = Bridge. */
978         uint32_t sc                    : 8;  /**< [ 23: 16](RO/WRSL) Subclass code, writable through PEM()_CFG_WR. However, the application must not change
979                                                                  this field.
980                                                                  0x4 = PCI-to-PCI */
981         uint32_t pi                    : 8;  /**< [ 15:  8](RO/WRSL) Programming interface, writable through PEM()_CFG_WR. However, the application must
982                                                                  not change this field.
983                                                                  0x0 = No standard interface. */
984         uint32_t rid                   : 8;  /**< [  7:  0](RO/WRSL) Revision ID, writable through PEM()_CFG_WR. However, the application must not change
985                                                                  this field.
986                                                                  See MIO_FUS_DAT2[CHIP_ID] for more information. */
987 #else /* Word 0 - Little Endian */
988         uint32_t rid                   : 8;  /**< [  7:  0](RO/WRSL) Revision ID, writable through PEM()_CFG_WR. However, the application must not change
989                                                                  this field.
990                                                                  See MIO_FUS_DAT2[CHIP_ID] for more information. */
991         uint32_t pi                    : 8;  /**< [ 15:  8](RO/WRSL) Programming interface, writable through PEM()_CFG_WR. However, the application must
992                                                                  not change this field.
993                                                                  0x0 = No standard interface. */
994         uint32_t sc                    : 8;  /**< [ 23: 16](RO/WRSL) Subclass code, writable through PEM()_CFG_WR. However, the application must not change
995                                                                  this field.
996                                                                  0x4 = PCI-to-PCI */
997         uint32_t bcc                   : 8;  /**< [ 31: 24](RO/WRSL) Base class code, writable through PEM()_CFG_WR. However, the application must not
998                                                                  change this field.
999                                                                  0x6 = Bridge. */
1000 #endif /* Word 0 - End */
1001     } s;
1002     /* struct bdk_pciercx_cfg002_s cn81xx; */
1003     struct bdk_pciercx_cfg002_cn88xx
1004     {
1005 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1006         uint32_t bcc                   : 8;  /**< [ 31: 24](RO/WRSL) Base class code, writable through PEM()_CFG_WR. However, the application must not
1007                                                                  change this field. */
1008         uint32_t sc                    : 8;  /**< [ 23: 16](RO/WRSL) Subclass code, writable through PEM()_CFG_WR. However, the application must not change
1009                                                                  this field. */
1010         uint32_t pi                    : 8;  /**< [ 15:  8](RO/WRSL) Programming interface, writable through PEM()_CFG_WR. However, the application must
1011                                                                  not change this field. */
1012         uint32_t rid                   : 8;  /**< [  7:  0](RO/WRSL) Revision ID, writable through PEM()_CFG_WR. However, the application must not change
1013                                                                  this field.
1014                                                                  See MIO_FUS_DAT2[CHIP_ID] for more information. */
1015 #else /* Word 0 - Little Endian */
1016         uint32_t rid                   : 8;  /**< [  7:  0](RO/WRSL) Revision ID, writable through PEM()_CFG_WR. However, the application must not change
1017                                                                  this field.
1018                                                                  See MIO_FUS_DAT2[CHIP_ID] for more information. */
1019         uint32_t pi                    : 8;  /**< [ 15:  8](RO/WRSL) Programming interface, writable through PEM()_CFG_WR. However, the application must
1020                                                                  not change this field. */
1021         uint32_t sc                    : 8;  /**< [ 23: 16](RO/WRSL) Subclass code, writable through PEM()_CFG_WR. However, the application must not change
1022                                                                  this field. */
1023         uint32_t bcc                   : 8;  /**< [ 31: 24](RO/WRSL) Base class code, writable through PEM()_CFG_WR. However, the application must not
1024                                                                  change this field. */
1025 #endif /* Word 0 - End */
1026     } cn88xx;
1027     struct bdk_pciercx_cfg002_cn83xx
1028     {
1029 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1030         uint32_t bcc                   : 8;  /**< [ 31: 24](RO/WRSL) Base class code, writable through PEM()_CFG_WR. However, the application must not
1031                                                                  change this field.
1032                                                                  0x6 = Bridge. */
1033         uint32_t sc                    : 8;  /**< [ 23: 16](RO/WRSL) Subclass code, writable through PEM()_CFG_WR. However, the application must not change
1034                                                                  this field.
1035                                                                  0x4 = PCI-to-PCI */
1036         uint32_t pi                    : 8;  /**< [ 15:  8](RO/WRSL) Programming interface, writable through PEM()_CFG_WR. However, the application must
1037                                                                  not change this field.
1038                                                                  0x0 = No standard interface. */
1039         uint32_t rid                   : 8;  /**< [  7:  0](RO/WRSL) Revision ID, writable through PEM()_CFG_WR. However, the application must not change
1040                                                                  this field.
1041                                                                  See MIO_FUS_DAT2[CHIP_ID] for more information.
1042                                                                  0x0 = Pass 1.0. */
1043 #else /* Word 0 - Little Endian */
1044         uint32_t rid                   : 8;  /**< [  7:  0](RO/WRSL) Revision ID, writable through PEM()_CFG_WR. However, the application must not change
1045                                                                  this field.
1046                                                                  See MIO_FUS_DAT2[CHIP_ID] for more information.
1047                                                                  0x0 = Pass 1.0. */
1048         uint32_t pi                    : 8;  /**< [ 15:  8](RO/WRSL) Programming interface, writable through PEM()_CFG_WR. However, the application must
1049                                                                  not change this field.
1050                                                                  0x0 = No standard interface. */
1051         uint32_t sc                    : 8;  /**< [ 23: 16](RO/WRSL) Subclass code, writable through PEM()_CFG_WR. However, the application must not change
1052                                                                  this field.
1053                                                                  0x4 = PCI-to-PCI */
1054         uint32_t bcc                   : 8;  /**< [ 31: 24](RO/WRSL) Base class code, writable through PEM()_CFG_WR. However, the application must not
1055                                                                  change this field.
1056                                                                  0x6 = Bridge. */
1057 #endif /* Word 0 - End */
1058     } cn83xx;
1059 };
1060 typedef union bdk_pciercx_cfg002 bdk_pciercx_cfg002_t;
1061 
1062 static inline uint64_t BDK_PCIERCX_CFG002(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG002(unsigned long a)1063 static inline uint64_t BDK_PCIERCX_CFG002(unsigned long a)
1064 {
1065     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1066         return 0x20000000008ll + 0x100000000ll * ((a) & 0x3);
1067     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1068         return 0x20000000008ll + 0x100000000ll * ((a) & 0x3);
1069     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1070         return 0x20000000008ll + 0x100000000ll * ((a) & 0x7);
1071     __bdk_csr_fatal("PCIERCX_CFG002", 1, a, 0, 0, 0);
1072 }
1073 
1074 #define typedef_BDK_PCIERCX_CFG002(a) bdk_pciercx_cfg002_t
1075 #define bustype_BDK_PCIERCX_CFG002(a) BDK_CSR_TYPE_PCICONFIGRC
1076 #define basename_BDK_PCIERCX_CFG002(a) "PCIERCX_CFG002"
1077 #define busnum_BDK_PCIERCX_CFG002(a) (a)
1078 #define arguments_BDK_PCIERCX_CFG002(a) (a),-1,-1,-1
1079 
1080 /**
1081  * Register (PCICONFIGRC) pcierc#_cfg003
1082  *
1083  * PCIe RC BIST, Header Type, Master Latency Timer, Cache Line Size Register
1084  * This register contains the fourth 32-bits of PCIe type 1 configuration space.
1085  */
1086 union bdk_pciercx_cfg003
1087 {
1088     uint32_t u;
1089     struct bdk_pciercx_cfg003_s
1090     {
1091 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1092         uint32_t bist                  : 8;  /**< [ 31: 24](RO) The BIST register functions are not supported. All 8 bits of the BIST register are hardwired to 0. */
1093         uint32_t mfd                   : 1;  /**< [ 23: 23](RO) Multi function device.  However, this is a single function device. Therefore,
1094                                                                  the application must not write a 1 to this bit. */
1095         uint32_t chf                   : 7;  /**< [ 22: 16](RO) Configuration header format. Hardwired to 0x1. */
1096         uint32_t lt                    : 8;  /**< [ 15:  8](RO) Master latency timer. Not applicable for PCI Express, hardwired to 0x0. */
1097         uint32_t cls                   : 8;  /**< [  7:  0](R/W) Cache line size. The cache line size register is R/W for legacy compatibility purposes and
1098                                                                  is not applicable to PCI Express device functionality. */
1099 #else /* Word 0 - Little Endian */
1100         uint32_t cls                   : 8;  /**< [  7:  0](R/W) Cache line size. The cache line size register is R/W for legacy compatibility purposes and
1101                                                                  is not applicable to PCI Express device functionality. */
1102         uint32_t lt                    : 8;  /**< [ 15:  8](RO) Master latency timer. Not applicable for PCI Express, hardwired to 0x0. */
1103         uint32_t chf                   : 7;  /**< [ 22: 16](RO) Configuration header format. Hardwired to 0x1. */
1104         uint32_t mfd                   : 1;  /**< [ 23: 23](RO) Multi function device.  However, this is a single function device. Therefore,
1105                                                                  the application must not write a 1 to this bit. */
1106         uint32_t bist                  : 8;  /**< [ 31: 24](RO) The BIST register functions are not supported. All 8 bits of the BIST register are hardwired to 0. */
1107 #endif /* Word 0 - End */
1108     } s;
1109     /* struct bdk_pciercx_cfg003_s cn81xx; */
1110     struct bdk_pciercx_cfg003_cn88xx
1111     {
1112 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1113         uint32_t bist                  : 8;  /**< [ 31: 24](RO) The BIST register functions are not supported. All 8 bits of the BIST register are hardwired to 0. */
1114         uint32_t mfd                   : 1;  /**< [ 23: 23](RO/WRSL) Multi function device. The multi function device bit is writable through PEM()_CFG_WR.
1115                                                                  However, this is a single function device. Therefore, the application must not write a 1
1116                                                                  to this bit. */
1117         uint32_t chf                   : 7;  /**< [ 22: 16](RO) Configuration header format. Hardwired to 0x1. */
1118         uint32_t lt                    : 8;  /**< [ 15:  8](RO) Master latency timer. Not applicable for PCI Express, hardwired to 0x0. */
1119         uint32_t cls                   : 8;  /**< [  7:  0](R/W) Cache line size. The cache line size register is R/W for legacy compatibility purposes and
1120                                                                  is not applicable to PCI Express device functionality. */
1121 #else /* Word 0 - Little Endian */
1122         uint32_t cls                   : 8;  /**< [  7:  0](R/W) Cache line size. The cache line size register is R/W for legacy compatibility purposes and
1123                                                                  is not applicable to PCI Express device functionality. */
1124         uint32_t lt                    : 8;  /**< [ 15:  8](RO) Master latency timer. Not applicable for PCI Express, hardwired to 0x0. */
1125         uint32_t chf                   : 7;  /**< [ 22: 16](RO) Configuration header format. Hardwired to 0x1. */
1126         uint32_t mfd                   : 1;  /**< [ 23: 23](RO/WRSL) Multi function device. The multi function device bit is writable through PEM()_CFG_WR.
1127                                                                  However, this is a single function device. Therefore, the application must not write a 1
1128                                                                  to this bit. */
1129         uint32_t bist                  : 8;  /**< [ 31: 24](RO) The BIST register functions are not supported. All 8 bits of the BIST register are hardwired to 0. */
1130 #endif /* Word 0 - End */
1131     } cn88xx;
1132     struct bdk_pciercx_cfg003_cn83xx
1133     {
1134 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1135         uint32_t bist                  : 8;  /**< [ 31: 24](RO) The BIST register functions are not supported. All 8 bits of the BIST register are hardwired to 0. */
1136         uint32_t mfd                   : 1;  /**< [ 23: 23](RO) Multi function device. */
1137         uint32_t chf                   : 7;  /**< [ 22: 16](RO) Configuration header format. Hardwired to 0x1. */
1138         uint32_t lt                    : 8;  /**< [ 15:  8](RO) Master latency timer. Not applicable for PCI Express, hardwired to 0x0. */
1139         uint32_t cls                   : 8;  /**< [  7:  0](R/W) Cache line size. The cache line size register is R/W for legacy compatibility purposes and
1140                                                                  is not applicable to PCI Express device functionality. */
1141 #else /* Word 0 - Little Endian */
1142         uint32_t cls                   : 8;  /**< [  7:  0](R/W) Cache line size. The cache line size register is R/W for legacy compatibility purposes and
1143                                                                  is not applicable to PCI Express device functionality. */
1144         uint32_t lt                    : 8;  /**< [ 15:  8](RO) Master latency timer. Not applicable for PCI Express, hardwired to 0x0. */
1145         uint32_t chf                   : 7;  /**< [ 22: 16](RO) Configuration header format. Hardwired to 0x1. */
1146         uint32_t mfd                   : 1;  /**< [ 23: 23](RO) Multi function device. */
1147         uint32_t bist                  : 8;  /**< [ 31: 24](RO) The BIST register functions are not supported. All 8 bits of the BIST register are hardwired to 0. */
1148 #endif /* Word 0 - End */
1149     } cn83xx;
1150 };
1151 typedef union bdk_pciercx_cfg003 bdk_pciercx_cfg003_t;
1152 
1153 static inline uint64_t BDK_PCIERCX_CFG003(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG003(unsigned long a)1154 static inline uint64_t BDK_PCIERCX_CFG003(unsigned long a)
1155 {
1156     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1157         return 0x2000000000cll + 0x100000000ll * ((a) & 0x3);
1158     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1159         return 0x2000000000cll + 0x100000000ll * ((a) & 0x3);
1160     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1161         return 0x2000000000cll + 0x100000000ll * ((a) & 0x7);
1162     __bdk_csr_fatal("PCIERCX_CFG003", 1, a, 0, 0, 0);
1163 }
1164 
1165 #define typedef_BDK_PCIERCX_CFG003(a) bdk_pciercx_cfg003_t
1166 #define bustype_BDK_PCIERCX_CFG003(a) BDK_CSR_TYPE_PCICONFIGRC
1167 #define basename_BDK_PCIERCX_CFG003(a) "PCIERCX_CFG003"
1168 #define busnum_BDK_PCIERCX_CFG003(a) (a)
1169 #define arguments_BDK_PCIERCX_CFG003(a) (a),-1,-1,-1
1170 
1171 /**
1172  * Register (PCICONFIGRC) pcierc#_cfg004
1173  *
1174  * PCIe RC Base Address 0 Low Register
1175  * This register contains the fifth 32-bits of PCIe type 1 configuration space.
1176  */
1177 union bdk_pciercx_cfg004
1178 {
1179     uint32_t u;
1180     struct bdk_pciercx_cfg004_s
1181     {
1182 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1183         uint32_t unused                : 32; /**< [ 31:  0](RO/H) Reserved. */
1184 #else /* Word 0 - Little Endian */
1185         uint32_t unused                : 32; /**< [ 31:  0](RO/H) Reserved. */
1186 #endif /* Word 0 - End */
1187     } s;
1188     /* struct bdk_pciercx_cfg004_s cn81xx; */
1189     /* struct bdk_pciercx_cfg004_s cn88xx; */
1190     struct bdk_pciercx_cfg004_cn83xx
1191     {
1192 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1193         uint32_t reserved_0_31         : 32;
1194 #else /* Word 0 - Little Endian */
1195         uint32_t reserved_0_31         : 32;
1196 #endif /* Word 0 - End */
1197     } cn83xx;
1198 };
1199 typedef union bdk_pciercx_cfg004 bdk_pciercx_cfg004_t;
1200 
1201 static inline uint64_t BDK_PCIERCX_CFG004(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG004(unsigned long a)1202 static inline uint64_t BDK_PCIERCX_CFG004(unsigned long a)
1203 {
1204     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1205         return 0x20000000010ll + 0x100000000ll * ((a) & 0x3);
1206     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1207         return 0x20000000010ll + 0x100000000ll * ((a) & 0x3);
1208     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1209         return 0x20000000010ll + 0x100000000ll * ((a) & 0x7);
1210     __bdk_csr_fatal("PCIERCX_CFG004", 1, a, 0, 0, 0);
1211 }
1212 
1213 #define typedef_BDK_PCIERCX_CFG004(a) bdk_pciercx_cfg004_t
1214 #define bustype_BDK_PCIERCX_CFG004(a) BDK_CSR_TYPE_PCICONFIGRC
1215 #define basename_BDK_PCIERCX_CFG004(a) "PCIERCX_CFG004"
1216 #define busnum_BDK_PCIERCX_CFG004(a) (a)
1217 #define arguments_BDK_PCIERCX_CFG004(a) (a),-1,-1,-1
1218 
1219 /**
1220  * Register (PCICONFIGRC) pcierc#_cfg005
1221  *
1222  * PCIe RC Base Address 0 High Register
1223  * This register contains the sixth 32-bits of PCIe type 1 configuration space.
1224  */
1225 union bdk_pciercx_cfg005
1226 {
1227     uint32_t u;
1228     struct bdk_pciercx_cfg005_s
1229     {
1230 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1231         uint32_t unused                : 32; /**< [ 31:  0](RO/H) Reserved. */
1232 #else /* Word 0 - Little Endian */
1233         uint32_t unused                : 32; /**< [ 31:  0](RO/H) Reserved. */
1234 #endif /* Word 0 - End */
1235     } s;
1236     /* struct bdk_pciercx_cfg005_s cn81xx; */
1237     /* struct bdk_pciercx_cfg005_s cn88xx; */
1238     struct bdk_pciercx_cfg005_cn83xx
1239     {
1240 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1241         uint32_t reserved_0_31         : 32;
1242 #else /* Word 0 - Little Endian */
1243         uint32_t reserved_0_31         : 32;
1244 #endif /* Word 0 - End */
1245     } cn83xx;
1246 };
1247 typedef union bdk_pciercx_cfg005 bdk_pciercx_cfg005_t;
1248 
1249 static inline uint64_t BDK_PCIERCX_CFG005(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG005(unsigned long a)1250 static inline uint64_t BDK_PCIERCX_CFG005(unsigned long a)
1251 {
1252     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1253         return 0x20000000014ll + 0x100000000ll * ((a) & 0x3);
1254     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1255         return 0x20000000014ll + 0x100000000ll * ((a) & 0x3);
1256     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1257         return 0x20000000014ll + 0x100000000ll * ((a) & 0x7);
1258     __bdk_csr_fatal("PCIERCX_CFG005", 1, a, 0, 0, 0);
1259 }
1260 
1261 #define typedef_BDK_PCIERCX_CFG005(a) bdk_pciercx_cfg005_t
1262 #define bustype_BDK_PCIERCX_CFG005(a) BDK_CSR_TYPE_PCICONFIGRC
1263 #define basename_BDK_PCIERCX_CFG005(a) "PCIERCX_CFG005"
1264 #define busnum_BDK_PCIERCX_CFG005(a) (a)
1265 #define arguments_BDK_PCIERCX_CFG005(a) (a),-1,-1,-1
1266 
1267 /**
1268  * Register (PCICONFIGRC) pcierc#_cfg006
1269  *
1270  * PCIe RC Bus Number Register
1271  * This register contains the seventh 32-bits of PCIe type 1 configuration space.
1272  */
1273 union bdk_pciercx_cfg006
1274 {
1275     uint32_t u;
1276     struct bdk_pciercx_cfg006_s
1277     {
1278 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1279         uint32_t slt                   : 8;  /**< [ 31: 24](RO) Secondary latency timer. Not applicable to PCI Express, hardwired to 0x0. */
1280         uint32_t subbnum               : 8;  /**< [ 23: 16](R/W) Subordinate bus number.
1281                                                                  If 0x0 no configuration accesses are forwarded to the secondary bus.
1282 
1283                                                                  Internal:
1284                                                                  Note IOB/ECAM snoops on writes to this register. */
1285         uint32_t sbnum                 : 8;  /**< [ 15:  8](R/W) Secondary bus number.
1286                                                                  If 0x0 no configuration accesses are forwarded to the secondary bus.
1287 
1288                                                                  Internal:
1289                                                                  Note IOB/ECAM snoops on writes to this register. */
1290         uint32_t pbnum                 : 8;  /**< [  7:  0](R/W) Primary bus number. */
1291 #else /* Word 0 - Little Endian */
1292         uint32_t pbnum                 : 8;  /**< [  7:  0](R/W) Primary bus number. */
1293         uint32_t sbnum                 : 8;  /**< [ 15:  8](R/W) Secondary bus number.
1294                                                                  If 0x0 no configuration accesses are forwarded to the secondary bus.
1295 
1296                                                                  Internal:
1297                                                                  Note IOB/ECAM snoops on writes to this register. */
1298         uint32_t subbnum               : 8;  /**< [ 23: 16](R/W) Subordinate bus number.
1299                                                                  If 0x0 no configuration accesses are forwarded to the secondary bus.
1300 
1301                                                                  Internal:
1302                                                                  Note IOB/ECAM snoops on writes to this register. */
1303         uint32_t slt                   : 8;  /**< [ 31: 24](RO) Secondary latency timer. Not applicable to PCI Express, hardwired to 0x0. */
1304 #endif /* Word 0 - End */
1305     } s;
1306     /* struct bdk_pciercx_cfg006_s cn; */
1307 };
1308 typedef union bdk_pciercx_cfg006 bdk_pciercx_cfg006_t;
1309 
1310 static inline uint64_t BDK_PCIERCX_CFG006(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG006(unsigned long a)1311 static inline uint64_t BDK_PCIERCX_CFG006(unsigned long a)
1312 {
1313     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1314         return 0x20000000018ll + 0x100000000ll * ((a) & 0x3);
1315     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1316         return 0x20000000018ll + 0x100000000ll * ((a) & 0x3);
1317     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1318         return 0x20000000018ll + 0x100000000ll * ((a) & 0x7);
1319     __bdk_csr_fatal("PCIERCX_CFG006", 1, a, 0, 0, 0);
1320 }
1321 
1322 #define typedef_BDK_PCIERCX_CFG006(a) bdk_pciercx_cfg006_t
1323 #define bustype_BDK_PCIERCX_CFG006(a) BDK_CSR_TYPE_PCICONFIGRC
1324 #define basename_BDK_PCIERCX_CFG006(a) "PCIERCX_CFG006"
1325 #define busnum_BDK_PCIERCX_CFG006(a) (a)
1326 #define arguments_BDK_PCIERCX_CFG006(a) (a),-1,-1,-1
1327 
1328 /**
1329  * Register (PCICONFIGRC) pcierc#_cfg007
1330  *
1331  * PCIe RC I/O Base and I/O Limit/Secondary Status Register
1332  * This register contains the eighth 32-bits of PCIe type 1 configuration space.
1333  */
1334 union bdk_pciercx_cfg007
1335 {
1336     uint32_t u;
1337     struct bdk_pciercx_cfg007_s
1338     {
1339 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1340         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
1341         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
1342         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
1343         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
1344         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
1345         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to 0. */
1346         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error */
1347         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to 0. */
1348         uint32_t reserved_22           : 1;
1349         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to 0. */
1350         uint32_t reserved_16_20        : 5;
1351         uint32_t lio_limi              : 4;  /**< [ 15: 12](R/W) I/O space limit. */
1352         uint32_t reserved_9_11         : 3;
1353         uint32_t io32b                 : 1;  /**< [  8:  8](RO/H) 32-bit I/O space. */
1354         uint32_t lio_base              : 4;  /**< [  7:  4](R/W) I/O space base. */
1355         uint32_t reserved_1_3          : 3;
1356         uint32_t io32a                 : 1;  /**< [  0:  0](RO/WRSL) 32-bit I/O space.
1357                                                                  0 = 16-bit I/O addressing.
1358                                                                  1 = 32-bit I/O addressing.
1359                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
1360                                                                  through PEM()_CFG_WR, the same value is written to bit 8 of this register. */
1361 #else /* Word 0 - Little Endian */
1362         uint32_t io32a                 : 1;  /**< [  0:  0](RO/WRSL) 32-bit I/O space.
1363                                                                  0 = 16-bit I/O addressing.
1364                                                                  1 = 32-bit I/O addressing.
1365                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
1366                                                                  through PEM()_CFG_WR, the same value is written to bit 8 of this register. */
1367         uint32_t reserved_1_3          : 3;
1368         uint32_t lio_base              : 4;  /**< [  7:  4](R/W) I/O space base. */
1369         uint32_t io32b                 : 1;  /**< [  8:  8](RO/H) 32-bit I/O space. */
1370         uint32_t reserved_9_11         : 3;
1371         uint32_t lio_limi              : 4;  /**< [ 15: 12](R/W) I/O space limit. */
1372         uint32_t reserved_16_20        : 5;
1373         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to 0. */
1374         uint32_t reserved_22           : 1;
1375         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to 0. */
1376         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error */
1377         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to 0. */
1378         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
1379         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
1380         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
1381         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
1382         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
1383 #endif /* Word 0 - End */
1384     } s;
1385     /* struct bdk_pciercx_cfg007_s cn; */
1386 };
1387 typedef union bdk_pciercx_cfg007 bdk_pciercx_cfg007_t;
1388 
1389 static inline uint64_t BDK_PCIERCX_CFG007(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG007(unsigned long a)1390 static inline uint64_t BDK_PCIERCX_CFG007(unsigned long a)
1391 {
1392     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1393         return 0x2000000001cll + 0x100000000ll * ((a) & 0x3);
1394     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1395         return 0x2000000001cll + 0x100000000ll * ((a) & 0x3);
1396     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1397         return 0x2000000001cll + 0x100000000ll * ((a) & 0x7);
1398     __bdk_csr_fatal("PCIERCX_CFG007", 1, a, 0, 0, 0);
1399 }
1400 
1401 #define typedef_BDK_PCIERCX_CFG007(a) bdk_pciercx_cfg007_t
1402 #define bustype_BDK_PCIERCX_CFG007(a) BDK_CSR_TYPE_PCICONFIGRC
1403 #define basename_BDK_PCIERCX_CFG007(a) "PCIERCX_CFG007"
1404 #define busnum_BDK_PCIERCX_CFG007(a) (a)
1405 #define arguments_BDK_PCIERCX_CFG007(a) (a),-1,-1,-1
1406 
1407 /**
1408  * Register (PCICONFIGRC) pcierc#_cfg008
1409  *
1410  * PCIe RC Memory Base and Memory Limit Register
1411  * This register contains the ninth 32-bits of PCIe type 1 configuration space.
1412  */
1413 union bdk_pciercx_cfg008
1414 {
1415     uint32_t u;
1416     struct bdk_pciercx_cfg008_s
1417     {
1418 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1419         uint32_t ml_addr               : 12; /**< [ 31: 20](R/W) Memory limit address. */
1420         uint32_t reserved_16_19        : 4;
1421         uint32_t mb_addr               : 12; /**< [ 15:  4](R/W) Memory base address. */
1422         uint32_t reserved_0_3          : 4;
1423 #else /* Word 0 - Little Endian */
1424         uint32_t reserved_0_3          : 4;
1425         uint32_t mb_addr               : 12; /**< [ 15:  4](R/W) Memory base address. */
1426         uint32_t reserved_16_19        : 4;
1427         uint32_t ml_addr               : 12; /**< [ 31: 20](R/W) Memory limit address. */
1428 #endif /* Word 0 - End */
1429     } s;
1430     /* struct bdk_pciercx_cfg008_s cn; */
1431 };
1432 typedef union bdk_pciercx_cfg008 bdk_pciercx_cfg008_t;
1433 
1434 static inline uint64_t BDK_PCIERCX_CFG008(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG008(unsigned long a)1435 static inline uint64_t BDK_PCIERCX_CFG008(unsigned long a)
1436 {
1437     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1438         return 0x20000000020ll + 0x100000000ll * ((a) & 0x3);
1439     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1440         return 0x20000000020ll + 0x100000000ll * ((a) & 0x3);
1441     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1442         return 0x20000000020ll + 0x100000000ll * ((a) & 0x7);
1443     __bdk_csr_fatal("PCIERCX_CFG008", 1, a, 0, 0, 0);
1444 }
1445 
1446 #define typedef_BDK_PCIERCX_CFG008(a) bdk_pciercx_cfg008_t
1447 #define bustype_BDK_PCIERCX_CFG008(a) BDK_CSR_TYPE_PCICONFIGRC
1448 #define basename_BDK_PCIERCX_CFG008(a) "PCIERCX_CFG008"
1449 #define busnum_BDK_PCIERCX_CFG008(a) (a)
1450 #define arguments_BDK_PCIERCX_CFG008(a) (a),-1,-1,-1
1451 
1452 /**
1453  * Register (PCICONFIGRC) pcierc#_cfg009
1454  *
1455  * PCIe RC Prefetchable Memory and Limit Register
1456  * This register contains the tenth 32-bits of PCIe type 1 configuration space.
1457  */
1458 union bdk_pciercx_cfg009
1459 {
1460     uint32_t u;
1461     struct bdk_pciercx_cfg009_s
1462     {
1463 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1464         uint32_t lmem_limit            : 12; /**< [ 31: 20](R/W) Upper 12 bits of 32-bit prefetchable memory end address. */
1465         uint32_t reserved_17_19        : 3;
1466         uint32_t mem64b                : 1;  /**< [ 16: 16](RO/H) 64-bit memory addressing:
1467                                                                  0 = 32-bit memory addressing.
1468                                                                  1 = 64-bit memory addressing. */
1469         uint32_t lmem_base             : 12; /**< [ 15:  4](R/W) Upper 12 bits of 32-bit prefetchable memory start address. */
1470         uint32_t reserved_1_3          : 3;
1471         uint32_t mem64a                : 1;  /**< [  0:  0](RO/WRSL) 64-bit memory addressing:
1472                                                                  0 = 32-bit memory addressing.
1473                                                                  1 = 64-bit memory addressing.
1474 
1475                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
1476                                                                  through PEM()_CFG_WR, the same value is written to bit 16 of this register. */
1477 #else /* Word 0 - Little Endian */
1478         uint32_t mem64a                : 1;  /**< [  0:  0](RO/WRSL) 64-bit memory addressing:
1479                                                                  0 = 32-bit memory addressing.
1480                                                                  1 = 64-bit memory addressing.
1481 
1482                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
1483                                                                  through PEM()_CFG_WR, the same value is written to bit 16 of this register. */
1484         uint32_t reserved_1_3          : 3;
1485         uint32_t lmem_base             : 12; /**< [ 15:  4](R/W) Upper 12 bits of 32-bit prefetchable memory start address. */
1486         uint32_t mem64b                : 1;  /**< [ 16: 16](RO/H) 64-bit memory addressing:
1487                                                                  0 = 32-bit memory addressing.
1488                                                                  1 = 64-bit memory addressing. */
1489         uint32_t reserved_17_19        : 3;
1490         uint32_t lmem_limit            : 12; /**< [ 31: 20](R/W) Upper 12 bits of 32-bit prefetchable memory end address. */
1491 #endif /* Word 0 - End */
1492     } s;
1493     /* struct bdk_pciercx_cfg009_s cn81xx; */
1494     /* struct bdk_pciercx_cfg009_s cn88xx; */
1495     struct bdk_pciercx_cfg009_cn83xx
1496     {
1497 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1498         uint32_t lmem_limit            : 12; /**< [ 31: 20](R/W) Upper 12 bits of 32-bit prefetchable memory end address. */
1499         uint32_t reserved_17_19        : 3;
1500         uint32_t mem64b                : 1;  /**< [ 16: 16](RO) 64-bit memory addressing:
1501                                                                  0 = 32-bit memory addressing.
1502                                                                  1 = 64-bit memory addressing. */
1503         uint32_t lmem_base             : 12; /**< [ 15:  4](R/W) Upper 12 bits of 32-bit prefetchable memory start address. */
1504         uint32_t reserved_1_3          : 3;
1505         uint32_t mem64a                : 1;  /**< [  0:  0](RO/WRSL) 64-bit memory addressing:
1506                                                                  0 = 32-bit memory addressing.
1507                                                                  1 = 64-bit memory addressing.
1508 
1509                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
1510                                                                  through PEM()_CFG_WR, the same value is written to bit 16 of this register. */
1511 #else /* Word 0 - Little Endian */
1512         uint32_t mem64a                : 1;  /**< [  0:  0](RO/WRSL) 64-bit memory addressing:
1513                                                                  0 = 32-bit memory addressing.
1514                                                                  1 = 64-bit memory addressing.
1515 
1516                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
1517                                                                  through PEM()_CFG_WR, the same value is written to bit 16 of this register. */
1518         uint32_t reserved_1_3          : 3;
1519         uint32_t lmem_base             : 12; /**< [ 15:  4](R/W) Upper 12 bits of 32-bit prefetchable memory start address. */
1520         uint32_t mem64b                : 1;  /**< [ 16: 16](RO) 64-bit memory addressing:
1521                                                                  0 = 32-bit memory addressing.
1522                                                                  1 = 64-bit memory addressing. */
1523         uint32_t reserved_17_19        : 3;
1524         uint32_t lmem_limit            : 12; /**< [ 31: 20](R/W) Upper 12 bits of 32-bit prefetchable memory end address. */
1525 #endif /* Word 0 - End */
1526     } cn83xx;
1527 };
1528 typedef union bdk_pciercx_cfg009 bdk_pciercx_cfg009_t;
1529 
1530 static inline uint64_t BDK_PCIERCX_CFG009(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG009(unsigned long a)1531 static inline uint64_t BDK_PCIERCX_CFG009(unsigned long a)
1532 {
1533     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1534         return 0x20000000024ll + 0x100000000ll * ((a) & 0x3);
1535     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1536         return 0x20000000024ll + 0x100000000ll * ((a) & 0x3);
1537     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1538         return 0x20000000024ll + 0x100000000ll * ((a) & 0x7);
1539     __bdk_csr_fatal("PCIERCX_CFG009", 1, a, 0, 0, 0);
1540 }
1541 
1542 #define typedef_BDK_PCIERCX_CFG009(a) bdk_pciercx_cfg009_t
1543 #define bustype_BDK_PCIERCX_CFG009(a) BDK_CSR_TYPE_PCICONFIGRC
1544 #define basename_BDK_PCIERCX_CFG009(a) "PCIERCX_CFG009"
1545 #define busnum_BDK_PCIERCX_CFG009(a) (a)
1546 #define arguments_BDK_PCIERCX_CFG009(a) (a),-1,-1,-1
1547 
1548 /**
1549  * Register (PCICONFIGRC) pcierc#_cfg010
1550  *
1551  * PCIe RC Prefetchable Base Upper 32 Bits Register
1552  * This register contains the eleventh 32-bits of PCIe type 1 configuration space.
1553  */
1554 union bdk_pciercx_cfg010
1555 {
1556     uint32_t u;
1557     struct bdk_pciercx_cfg010_s
1558     {
1559 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1560         uint32_t umem_base             : 32; /**< [ 31:  0](R/W) Upper 32 bits of base address of prefetchable memory space. Used only when 64-bit
1561                                                                  prefetchable memory addressing is enabled. */
1562 #else /* Word 0 - Little Endian */
1563         uint32_t umem_base             : 32; /**< [ 31:  0](R/W) Upper 32 bits of base address of prefetchable memory space. Used only when 64-bit
1564                                                                  prefetchable memory addressing is enabled. */
1565 #endif /* Word 0 - End */
1566     } s;
1567     /* struct bdk_pciercx_cfg010_s cn; */
1568 };
1569 typedef union bdk_pciercx_cfg010 bdk_pciercx_cfg010_t;
1570 
1571 static inline uint64_t BDK_PCIERCX_CFG010(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG010(unsigned long a)1572 static inline uint64_t BDK_PCIERCX_CFG010(unsigned long a)
1573 {
1574     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1575         return 0x20000000028ll + 0x100000000ll * ((a) & 0x3);
1576     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1577         return 0x20000000028ll + 0x100000000ll * ((a) & 0x3);
1578     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1579         return 0x20000000028ll + 0x100000000ll * ((a) & 0x7);
1580     __bdk_csr_fatal("PCIERCX_CFG010", 1, a, 0, 0, 0);
1581 }
1582 
1583 #define typedef_BDK_PCIERCX_CFG010(a) bdk_pciercx_cfg010_t
1584 #define bustype_BDK_PCIERCX_CFG010(a) BDK_CSR_TYPE_PCICONFIGRC
1585 #define basename_BDK_PCIERCX_CFG010(a) "PCIERCX_CFG010"
1586 #define busnum_BDK_PCIERCX_CFG010(a) (a)
1587 #define arguments_BDK_PCIERCX_CFG010(a) (a),-1,-1,-1
1588 
1589 /**
1590  * Register (PCICONFIGRC) pcierc#_cfg011
1591  *
1592  * PCIe RC Prefetchable Limit Upper 32 Bits Register
1593  * This register contains the twelfth 32-bits of PCIe type 1 configuration space.
1594  */
1595 union bdk_pciercx_cfg011
1596 {
1597     uint32_t u;
1598     struct bdk_pciercx_cfg011_s
1599     {
1600 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1601         uint32_t umem_limit            : 32; /**< [ 31:  0](R/W) Upper 32 bits of limit address of prefetchable memory space. Used only when 64-bit
1602                                                                  prefetchable memory addressing is enabled. */
1603 #else /* Word 0 - Little Endian */
1604         uint32_t umem_limit            : 32; /**< [ 31:  0](R/W) Upper 32 bits of limit address of prefetchable memory space. Used only when 64-bit
1605                                                                  prefetchable memory addressing is enabled. */
1606 #endif /* Word 0 - End */
1607     } s;
1608     /* struct bdk_pciercx_cfg011_s cn; */
1609 };
1610 typedef union bdk_pciercx_cfg011 bdk_pciercx_cfg011_t;
1611 
1612 static inline uint64_t BDK_PCIERCX_CFG011(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG011(unsigned long a)1613 static inline uint64_t BDK_PCIERCX_CFG011(unsigned long a)
1614 {
1615     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1616         return 0x2000000002cll + 0x100000000ll * ((a) & 0x3);
1617     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1618         return 0x2000000002cll + 0x100000000ll * ((a) & 0x3);
1619     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1620         return 0x2000000002cll + 0x100000000ll * ((a) & 0x7);
1621     __bdk_csr_fatal("PCIERCX_CFG011", 1, a, 0, 0, 0);
1622 }
1623 
1624 #define typedef_BDK_PCIERCX_CFG011(a) bdk_pciercx_cfg011_t
1625 #define bustype_BDK_PCIERCX_CFG011(a) BDK_CSR_TYPE_PCICONFIGRC
1626 #define basename_BDK_PCIERCX_CFG011(a) "PCIERCX_CFG011"
1627 #define busnum_BDK_PCIERCX_CFG011(a) (a)
1628 #define arguments_BDK_PCIERCX_CFG011(a) (a),-1,-1,-1
1629 
1630 /**
1631  * Register (PCICONFIGRC) pcierc#_cfg012
1632  *
1633  * PCIe RC I/O Base and Limit Upper 16 Bits Register
1634  * This register contains the thirteenth 32-bits of PCIe type 1 configuration space.
1635  */
1636 union bdk_pciercx_cfg012
1637 {
1638     uint32_t u;
1639     struct bdk_pciercx_cfg012_s
1640     {
1641 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1642         uint32_t uio_limit             : 16; /**< [ 31: 16](R/W) Upper 16 bits of I/O limit (if 32-bit I/O decoding is supported for devices on the secondary side). */
1643         uint32_t uio_base              : 16; /**< [ 15:  0](R/W) Upper 16 bits of I/O base (if 32-bit I/O decoding is supported for devices on the secondary side). */
1644 #else /* Word 0 - Little Endian */
1645         uint32_t uio_base              : 16; /**< [ 15:  0](R/W) Upper 16 bits of I/O base (if 32-bit I/O decoding is supported for devices on the secondary side). */
1646         uint32_t uio_limit             : 16; /**< [ 31: 16](R/W) Upper 16 bits of I/O limit (if 32-bit I/O decoding is supported for devices on the secondary side). */
1647 #endif /* Word 0 - End */
1648     } s;
1649     /* struct bdk_pciercx_cfg012_s cn; */
1650 };
1651 typedef union bdk_pciercx_cfg012 bdk_pciercx_cfg012_t;
1652 
1653 static inline uint64_t BDK_PCIERCX_CFG012(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG012(unsigned long a)1654 static inline uint64_t BDK_PCIERCX_CFG012(unsigned long a)
1655 {
1656     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1657         return 0x20000000030ll + 0x100000000ll * ((a) & 0x3);
1658     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1659         return 0x20000000030ll + 0x100000000ll * ((a) & 0x3);
1660     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1661         return 0x20000000030ll + 0x100000000ll * ((a) & 0x7);
1662     __bdk_csr_fatal("PCIERCX_CFG012", 1, a, 0, 0, 0);
1663 }
1664 
1665 #define typedef_BDK_PCIERCX_CFG012(a) bdk_pciercx_cfg012_t
1666 #define bustype_BDK_PCIERCX_CFG012(a) BDK_CSR_TYPE_PCICONFIGRC
1667 #define basename_BDK_PCIERCX_CFG012(a) "PCIERCX_CFG012"
1668 #define busnum_BDK_PCIERCX_CFG012(a) (a)
1669 #define arguments_BDK_PCIERCX_CFG012(a) (a),-1,-1,-1
1670 
1671 /**
1672  * Register (PCICONFIGRC) pcierc#_cfg013
1673  *
1674  * PCIe RC Capability Pointer Register
1675  * This register contains the fourteenth 32-bits of PCIe type 1 configuration space.
1676  */
1677 union bdk_pciercx_cfg013
1678 {
1679     uint32_t u;
1680     struct bdk_pciercx_cfg013_s
1681     {
1682 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1683         uint32_t reserved_8_31         : 24;
1684         uint32_t cp                    : 8;  /**< [  7:  0](RO/WRSL) First capability pointer. Points to power management capability structure by default,
1685                                                                  writable through PEM()_CFG_WR. However, the application must not change this field. */
1686 #else /* Word 0 - Little Endian */
1687         uint32_t cp                    : 8;  /**< [  7:  0](RO/WRSL) First capability pointer. Points to power management capability structure by default,
1688                                                                  writable through PEM()_CFG_WR. However, the application must not change this field. */
1689         uint32_t reserved_8_31         : 24;
1690 #endif /* Word 0 - End */
1691     } s;
1692     /* struct bdk_pciercx_cfg013_s cn; */
1693 };
1694 typedef union bdk_pciercx_cfg013 bdk_pciercx_cfg013_t;
1695 
1696 static inline uint64_t BDK_PCIERCX_CFG013(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG013(unsigned long a)1697 static inline uint64_t BDK_PCIERCX_CFG013(unsigned long a)
1698 {
1699     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1700         return 0x20000000034ll + 0x100000000ll * ((a) & 0x3);
1701     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1702         return 0x20000000034ll + 0x100000000ll * ((a) & 0x3);
1703     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1704         return 0x20000000034ll + 0x100000000ll * ((a) & 0x7);
1705     __bdk_csr_fatal("PCIERCX_CFG013", 1, a, 0, 0, 0);
1706 }
1707 
1708 #define typedef_BDK_PCIERCX_CFG013(a) bdk_pciercx_cfg013_t
1709 #define bustype_BDK_PCIERCX_CFG013(a) BDK_CSR_TYPE_PCICONFIGRC
1710 #define basename_BDK_PCIERCX_CFG013(a) "PCIERCX_CFG013"
1711 #define busnum_BDK_PCIERCX_CFG013(a) (a)
1712 #define arguments_BDK_PCIERCX_CFG013(a) (a),-1,-1,-1
1713 
1714 /**
1715  * Register (PCICONFIGRC) pcierc#_cfg014
1716  *
1717  * PCIe RC Expansion ROM Base Address Register
1718  * This register contains the fifteenth 32-bits of PCIe type 1 configuration space.
1719  */
1720 union bdk_pciercx_cfg014
1721 {
1722     uint32_t u;
1723     struct bdk_pciercx_cfg014_s
1724     {
1725 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1726         uint32_t unused                : 32; /**< [ 31:  0](RO/WRSL/H) Writable, but unused. */
1727 #else /* Word 0 - Little Endian */
1728         uint32_t unused                : 32; /**< [ 31:  0](RO/WRSL/H) Writable, but unused. */
1729 #endif /* Word 0 - End */
1730     } s;
1731     /* struct bdk_pciercx_cfg014_s cn81xx; */
1732     /* struct bdk_pciercx_cfg014_s cn88xx; */
1733     struct bdk_pciercx_cfg014_cn83xx
1734     {
1735 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1736         uint32_t unused                : 32; /**< [ 31:  0](RO/WRSL) Reserved. */
1737 #else /* Word 0 - Little Endian */
1738         uint32_t unused                : 32; /**< [ 31:  0](RO/WRSL) Reserved. */
1739 #endif /* Word 0 - End */
1740     } cn83xx;
1741 };
1742 typedef union bdk_pciercx_cfg014 bdk_pciercx_cfg014_t;
1743 
1744 static inline uint64_t BDK_PCIERCX_CFG014(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG014(unsigned long a)1745 static inline uint64_t BDK_PCIERCX_CFG014(unsigned long a)
1746 {
1747     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1748         return 0x20000000038ll + 0x100000000ll * ((a) & 0x3);
1749     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1750         return 0x20000000038ll + 0x100000000ll * ((a) & 0x3);
1751     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1752         return 0x20000000038ll + 0x100000000ll * ((a) & 0x7);
1753     __bdk_csr_fatal("PCIERCX_CFG014", 1, a, 0, 0, 0);
1754 }
1755 
1756 #define typedef_BDK_PCIERCX_CFG014(a) bdk_pciercx_cfg014_t
1757 #define bustype_BDK_PCIERCX_CFG014(a) BDK_CSR_TYPE_PCICONFIGRC
1758 #define basename_BDK_PCIERCX_CFG014(a) "PCIERCX_CFG014"
1759 #define busnum_BDK_PCIERCX_CFG014(a) (a)
1760 #define arguments_BDK_PCIERCX_CFG014(a) (a),-1,-1,-1
1761 
1762 /**
1763  * Register (PCICONFIGRC) pcierc#_cfg015
1764  *
1765  * PCIe RC Interrupt Line Register/Interrupt Pin/Bridge Control Register
1766  * This register contains the sixteenth 32-bits of PCIe type 1 configuration space.
1767  */
1768 union bdk_pciercx_cfg015
1769 {
1770     uint32_t u;
1771     struct bdk_pciercx_cfg015_s
1772     {
1773 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1774         uint32_t reserved_28_31        : 4;
1775         uint32_t dtsees                : 1;  /**< [ 27: 27](RO) Discard timer SERR enable status. Not applicable to PCI Express, hardwired to 0. */
1776         uint32_t dts                   : 1;  /**< [ 26: 26](RO) Discard timer status. Not applicable to PCI Express, hardwired to 0. */
1777         uint32_t sdt                   : 1;  /**< [ 25: 25](RO) Secondary discard timer. Not applicable to PCI Express, hardwired to 0. */
1778         uint32_t pdt                   : 1;  /**< [ 24: 24](RO) Primary discard timer. Not applicable to PCI Express, hardwired to 0. */
1779         uint32_t fbbe                  : 1;  /**< [ 23: 23](RO) Fast back-to-back transactions enable. Not applicable to PCI Express, hardwired to 0. */
1780         uint32_t sbrst                 : 1;  /**< [ 22: 22](R/W) Secondary bus reset. Hot reset. Causes TS1s with the hot reset bit to be sent to the link
1781                                                                  partner. When set, software should wait 2 ms before clearing. The link partner normally
1782                                                                  responds by sending TS1s with the hot reset bit set, which will cause a link down event.
1783                                                                  Refer to 'PCIe Link-Down Reset in RC Mode' section. */
1784         uint32_t mam                   : 1;  /**< [ 21: 21](RO) Master abort mode. Not applicable to PCI Express, hardwired to 0. */
1785         uint32_t vga16d                : 1;  /**< [ 20: 20](RO) VGA 16-bit decode. */
1786         uint32_t vgae                  : 1;  /**< [ 19: 19](RO) VGA enable. */
1787         uint32_t isae                  : 1;  /**< [ 18: 18](R/W) ISA enable. */
1788         uint32_t see                   : 1;  /**< [ 17: 17](R/W) SERR enable. */
1789         uint32_t pere                  : 1;  /**< [ 16: 16](R/W) Parity error response enable. */
1790         uint32_t inta                  : 8;  /**< [ 15:  8](RO/WRSL) Interrupt pin. Identifies the legacy interrupt message that the device (or device
1791                                                                  function) uses. The interrupt pin register is writable through
1792                                                                  PEM()_CFG_WR. In a single-function configuration, only INTA is used. Therefore, the
1793                                                                  application must not change this field. */
1794         uint32_t il                    : 8;  /**< [  7:  0](R/W) Interrupt line. */
1795 #else /* Word 0 - Little Endian */
1796         uint32_t il                    : 8;  /**< [  7:  0](R/W) Interrupt line. */
1797         uint32_t inta                  : 8;  /**< [ 15:  8](RO/WRSL) Interrupt pin. Identifies the legacy interrupt message that the device (or device
1798                                                                  function) uses. The interrupt pin register is writable through
1799                                                                  PEM()_CFG_WR. In a single-function configuration, only INTA is used. Therefore, the
1800                                                                  application must not change this field. */
1801         uint32_t pere                  : 1;  /**< [ 16: 16](R/W) Parity error response enable. */
1802         uint32_t see                   : 1;  /**< [ 17: 17](R/W) SERR enable. */
1803         uint32_t isae                  : 1;  /**< [ 18: 18](R/W) ISA enable. */
1804         uint32_t vgae                  : 1;  /**< [ 19: 19](RO) VGA enable. */
1805         uint32_t vga16d                : 1;  /**< [ 20: 20](RO) VGA 16-bit decode. */
1806         uint32_t mam                   : 1;  /**< [ 21: 21](RO) Master abort mode. Not applicable to PCI Express, hardwired to 0. */
1807         uint32_t sbrst                 : 1;  /**< [ 22: 22](R/W) Secondary bus reset. Hot reset. Causes TS1s with the hot reset bit to be sent to the link
1808                                                                  partner. When set, software should wait 2 ms before clearing. The link partner normally
1809                                                                  responds by sending TS1s with the hot reset bit set, which will cause a link down event.
1810                                                                  Refer to 'PCIe Link-Down Reset in RC Mode' section. */
1811         uint32_t fbbe                  : 1;  /**< [ 23: 23](RO) Fast back-to-back transactions enable. Not applicable to PCI Express, hardwired to 0. */
1812         uint32_t pdt                   : 1;  /**< [ 24: 24](RO) Primary discard timer. Not applicable to PCI Express, hardwired to 0. */
1813         uint32_t sdt                   : 1;  /**< [ 25: 25](RO) Secondary discard timer. Not applicable to PCI Express, hardwired to 0. */
1814         uint32_t dts                   : 1;  /**< [ 26: 26](RO) Discard timer status. Not applicable to PCI Express, hardwired to 0. */
1815         uint32_t dtsees                : 1;  /**< [ 27: 27](RO) Discard timer SERR enable status. Not applicable to PCI Express, hardwired to 0. */
1816         uint32_t reserved_28_31        : 4;
1817 #endif /* Word 0 - End */
1818     } s;
1819     /* struct bdk_pciercx_cfg015_s cn81xx; */
1820     /* struct bdk_pciercx_cfg015_s cn88xx; */
1821     struct bdk_pciercx_cfg015_cn83xx
1822     {
1823 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1824         uint32_t reserved_28_31        : 4;
1825         uint32_t dtsees                : 1;  /**< [ 27: 27](RO) Discard timer SERR enable status. Not applicable to PCI Express, hardwired to 0. */
1826         uint32_t dts                   : 1;  /**< [ 26: 26](RO) Discard timer status. Not applicable to PCI Express, hardwired to 0. */
1827         uint32_t sdt                   : 1;  /**< [ 25: 25](RO) Secondary discard timer. Not applicable to PCI Express, hardwired to 0. */
1828         uint32_t pdt                   : 1;  /**< [ 24: 24](RO) Primary discard timer. Not applicable to PCI Express, hardwired to 0. */
1829         uint32_t fbbe                  : 1;  /**< [ 23: 23](RO) Fast back-to-back transactions enable. Not applicable to PCI Express, hardwired to 0. */
1830         uint32_t sbrst                 : 1;  /**< [ 22: 22](R/W) Secondary bus reset. Hot reset. Causes TS1s with the hot reset bit to be sent to the link
1831                                                                  partner. When set, software should wait 2 ms before clearing. The link partner normally
1832                                                                  responds by sending TS1s with the hot reset bit set, which will cause a link down event.
1833                                                                  Refer to 'PCIe Link-Down Reset in RC Mode' section. */
1834         uint32_t mam                   : 1;  /**< [ 21: 21](RO) Master abort mode. Not applicable to PCI Express, hardwired to 0. */
1835         uint32_t vga16d                : 1;  /**< [ 20: 20](RO) VGA 16-bit decode. */
1836         uint32_t vgae                  : 1;  /**< [ 19: 19](RO) VGA enable. */
1837         uint32_t isae                  : 1;  /**< [ 18: 18](R/W) ISA enable. */
1838         uint32_t see                   : 1;  /**< [ 17: 17](R/W) SERR enable. */
1839         uint32_t pere                  : 1;  /**< [ 16: 16](R/W) Parity error response enable. */
1840         uint32_t inta                  : 8;  /**< [ 15:  8](RO) Interrupt pin (not supported). */
1841         uint32_t il                    : 8;  /**< [  7:  0](RO) Interrupt line. */
1842 #else /* Word 0 - Little Endian */
1843         uint32_t il                    : 8;  /**< [  7:  0](RO) Interrupt line. */
1844         uint32_t inta                  : 8;  /**< [ 15:  8](RO) Interrupt pin (not supported). */
1845         uint32_t pere                  : 1;  /**< [ 16: 16](R/W) Parity error response enable. */
1846         uint32_t see                   : 1;  /**< [ 17: 17](R/W) SERR enable. */
1847         uint32_t isae                  : 1;  /**< [ 18: 18](R/W) ISA enable. */
1848         uint32_t vgae                  : 1;  /**< [ 19: 19](RO) VGA enable. */
1849         uint32_t vga16d                : 1;  /**< [ 20: 20](RO) VGA 16-bit decode. */
1850         uint32_t mam                   : 1;  /**< [ 21: 21](RO) Master abort mode. Not applicable to PCI Express, hardwired to 0. */
1851         uint32_t sbrst                 : 1;  /**< [ 22: 22](R/W) Secondary bus reset. Hot reset. Causes TS1s with the hot reset bit to be sent to the link
1852                                                                  partner. When set, software should wait 2 ms before clearing. The link partner normally
1853                                                                  responds by sending TS1s with the hot reset bit set, which will cause a link down event.
1854                                                                  Refer to 'PCIe Link-Down Reset in RC Mode' section. */
1855         uint32_t fbbe                  : 1;  /**< [ 23: 23](RO) Fast back-to-back transactions enable. Not applicable to PCI Express, hardwired to 0. */
1856         uint32_t pdt                   : 1;  /**< [ 24: 24](RO) Primary discard timer. Not applicable to PCI Express, hardwired to 0. */
1857         uint32_t sdt                   : 1;  /**< [ 25: 25](RO) Secondary discard timer. Not applicable to PCI Express, hardwired to 0. */
1858         uint32_t dts                   : 1;  /**< [ 26: 26](RO) Discard timer status. Not applicable to PCI Express, hardwired to 0. */
1859         uint32_t dtsees                : 1;  /**< [ 27: 27](RO) Discard timer SERR enable status. Not applicable to PCI Express, hardwired to 0. */
1860         uint32_t reserved_28_31        : 4;
1861 #endif /* Word 0 - End */
1862     } cn83xx;
1863 };
1864 typedef union bdk_pciercx_cfg015 bdk_pciercx_cfg015_t;
1865 
1866 static inline uint64_t BDK_PCIERCX_CFG015(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG015(unsigned long a)1867 static inline uint64_t BDK_PCIERCX_CFG015(unsigned long a)
1868 {
1869     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
1870         return 0x2000000003cll + 0x100000000ll * ((a) & 0x3);
1871     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
1872         return 0x2000000003cll + 0x100000000ll * ((a) & 0x3);
1873     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
1874         return 0x2000000003cll + 0x100000000ll * ((a) & 0x7);
1875     __bdk_csr_fatal("PCIERCX_CFG015", 1, a, 0, 0, 0);
1876 }
1877 
1878 #define typedef_BDK_PCIERCX_CFG015(a) bdk_pciercx_cfg015_t
1879 #define bustype_BDK_PCIERCX_CFG015(a) BDK_CSR_TYPE_PCICONFIGRC
1880 #define basename_BDK_PCIERCX_CFG015(a) "PCIERCX_CFG015"
1881 #define busnum_BDK_PCIERCX_CFG015(a) (a)
1882 #define arguments_BDK_PCIERCX_CFG015(a) (a),-1,-1,-1
1883 
1884 /**
1885  * Register (PCICONFIGRC) pcierc#_cfg016
1886  *
1887  * PCIe RC Power Management Capability ID Register
1888  * This register contains the seventeenth 32-bits of PCIe type 1 configuration space.
1889  */
1890 union bdk_pciercx_cfg016
1891 {
1892     uint32_t u;
1893     struct bdk_pciercx_cfg016_s
1894     {
1895 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1896         uint32_t pmes                  : 5;  /**< [ 31: 27](RO/WRSL/H) PME_Support. A value of 0x0 for any bit indicates that the device (or function) is not
1897                                                                  capable of generating PME messages while in that power state:
1898 
1899                                                                  _ Bit 11: If set, PME Messages can be generated from D0.
1900 
1901                                                                  _ Bit 12: If set, PME Messages can be generated from D1.
1902 
1903                                                                  _ Bit 13: If set, PME Messages can be generated from D2.
1904 
1905                                                                  _ Bit 14: If set, PME Messages can be generated from D3hot.
1906 
1907                                                                  _ Bit 15: If set, PME Messages can be generated from D3cold.
1908 
1909                                                                  The PME_Support field is writable through PEM()_CFG_WR. However, the application must
1910                                                                  not change this field. */
1911         uint32_t d2s                   : 1;  /**< [ 26: 26](RO/WRSL) D2 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
1912         uint32_t d1s                   : 1;  /**< [ 25: 25](RO/WRSL) D1 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
1913         uint32_t auxc                  : 3;  /**< [ 24: 22](RO/WRSL) AUX current, writable through PEM()_CFG_WR. However, the application must not change
1914                                                                  this field. */
1915         uint32_t dsi                   : 1;  /**< [ 21: 21](RO/WRSL) Device specific initialization (DSI), writable through PEM()_CFG_WR. However, the
1916                                                                  application must not change this field. */
1917         uint32_t reserved_20           : 1;
1918         uint32_t pme_clock             : 1;  /**< [ 19: 19](RO) PME clock, hardwired to 0. */
1919         uint32_t pmsv                  : 3;  /**< [ 18: 16](RO/WRSL) Power management specification version, writable through
1920                                                                  PEM()_CFG_WR. However, the application must not change this field. */
1921         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the EA capabilities by default, writable through
1922                                                                  PEM()_CFG_WR. */
1923         uint32_t pmcid                 : 8;  /**< [  7:  0](RO) Power management capability ID. */
1924 #else /* Word 0 - Little Endian */
1925         uint32_t pmcid                 : 8;  /**< [  7:  0](RO) Power management capability ID. */
1926         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the EA capabilities by default, writable through
1927                                                                  PEM()_CFG_WR. */
1928         uint32_t pmsv                  : 3;  /**< [ 18: 16](RO/WRSL) Power management specification version, writable through
1929                                                                  PEM()_CFG_WR. However, the application must not change this field. */
1930         uint32_t pme_clock             : 1;  /**< [ 19: 19](RO) PME clock, hardwired to 0. */
1931         uint32_t reserved_20           : 1;
1932         uint32_t dsi                   : 1;  /**< [ 21: 21](RO/WRSL) Device specific initialization (DSI), writable through PEM()_CFG_WR. However, the
1933                                                                  application must not change this field. */
1934         uint32_t auxc                  : 3;  /**< [ 24: 22](RO/WRSL) AUX current, writable through PEM()_CFG_WR. However, the application must not change
1935                                                                  this field. */
1936         uint32_t d1s                   : 1;  /**< [ 25: 25](RO/WRSL) D1 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
1937         uint32_t d2s                   : 1;  /**< [ 26: 26](RO/WRSL) D2 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
1938         uint32_t pmes                  : 5;  /**< [ 31: 27](RO/WRSL/H) PME_Support. A value of 0x0 for any bit indicates that the device (or function) is not
1939                                                                  capable of generating PME messages while in that power state:
1940 
1941                                                                  _ Bit 11: If set, PME Messages can be generated from D0.
1942 
1943                                                                  _ Bit 12: If set, PME Messages can be generated from D1.
1944 
1945                                                                  _ Bit 13: If set, PME Messages can be generated from D2.
1946 
1947                                                                  _ Bit 14: If set, PME Messages can be generated from D3hot.
1948 
1949                                                                  _ Bit 15: If set, PME Messages can be generated from D3cold.
1950 
1951                                                                  The PME_Support field is writable through PEM()_CFG_WR. However, the application must
1952                                                                  not change this field. */
1953 #endif /* Word 0 - End */
1954     } s;
1955     /* struct bdk_pciercx_cfg016_s cn81xx; */
1956     struct bdk_pciercx_cfg016_cn88xx
1957     {
1958 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
1959         uint32_t pmes                  : 5;  /**< [ 31: 27](RO/WRSL/H) PME_Support. A value of 0x0 for any bit indicates that the device (or function) is not
1960                                                                  capable of generating PME messages while in that power state:
1961 
1962                                                                  _ Bit 11: If set, PME Messages can be generated from D0.
1963 
1964                                                                  _ Bit 12: If set, PME Messages can be generated from D1.
1965 
1966                                                                  _ Bit 13: If set, PME Messages can be generated from D2.
1967 
1968                                                                  _ Bit 14: If set, PME Messages can be generated from D3hot.
1969 
1970                                                                  _ Bit 15: If set, PME Messages can be generated from D3cold.
1971 
1972                                                                  The PME_Support field is writable through PEM()_CFG_WR. However, the application must
1973                                                                  not change this field. */
1974         uint32_t d2s                   : 1;  /**< [ 26: 26](RO/WRSL) D2 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
1975         uint32_t d1s                   : 1;  /**< [ 25: 25](RO/WRSL) D1 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
1976         uint32_t auxc                  : 3;  /**< [ 24: 22](RO/WRSL) AUX current, writable through PEM()_CFG_WR. However, the application must not change
1977                                                                  this field. */
1978         uint32_t dsi                   : 1;  /**< [ 21: 21](RO/WRSL) Device specific initialization (DSI), writable through PEM()_CFG_WR. However, the
1979                                                                  application must not change this field. */
1980         uint32_t reserved_20           : 1;
1981         uint32_t pme_clock             : 1;  /**< [ 19: 19](RO) PME clock, hardwired to 0. */
1982         uint32_t pmsv                  : 3;  /**< [ 18: 16](RO/WRSL) Power management specification version, writable through
1983                                                                  PEM()_CFG_WR. However, the application must not change this field. */
1984         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the MSI capabilities by default, writable through
1985                                                                  PEM()_CFG_WR. */
1986         uint32_t pmcid                 : 8;  /**< [  7:  0](RO) Power management capability ID. */
1987 #else /* Word 0 - Little Endian */
1988         uint32_t pmcid                 : 8;  /**< [  7:  0](RO) Power management capability ID. */
1989         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the MSI capabilities by default, writable through
1990                                                                  PEM()_CFG_WR. */
1991         uint32_t pmsv                  : 3;  /**< [ 18: 16](RO/WRSL) Power management specification version, writable through
1992                                                                  PEM()_CFG_WR. However, the application must not change this field. */
1993         uint32_t pme_clock             : 1;  /**< [ 19: 19](RO) PME clock, hardwired to 0. */
1994         uint32_t reserved_20           : 1;
1995         uint32_t dsi                   : 1;  /**< [ 21: 21](RO/WRSL) Device specific initialization (DSI), writable through PEM()_CFG_WR. However, the
1996                                                                  application must not change this field. */
1997         uint32_t auxc                  : 3;  /**< [ 24: 22](RO/WRSL) AUX current, writable through PEM()_CFG_WR. However, the application must not change
1998                                                                  this field. */
1999         uint32_t d1s                   : 1;  /**< [ 25: 25](RO/WRSL) D1 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
2000         uint32_t d2s                   : 1;  /**< [ 26: 26](RO/WRSL) D2 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
2001         uint32_t pmes                  : 5;  /**< [ 31: 27](RO/WRSL/H) PME_Support. A value of 0x0 for any bit indicates that the device (or function) is not
2002                                                                  capable of generating PME messages while in that power state:
2003 
2004                                                                  _ Bit 11: If set, PME Messages can be generated from D0.
2005 
2006                                                                  _ Bit 12: If set, PME Messages can be generated from D1.
2007 
2008                                                                  _ Bit 13: If set, PME Messages can be generated from D2.
2009 
2010                                                                  _ Bit 14: If set, PME Messages can be generated from D3hot.
2011 
2012                                                                  _ Bit 15: If set, PME Messages can be generated from D3cold.
2013 
2014                                                                  The PME_Support field is writable through PEM()_CFG_WR. However, the application must
2015                                                                  not change this field. */
2016 #endif /* Word 0 - End */
2017     } cn88xx;
2018     struct bdk_pciercx_cfg016_cn83xx
2019     {
2020 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2021         uint32_t pmes                  : 5;  /**< [ 31: 27](RO/WRSL/H) PME_Support. A value of 0x0 for any bit indicates that the device (or function) is not
2022                                                                  capable of generating PME messages while in that power state:
2023 
2024                                                                  _ Bit 11: If set, PME Messages can be generated from D0.
2025 
2026                                                                  _ Bit 12: If set, PME Messages can be generated from D1.
2027 
2028                                                                  _ Bit 13: If set, PME Messages can be generated from D2.
2029 
2030                                                                  _ Bit 14: If set, PME Messages can be generated from D3hot.
2031 
2032                                                                  _ Bit 15: If set, PME Messages can be generated from D3cold.
2033 
2034                                                                  The PME_Support field is writable through PEM()_CFG_WR. However, the application must
2035                                                                  not change this field. */
2036         uint32_t d2s                   : 1;  /**< [ 26: 26](RO/WRSL) D2 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
2037         uint32_t d1s                   : 1;  /**< [ 25: 25](RO/WRSL) D1 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
2038         uint32_t auxc                  : 3;  /**< [ 24: 22](RO/WRSL) AUX current, writable through PEM()_CFG_WR. However, the application must not change
2039                                                                  this field. */
2040         uint32_t dsi                   : 1;  /**< [ 21: 21](RO/WRSL) Device specific initialization (DSI), writable through PEM()_CFG_WR. However, the
2041                                                                  application must not change this field. */
2042         uint32_t reserved_20           : 1;
2043         uint32_t pme_clock             : 1;  /**< [ 19: 19](RO) PME clock, hardwired to 0. */
2044         uint32_t pmsv                  : 3;  /**< [ 18: 16](RO/WRSL) Power management specification version, writable through
2045                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2046         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the EA capabilities by default, writable
2047                                                                  through PEM()_CFG_WR. */
2048         uint32_t pmcid                 : 8;  /**< [  7:  0](RO) Power management capability ID. */
2049 #else /* Word 0 - Little Endian */
2050         uint32_t pmcid                 : 8;  /**< [  7:  0](RO) Power management capability ID. */
2051         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the EA capabilities by default, writable
2052                                                                  through PEM()_CFG_WR. */
2053         uint32_t pmsv                  : 3;  /**< [ 18: 16](RO/WRSL) Power management specification version, writable through
2054                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2055         uint32_t pme_clock             : 1;  /**< [ 19: 19](RO) PME clock, hardwired to 0. */
2056         uint32_t reserved_20           : 1;
2057         uint32_t dsi                   : 1;  /**< [ 21: 21](RO/WRSL) Device specific initialization (DSI), writable through PEM()_CFG_WR. However, the
2058                                                                  application must not change this field. */
2059         uint32_t auxc                  : 3;  /**< [ 24: 22](RO/WRSL) AUX current, writable through PEM()_CFG_WR. However, the application must not change
2060                                                                  this field. */
2061         uint32_t d1s                   : 1;  /**< [ 25: 25](RO/WRSL) D1 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
2062         uint32_t d2s                   : 1;  /**< [ 26: 26](RO/WRSL) D2 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
2063         uint32_t pmes                  : 5;  /**< [ 31: 27](RO/WRSL/H) PME_Support. A value of 0x0 for any bit indicates that the device (or function) is not
2064                                                                  capable of generating PME messages while in that power state:
2065 
2066                                                                  _ Bit 11: If set, PME Messages can be generated from D0.
2067 
2068                                                                  _ Bit 12: If set, PME Messages can be generated from D1.
2069 
2070                                                                  _ Bit 13: If set, PME Messages can be generated from D2.
2071 
2072                                                                  _ Bit 14: If set, PME Messages can be generated from D3hot.
2073 
2074                                                                  _ Bit 15: If set, PME Messages can be generated from D3cold.
2075 
2076                                                                  The PME_Support field is writable through PEM()_CFG_WR. However, the application must
2077                                                                  not change this field. */
2078 #endif /* Word 0 - End */
2079     } cn83xx;
2080 };
2081 typedef union bdk_pciercx_cfg016 bdk_pciercx_cfg016_t;
2082 
2083 static inline uint64_t BDK_PCIERCX_CFG016(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG016(unsigned long a)2084 static inline uint64_t BDK_PCIERCX_CFG016(unsigned long a)
2085 {
2086     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2087         return 0x20000000040ll + 0x100000000ll * ((a) & 0x3);
2088     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2089         return 0x20000000040ll + 0x100000000ll * ((a) & 0x3);
2090     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2091         return 0x20000000040ll + 0x100000000ll * ((a) & 0x7);
2092     __bdk_csr_fatal("PCIERCX_CFG016", 1, a, 0, 0, 0);
2093 }
2094 
2095 #define typedef_BDK_PCIERCX_CFG016(a) bdk_pciercx_cfg016_t
2096 #define bustype_BDK_PCIERCX_CFG016(a) BDK_CSR_TYPE_PCICONFIGRC
2097 #define basename_BDK_PCIERCX_CFG016(a) "PCIERCX_CFG016"
2098 #define busnum_BDK_PCIERCX_CFG016(a) (a)
2099 #define arguments_BDK_PCIERCX_CFG016(a) (a),-1,-1,-1
2100 
2101 /**
2102  * Register (PCICONFIGRC) pcierc#_cfg017
2103  *
2104  * PCIe RC Power Management Control and Status Register
2105  * This register contains the eighteenth 32-bits of PCIe type 1 configuration space.
2106  */
2107 union bdk_pciercx_cfg017
2108 {
2109     uint32_t u;
2110     struct bdk_pciercx_cfg017_s
2111     {
2112 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2113         uint32_t pmdia                 : 8;  /**< [ 31: 24](RO) Data register for additional information (not supported). */
2114         uint32_t bpccee                : 1;  /**< [ 23: 23](RO) Bus power/clock control enable, hardwired to 0. */
2115         uint32_t bd3h                  : 1;  /**< [ 22: 22](RO) B2/B3 support, hardwired to 0. */
2116         uint32_t reserved_16_21        : 6;
2117         uint32_t pmess                 : 1;  /**< [ 15: 15](R/W1C/H) PME status. Indicates whether or not a previously enabled PME event occurred. */
2118         uint32_t pmedsia               : 2;  /**< [ 14: 13](RO) Data scale (not supported). */
2119         uint32_t pmds                  : 4;  /**< [ 12:  9](RO) Data select (not supported). */
2120         uint32_t pmeens                : 1;  /**< [  8:  8](R/W) PME enable. A value of 1 indicates that the device is enabled to generate PME. */
2121         uint32_t reserved_4_7          : 4;
2122         uint32_t nsr                   : 1;  /**< [  3:  3](RO/WRSL) No soft reset, writable through PEM()_CFG_WR. However, the application must not change
2123                                                                  this field. */
2124         uint32_t reserved_2            : 1;
2125         uint32_t ps                    : 2;  /**< [  1:  0](R/W/H) Power state. Controls the device power state:
2126                                                                  0x0 = D0.
2127                                                                  0x1 = D1.
2128                                                                  0x2 = D2.
2129                                                                  0x3 = D3.
2130 
2131                                                                  The written value is ignored if the specific state is not supported. */
2132 #else /* Word 0 - Little Endian */
2133         uint32_t ps                    : 2;  /**< [  1:  0](R/W/H) Power state. Controls the device power state:
2134                                                                  0x0 = D0.
2135                                                                  0x1 = D1.
2136                                                                  0x2 = D2.
2137                                                                  0x3 = D3.
2138 
2139                                                                  The written value is ignored if the specific state is not supported. */
2140         uint32_t reserved_2            : 1;
2141         uint32_t nsr                   : 1;  /**< [  3:  3](RO/WRSL) No soft reset, writable through PEM()_CFG_WR. However, the application must not change
2142                                                                  this field. */
2143         uint32_t reserved_4_7          : 4;
2144         uint32_t pmeens                : 1;  /**< [  8:  8](R/W) PME enable. A value of 1 indicates that the device is enabled to generate PME. */
2145         uint32_t pmds                  : 4;  /**< [ 12:  9](RO) Data select (not supported). */
2146         uint32_t pmedsia               : 2;  /**< [ 14: 13](RO) Data scale (not supported). */
2147         uint32_t pmess                 : 1;  /**< [ 15: 15](R/W1C/H) PME status. Indicates whether or not a previously enabled PME event occurred. */
2148         uint32_t reserved_16_21        : 6;
2149         uint32_t bd3h                  : 1;  /**< [ 22: 22](RO) B2/B3 support, hardwired to 0. */
2150         uint32_t bpccee                : 1;  /**< [ 23: 23](RO) Bus power/clock control enable, hardwired to 0. */
2151         uint32_t pmdia                 : 8;  /**< [ 31: 24](RO) Data register for additional information (not supported). */
2152 #endif /* Word 0 - End */
2153     } s;
2154     /* struct bdk_pciercx_cfg017_s cn; */
2155 };
2156 typedef union bdk_pciercx_cfg017 bdk_pciercx_cfg017_t;
2157 
2158 static inline uint64_t BDK_PCIERCX_CFG017(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG017(unsigned long a)2159 static inline uint64_t BDK_PCIERCX_CFG017(unsigned long a)
2160 {
2161     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2162         return 0x20000000044ll + 0x100000000ll * ((a) & 0x3);
2163     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2164         return 0x20000000044ll + 0x100000000ll * ((a) & 0x3);
2165     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2166         return 0x20000000044ll + 0x100000000ll * ((a) & 0x7);
2167     __bdk_csr_fatal("PCIERCX_CFG017", 1, a, 0, 0, 0);
2168 }
2169 
2170 #define typedef_BDK_PCIERCX_CFG017(a) bdk_pciercx_cfg017_t
2171 #define bustype_BDK_PCIERCX_CFG017(a) BDK_CSR_TYPE_PCICONFIGRC
2172 #define basename_BDK_PCIERCX_CFG017(a) "PCIERCX_CFG017"
2173 #define busnum_BDK_PCIERCX_CFG017(a) (a)
2174 #define arguments_BDK_PCIERCX_CFG017(a) (a),-1,-1,-1
2175 
2176 /**
2177  * Register (PCICONFIGRC) pcierc#_cfg020
2178  *
2179  * PCIe RC MSI Capability ID/MSI Next Item Pointer/MSI Control Register
2180  * This register contains the twenty-first 32-bits of PCIe type 1 configuration space.
2181  */
2182 union bdk_pciercx_cfg020
2183 {
2184     uint32_t u;
2185     struct bdk_pciercx_cfg020_s
2186     {
2187 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2188         uint32_t reserved_16_31        : 16;
2189         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the PCIe capabilities list by default, writable through
2190                                                                  PEM()_CFG_WR. */
2191         uint32_t reserved_0_7          : 8;
2192 #else /* Word 0 - Little Endian */
2193         uint32_t reserved_0_7          : 8;
2194         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the PCIe capabilities list by default, writable through
2195                                                                  PEM()_CFG_WR. */
2196         uint32_t reserved_16_31        : 16;
2197 #endif /* Word 0 - End */
2198     } s;
2199     struct bdk_pciercx_cfg020_cn81xx
2200     {
2201 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2202         uint32_t ea_rsvd               : 10; /**< [ 31: 22](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2203                                                                  not change this field. */
2204         uint32_t num_entries           : 6;  /**< [ 21: 16](RO/WRSL) Number of entries following the first DW of the capability.
2205                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2206                                                                  field. */
2207         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the PCIe capabilities list by default, writable through
2208                                                                  PEM()_CFG_WR. */
2209         uint32_t eacid                 : 8;  /**< [  7:  0](RO/WRSL) Enhanced allocation capability ID.
2210                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2211                                                                  field. */
2212 #else /* Word 0 - Little Endian */
2213         uint32_t eacid                 : 8;  /**< [  7:  0](RO/WRSL) Enhanced allocation capability ID.
2214                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2215                                                                  field. */
2216         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the PCIe capabilities list by default, writable through
2217                                                                  PEM()_CFG_WR. */
2218         uint32_t num_entries           : 6;  /**< [ 21: 16](RO/WRSL) Number of entries following the first DW of the capability.
2219                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2220                                                                  field. */
2221         uint32_t ea_rsvd               : 10; /**< [ 31: 22](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2222                                                                  not change this field. */
2223 #endif /* Word 0 - End */
2224     } cn81xx;
2225     struct bdk_pciercx_cfg020_cn88xx
2226     {
2227 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2228         uint32_t reserved_25_31        : 7;
2229         uint32_t pvms                  : 1;  /**< [ 24: 24](RO) Per-vector masking capable. */
2230         uint32_t m64                   : 1;  /**< [ 23: 23](RO/WRSL) 64-bit address capable, writable through PEM()_CFG_WR. However, the application must
2231                                                                  not change this field. */
2232         uint32_t mme                   : 3;  /**< [ 22: 20](R/W) Multiple message enabled. Indicates that multiple message mode is enabled by system
2233                                                                  software. The number of messages enabled must be less than or equal to the multiple
2234                                                                  message capable (MMC) value. */
2235         uint32_t mmc                   : 3;  /**< [ 19: 17](RO/WRSL) Multiple message capable, writable through PEM()_CFG_WR. However, the application must
2236                                                                  not change this field. */
2237         uint32_t msien                 : 1;  /**< [ 16: 16](R/W) MSI enabled. When set, INTx must be disabled. This bit must never be set, as internal-MSI
2238                                                                  is not supported in RC mode. (Note that this has no effect on external MSI, which is
2239                                                                  commonly used in RC mode.) */
2240         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to PCI Express capabilities by default, writable through
2241                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2242         uint32_t msicid                : 8;  /**< [  7:  0](RO) MSI capability ID. */
2243 #else /* Word 0 - Little Endian */
2244         uint32_t msicid                : 8;  /**< [  7:  0](RO) MSI capability ID. */
2245         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to PCI Express capabilities by default, writable through
2246                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2247         uint32_t msien                 : 1;  /**< [ 16: 16](R/W) MSI enabled. When set, INTx must be disabled. This bit must never be set, as internal-MSI
2248                                                                  is not supported in RC mode. (Note that this has no effect on external MSI, which is
2249                                                                  commonly used in RC mode.) */
2250         uint32_t mmc                   : 3;  /**< [ 19: 17](RO/WRSL) Multiple message capable, writable through PEM()_CFG_WR. However, the application must
2251                                                                  not change this field. */
2252         uint32_t mme                   : 3;  /**< [ 22: 20](R/W) Multiple message enabled. Indicates that multiple message mode is enabled by system
2253                                                                  software. The number of messages enabled must be less than or equal to the multiple
2254                                                                  message capable (MMC) value. */
2255         uint32_t m64                   : 1;  /**< [ 23: 23](RO/WRSL) 64-bit address capable, writable through PEM()_CFG_WR. However, the application must
2256                                                                  not change this field. */
2257         uint32_t pvms                  : 1;  /**< [ 24: 24](RO) Per-vector masking capable. */
2258         uint32_t reserved_25_31        : 7;
2259 #endif /* Word 0 - End */
2260     } cn88xx;
2261     /* struct bdk_pciercx_cfg020_cn81xx cn83xx; */
2262 };
2263 typedef union bdk_pciercx_cfg020 bdk_pciercx_cfg020_t;
2264 
2265 static inline uint64_t BDK_PCIERCX_CFG020(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG020(unsigned long a)2266 static inline uint64_t BDK_PCIERCX_CFG020(unsigned long a)
2267 {
2268     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2269         return 0x20000000050ll + 0x100000000ll * ((a) & 0x3);
2270     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2271         return 0x20000000050ll + 0x100000000ll * ((a) & 0x3);
2272     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2273         return 0x20000000050ll + 0x100000000ll * ((a) & 0x7);
2274     __bdk_csr_fatal("PCIERCX_CFG020", 1, a, 0, 0, 0);
2275 }
2276 
2277 #define typedef_BDK_PCIERCX_CFG020(a) bdk_pciercx_cfg020_t
2278 #define bustype_BDK_PCIERCX_CFG020(a) BDK_CSR_TYPE_PCICONFIGRC
2279 #define basename_BDK_PCIERCX_CFG020(a) "PCIERCX_CFG020"
2280 #define busnum_BDK_PCIERCX_CFG020(a) (a)
2281 #define arguments_BDK_PCIERCX_CFG020(a) (a),-1,-1,-1
2282 
2283 /**
2284  * Register (PCICONFIGRC) pcierc#_cfg021
2285  *
2286  * PCIe RC MSI Lower 32 Bits Address Register
2287  * This register contains the twenty-second 32-bits of PCIe type 1 configuration space.
2288  */
2289 union bdk_pciercx_cfg021
2290 {
2291     uint32_t u;
2292     struct bdk_pciercx_cfg021_s
2293     {
2294 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2295         uint32_t reserved_0_31         : 32;
2296 #else /* Word 0 - Little Endian */
2297         uint32_t reserved_0_31         : 32;
2298 #endif /* Word 0 - End */
2299     } s;
2300     struct bdk_pciercx_cfg021_cn81xx
2301     {
2302 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2303         uint32_t ea_rsvd               : 16; /**< [ 31: 16](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2304                                                                  not change this field. */
2305         uint32_t fixed_subnum          : 8;  /**< [ 15:  8](RO/WRSL) Fixed subordinate bus number.
2306                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2307                                                                  field. */
2308         uint32_t fixed_secnum          : 8;  /**< [  7:  0](RO/WRSL) Fixed secondary bus number.
2309                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2310                                                                  field. */
2311 #else /* Word 0 - Little Endian */
2312         uint32_t fixed_secnum          : 8;  /**< [  7:  0](RO/WRSL) Fixed secondary bus number.
2313                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2314                                                                  field. */
2315         uint32_t fixed_subnum          : 8;  /**< [ 15:  8](RO/WRSL) Fixed subordinate bus number.
2316                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2317                                                                  field. */
2318         uint32_t ea_rsvd               : 16; /**< [ 31: 16](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2319                                                                  not change this field. */
2320 #endif /* Word 0 - End */
2321     } cn81xx;
2322     struct bdk_pciercx_cfg021_cn88xx
2323     {
2324 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2325         uint32_t lmsi                  : 30; /**< [ 31:  2](R/W) Lower 32-bit address. */
2326         uint32_t reserved_0_1          : 2;
2327 #else /* Word 0 - Little Endian */
2328         uint32_t reserved_0_1          : 2;
2329         uint32_t lmsi                  : 30; /**< [ 31:  2](R/W) Lower 32-bit address. */
2330 #endif /* Word 0 - End */
2331     } cn88xx;
2332     /* struct bdk_pciercx_cfg021_cn81xx cn83xx; */
2333 };
2334 typedef union bdk_pciercx_cfg021 bdk_pciercx_cfg021_t;
2335 
2336 static inline uint64_t BDK_PCIERCX_CFG021(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG021(unsigned long a)2337 static inline uint64_t BDK_PCIERCX_CFG021(unsigned long a)
2338 {
2339     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2340         return 0x20000000054ll + 0x100000000ll * ((a) & 0x3);
2341     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2342         return 0x20000000054ll + 0x100000000ll * ((a) & 0x3);
2343     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2344         return 0x20000000054ll + 0x100000000ll * ((a) & 0x7);
2345     __bdk_csr_fatal("PCIERCX_CFG021", 1, a, 0, 0, 0);
2346 }
2347 
2348 #define typedef_BDK_PCIERCX_CFG021(a) bdk_pciercx_cfg021_t
2349 #define bustype_BDK_PCIERCX_CFG021(a) BDK_CSR_TYPE_PCICONFIGRC
2350 #define basename_BDK_PCIERCX_CFG021(a) "PCIERCX_CFG021"
2351 #define busnum_BDK_PCIERCX_CFG021(a) (a)
2352 #define arguments_BDK_PCIERCX_CFG021(a) (a),-1,-1,-1
2353 
2354 /**
2355  * Register (PCICONFIGRC) pcierc#_cfg022
2356  *
2357  * PCIe RC MSI Upper 32 Bits Address Register
2358  * This register contains the twenty-third 32-bits of PCIe type 1 configuration space.
2359  */
2360 union bdk_pciercx_cfg022
2361 {
2362     uint32_t u;
2363     struct bdk_pciercx_cfg022_s
2364     {
2365 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2366         uint32_t reserved_0_31         : 32;
2367 #else /* Word 0 - Little Endian */
2368         uint32_t reserved_0_31         : 32;
2369 #endif /* Word 0 - End */
2370     } s;
2371     struct bdk_pciercx_cfg022_cn81xx
2372     {
2373 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2374         uint32_t ena                   : 1;  /**< [ 31: 31](RO/WRSL) Enable for this entry.  This field is writable through PEM()_CFG_WR. However, the
2375                                                                  application must
2376                                                                  not change this field. */
2377         uint32_t wr                    : 1;  /**< [ 30: 30](RO/WRSL) Writable.  This field is writable through PEM()_CFG_WR. However, the application must
2378                                                                  not change this field. */
2379         uint32_t ea_rsvd_1             : 6;  /**< [ 29: 24](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2380                                                                  not change this field. */
2381         uint32_t sprop                 : 8;  /**< [ 23: 16](RO/WRSL) Secondary properties.
2382                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2383                                                                  field. */
2384         uint32_t pprop                 : 8;  /**< [ 15:  8](RO/WRSL) Primary properties.
2385                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2386                                                                  field. */
2387         uint32_t bei                   : 4;  /**< [  7:  4](RO/WRSL) Bar equivalent indicator.
2388                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2389                                                                  field. */
2390         uint32_t ea_rsvd_0             : 1;  /**< [  3:  3](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2391                                                                  not change this field. */
2392         uint32_t esize                 : 3;  /**< [  2:  0](RO/WRSL) Entry size - the number of DW following the initial DW in this entry.
2393                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2394                                                                  field. */
2395 #else /* Word 0 - Little Endian */
2396         uint32_t esize                 : 3;  /**< [  2:  0](RO/WRSL) Entry size - the number of DW following the initial DW in this entry.
2397                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2398                                                                  field. */
2399         uint32_t ea_rsvd_0             : 1;  /**< [  3:  3](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2400                                                                  not change this field. */
2401         uint32_t bei                   : 4;  /**< [  7:  4](RO/WRSL) Bar equivalent indicator.
2402                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2403                                                                  field. */
2404         uint32_t pprop                 : 8;  /**< [ 15:  8](RO/WRSL) Primary properties.
2405                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2406                                                                  field. */
2407         uint32_t sprop                 : 8;  /**< [ 23: 16](RO/WRSL) Secondary properties.
2408                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
2409                                                                  field. */
2410         uint32_t ea_rsvd_1             : 6;  /**< [ 29: 24](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2411                                                                  not change this field. */
2412         uint32_t wr                    : 1;  /**< [ 30: 30](RO/WRSL) Writable.  This field is writable through PEM()_CFG_WR. However, the application must
2413                                                                  not change this field. */
2414         uint32_t ena                   : 1;  /**< [ 31: 31](RO/WRSL) Enable for this entry.  This field is writable through PEM()_CFG_WR. However, the
2415                                                                  application must
2416                                                                  not change this field. */
2417 #endif /* Word 0 - End */
2418     } cn81xx;
2419     struct bdk_pciercx_cfg022_cn88xx
2420     {
2421 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2422         uint32_t umsi                  : 32; /**< [ 31:  0](R/W) Upper 32-bit address. */
2423 #else /* Word 0 - Little Endian */
2424         uint32_t umsi                  : 32; /**< [ 31:  0](R/W) Upper 32-bit address. */
2425 #endif /* Word 0 - End */
2426     } cn88xx;
2427     /* struct bdk_pciercx_cfg022_cn81xx cn83xx; */
2428 };
2429 typedef union bdk_pciercx_cfg022 bdk_pciercx_cfg022_t;
2430 
2431 static inline uint64_t BDK_PCIERCX_CFG022(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG022(unsigned long a)2432 static inline uint64_t BDK_PCIERCX_CFG022(unsigned long a)
2433 {
2434     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2435         return 0x20000000058ll + 0x100000000ll * ((a) & 0x3);
2436     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2437         return 0x20000000058ll + 0x100000000ll * ((a) & 0x3);
2438     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2439         return 0x20000000058ll + 0x100000000ll * ((a) & 0x7);
2440     __bdk_csr_fatal("PCIERCX_CFG022", 1, a, 0, 0, 0);
2441 }
2442 
2443 #define typedef_BDK_PCIERCX_CFG022(a) bdk_pciercx_cfg022_t
2444 #define bustype_BDK_PCIERCX_CFG022(a) BDK_CSR_TYPE_PCICONFIGRC
2445 #define basename_BDK_PCIERCX_CFG022(a) "PCIERCX_CFG022"
2446 #define busnum_BDK_PCIERCX_CFG022(a) (a)
2447 #define arguments_BDK_PCIERCX_CFG022(a) (a),-1,-1,-1
2448 
2449 /**
2450  * Register (PCICONFIGRC) pcierc#_cfg023
2451  *
2452  * PCIe RC MSI Data Register
2453  * This register contains the twenty-fourth 32-bits of PCIe type 1 configuration space.
2454  */
2455 union bdk_pciercx_cfg023
2456 {
2457     uint32_t u;
2458     struct bdk_pciercx_cfg023_s
2459     {
2460 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2461         uint32_t reserved_0_31         : 32;
2462 #else /* Word 0 - Little Endian */
2463         uint32_t reserved_0_31         : 32;
2464 #endif /* Word 0 - End */
2465     } s;
2466     struct bdk_pciercx_cfg023_cn81xx
2467     {
2468 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2469         uint32_t lbase                 : 30; /**< [ 31:  2](RO/WRSL) Lower base.  The value is determined by taking the lower 32-bits of PEMRC's BAR4 address
2470                                                                  (PEMRC()_BAR_E::PEMRC()_PF_BAR4) and right-shifting by two bits.  This field is writable
2471                                                                  through PEM()_CFG_WR. However, the application must not change this field. */
2472         uint32_t size                  : 1;  /**< [  1:  1](RO/WRSL) Size - 64-bit (1), 32-bit (0).  This field is writable through PEM()_CFG_WR. However, the
2473                                                                  application must not change this field. */
2474         uint32_t ea_rsvd               : 1;  /**< [  0:  0](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2475                                                                  not change this field. */
2476 #else /* Word 0 - Little Endian */
2477         uint32_t ea_rsvd               : 1;  /**< [  0:  0](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2478                                                                  not change this field. */
2479         uint32_t size                  : 1;  /**< [  1:  1](RO/WRSL) Size - 64-bit (1), 32-bit (0).  This field is writable through PEM()_CFG_WR. However, the
2480                                                                  application must not change this field. */
2481         uint32_t lbase                 : 30; /**< [ 31:  2](RO/WRSL) Lower base.  The value is determined by taking the lower 32-bits of PEMRC's BAR4 address
2482                                                                  (PEMRC()_BAR_E::PEMRC()_PF_BAR4) and right-shifting by two bits.  This field is writable
2483                                                                  through PEM()_CFG_WR. However, the application must not change this field. */
2484 #endif /* Word 0 - End */
2485     } cn81xx;
2486     struct bdk_pciercx_cfg023_cn88xx
2487     {
2488 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2489         uint32_t reserved_16_31        : 16;
2490         uint32_t msimd                 : 16; /**< [ 15:  0](R/W) MSI data. Pattern assigned by system software. Bits [4:0] are ORed with MSI_VECTOR to
2491                                                                  generate 32 MSI messages per function. */
2492 #else /* Word 0 - Little Endian */
2493         uint32_t msimd                 : 16; /**< [ 15:  0](R/W) MSI data. Pattern assigned by system software. Bits [4:0] are ORed with MSI_VECTOR to
2494                                                                  generate 32 MSI messages per function. */
2495         uint32_t reserved_16_31        : 16;
2496 #endif /* Word 0 - End */
2497     } cn88xx;
2498     /* struct bdk_pciercx_cfg023_cn81xx cn83xx; */
2499 };
2500 typedef union bdk_pciercx_cfg023 bdk_pciercx_cfg023_t;
2501 
2502 static inline uint64_t BDK_PCIERCX_CFG023(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG023(unsigned long a)2503 static inline uint64_t BDK_PCIERCX_CFG023(unsigned long a)
2504 {
2505     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2506         return 0x2000000005cll + 0x100000000ll * ((a) & 0x3);
2507     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2508         return 0x2000000005cll + 0x100000000ll * ((a) & 0x3);
2509     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2510         return 0x2000000005cll + 0x100000000ll * ((a) & 0x7);
2511     __bdk_csr_fatal("PCIERCX_CFG023", 1, a, 0, 0, 0);
2512 }
2513 
2514 #define typedef_BDK_PCIERCX_CFG023(a) bdk_pciercx_cfg023_t
2515 #define bustype_BDK_PCIERCX_CFG023(a) BDK_CSR_TYPE_PCICONFIGRC
2516 #define basename_BDK_PCIERCX_CFG023(a) "PCIERCX_CFG023"
2517 #define busnum_BDK_PCIERCX_CFG023(a) (a)
2518 #define arguments_BDK_PCIERCX_CFG023(a) (a),-1,-1,-1
2519 
2520 /**
2521  * Register (PCICONFIGRC) pcierc#_cfg024
2522  *
2523  * PCIe RC Enhanced Allocation Entry 0 Max Offset Register
2524  * This register contains the twenty-fifth 32-bits of PCIe type 1 configuration space.
2525  */
2526 union bdk_pciercx_cfg024
2527 {
2528     uint32_t u;
2529     struct bdk_pciercx_cfg024_s
2530     {
2531 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2532         uint32_t moffs                 : 30; /**< [ 31:  2](RO/WRSL) Lower base.  This field is writable through PEM()_CFG_WR. However, the application must
2533                                                                  not change this field.
2534 
2535                                                                  Internal:
2536                                                                  This is the offset to cover PEMRC BAR4 0xfffff & 0xffffc \>\>2 */
2537         uint32_t size                  : 1;  /**< [  1:  1](RO/WRSL) Size - 64-bit (1), 32-bit (0).  This field is writable through PEM()_CFG_WR. However, the
2538                                                                  application must not change this field. */
2539         uint32_t ea_rsvd               : 1;  /**< [  0:  0](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2540                                                                  not change this field. */
2541 #else /* Word 0 - Little Endian */
2542         uint32_t ea_rsvd               : 1;  /**< [  0:  0](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
2543                                                                  not change this field. */
2544         uint32_t size                  : 1;  /**< [  1:  1](RO/WRSL) Size - 64-bit (1), 32-bit (0).  This field is writable through PEM()_CFG_WR. However, the
2545                                                                  application must not change this field. */
2546         uint32_t moffs                 : 30; /**< [ 31:  2](RO/WRSL) Lower base.  This field is writable through PEM()_CFG_WR. However, the application must
2547                                                                  not change this field.
2548 
2549                                                                  Internal:
2550                                                                  This is the offset to cover PEMRC BAR4 0xfffff & 0xffffc \>\>2 */
2551 #endif /* Word 0 - End */
2552     } s;
2553     /* struct bdk_pciercx_cfg024_s cn; */
2554 };
2555 typedef union bdk_pciercx_cfg024 bdk_pciercx_cfg024_t;
2556 
2557 static inline uint64_t BDK_PCIERCX_CFG024(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG024(unsigned long a)2558 static inline uint64_t BDK_PCIERCX_CFG024(unsigned long a)
2559 {
2560     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2561         return 0x20000000060ll + 0x100000000ll * ((a) & 0x3);
2562     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2563         return 0x20000000060ll + 0x100000000ll * ((a) & 0x3);
2564     __bdk_csr_fatal("PCIERCX_CFG024", 1, a, 0, 0, 0);
2565 }
2566 
2567 #define typedef_BDK_PCIERCX_CFG024(a) bdk_pciercx_cfg024_t
2568 #define bustype_BDK_PCIERCX_CFG024(a) BDK_CSR_TYPE_PCICONFIGRC
2569 #define basename_BDK_PCIERCX_CFG024(a) "PCIERCX_CFG024"
2570 #define busnum_BDK_PCIERCX_CFG024(a) (a)
2571 #define arguments_BDK_PCIERCX_CFG024(a) (a),-1,-1,-1
2572 
2573 /**
2574  * Register (PCICONFIGRC) pcierc#_cfg025
2575  *
2576  * PCIe RC Enhanced Allocation Entry 0 Upper Base Register
2577  * This register contains the twenty-sixth 32-bits of PCIe type 1 configuration space.
2578  */
2579 union bdk_pciercx_cfg025
2580 {
2581     uint32_t u;
2582     struct bdk_pciercx_cfg025_s
2583     {
2584 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2585         uint32_t ubase                 : 32; /**< [ 31:  0](RO/WRSL) Upper base.  This field is writable through PEM()_CFG_WR. However, the application must
2586                                                                  not change this field.
2587 
2588                                                                  Internal:
2589                                                                  This is the upper 32 bits of PEM_BAR_E::PEM()_PF_BAR0 */
2590 #else /* Word 0 - Little Endian */
2591         uint32_t ubase                 : 32; /**< [ 31:  0](RO/WRSL) Upper base.  This field is writable through PEM()_CFG_WR. However, the application must
2592                                                                  not change this field.
2593 
2594                                                                  Internal:
2595                                                                  This is the upper 32 bits of PEM_BAR_E::PEM()_PF_BAR0 */
2596 #endif /* Word 0 - End */
2597     } s;
2598     /* struct bdk_pciercx_cfg025_s cn; */
2599 };
2600 typedef union bdk_pciercx_cfg025 bdk_pciercx_cfg025_t;
2601 
2602 static inline uint64_t BDK_PCIERCX_CFG025(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG025(unsigned long a)2603 static inline uint64_t BDK_PCIERCX_CFG025(unsigned long a)
2604 {
2605     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2606         return 0x20000000064ll + 0x100000000ll * ((a) & 0x3);
2607     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2608         return 0x20000000064ll + 0x100000000ll * ((a) & 0x3);
2609     __bdk_csr_fatal("PCIERCX_CFG025", 1, a, 0, 0, 0);
2610 }
2611 
2612 #define typedef_BDK_PCIERCX_CFG025(a) bdk_pciercx_cfg025_t
2613 #define bustype_BDK_PCIERCX_CFG025(a) BDK_CSR_TYPE_PCICONFIGRC
2614 #define basename_BDK_PCIERCX_CFG025(a) "PCIERCX_CFG025"
2615 #define busnum_BDK_PCIERCX_CFG025(a) (a)
2616 #define arguments_BDK_PCIERCX_CFG025(a) (a),-1,-1,-1
2617 
2618 /**
2619  * Register (PCICONFIGRC) pcierc#_cfg028
2620  *
2621  * PCIe RC PCIe Capabilities/PCIe Capabilities List Register
2622  * This register contains the twenty-ninth 32-bits of PCIe type 1 configuration space.
2623  */
2624 union bdk_pciercx_cfg028
2625 {
2626     uint32_t u;
2627     struct bdk_pciercx_cfg028_s
2628     {
2629 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2630         uint32_t reserved_30_31        : 2;
2631         uint32_t imn                   : 5;  /**< [ 29: 25](RO/WRSL) Interrupt message number. Updated by hardware, writable through
2632                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2633         uint32_t si                    : 1;  /**< [ 24: 24](RO/WRSL) Slot implemented. This bit is writable through PEM()_CFG_WR. */
2634         uint32_t dpt                   : 4;  /**< [ 23: 20](RO) Device port type. */
2635         uint32_t pciecv                : 4;  /**< [ 19: 16](RO) PCI Express capability version. */
2636         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the MSI-X capability by default, writable through
2637                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2638         uint32_t pcieid                : 8;  /**< [  7:  0](RO) PCI Express capability ID. */
2639 #else /* Word 0 - Little Endian */
2640         uint32_t pcieid                : 8;  /**< [  7:  0](RO) PCI Express capability ID. */
2641         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the MSI-X capability by default, writable through
2642                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2643         uint32_t pciecv                : 4;  /**< [ 19: 16](RO) PCI Express capability version. */
2644         uint32_t dpt                   : 4;  /**< [ 23: 20](RO) Device port type. */
2645         uint32_t si                    : 1;  /**< [ 24: 24](RO/WRSL) Slot implemented. This bit is writable through PEM()_CFG_WR. */
2646         uint32_t imn                   : 5;  /**< [ 29: 25](RO/WRSL) Interrupt message number. Updated by hardware, writable through
2647                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2648         uint32_t reserved_30_31        : 2;
2649 #endif /* Word 0 - End */
2650     } s;
2651     /* struct bdk_pciercx_cfg028_s cn; */
2652 };
2653 typedef union bdk_pciercx_cfg028 bdk_pciercx_cfg028_t;
2654 
2655 static inline uint64_t BDK_PCIERCX_CFG028(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG028(unsigned long a)2656 static inline uint64_t BDK_PCIERCX_CFG028(unsigned long a)
2657 {
2658     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2659         return 0x20000000070ll + 0x100000000ll * ((a) & 0x3);
2660     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2661         return 0x20000000070ll + 0x100000000ll * ((a) & 0x3);
2662     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2663         return 0x20000000070ll + 0x100000000ll * ((a) & 0x7);
2664     __bdk_csr_fatal("PCIERCX_CFG028", 1, a, 0, 0, 0);
2665 }
2666 
2667 #define typedef_BDK_PCIERCX_CFG028(a) bdk_pciercx_cfg028_t
2668 #define bustype_BDK_PCIERCX_CFG028(a) BDK_CSR_TYPE_PCICONFIGRC
2669 #define basename_BDK_PCIERCX_CFG028(a) "PCIERCX_CFG028"
2670 #define busnum_BDK_PCIERCX_CFG028(a) (a)
2671 #define arguments_BDK_PCIERCX_CFG028(a) (a),-1,-1,-1
2672 
2673 /**
2674  * Register (PCICONFIGRC) pcierc#_cfg029
2675  *
2676  * PCIe RC Device Capabilities Register
2677  * This register contains the thirtieth 32-bits of PCIe type 1 configuration space.
2678  */
2679 union bdk_pciercx_cfg029
2680 {
2681     uint32_t u;
2682     struct bdk_pciercx_cfg029_s
2683     {
2684 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2685         uint32_t reserved_29_31        : 3;
2686         uint32_t flr_cap               : 1;  /**< [ 28: 28](RO) Function level reset capability. This bit applies to endpoints only. */
2687         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
2688         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
2689         uint32_t reserved_16_17        : 2;
2690         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
2691                                                                  must not change this field. */
2692         uint32_t reserved_12_14        : 3;
2693         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2694                                                                  endpoint devices. */
2695         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2696                                                                  endpoint devices. */
2697         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
2698                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2699         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
2700                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
2701                                                                  must not write any value other than 0x0 to this field. */
2702         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
2703                                                                  must not change this field. */
2704 #else /* Word 0 - Little Endian */
2705         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
2706                                                                  must not change this field. */
2707         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
2708                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
2709                                                                  must not write any value other than 0x0 to this field. */
2710         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
2711                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2712         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2713                                                                  endpoint devices. */
2714         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2715                                                                  endpoint devices. */
2716         uint32_t reserved_12_14        : 3;
2717         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
2718                                                                  must not change this field. */
2719         uint32_t reserved_16_17        : 2;
2720         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
2721         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
2722         uint32_t flr_cap               : 1;  /**< [ 28: 28](RO) Function level reset capability. This bit applies to endpoints only. */
2723         uint32_t reserved_29_31        : 3;
2724 #endif /* Word 0 - End */
2725     } s;
2726     struct bdk_pciercx_cfg029_cn81xx
2727     {
2728 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2729         uint32_t reserved_28_31        : 4;
2730         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
2731         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
2732         uint32_t reserved_16_17        : 2;
2733         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
2734                                                                  must not change this field. */
2735         uint32_t reserved_14           : 1;
2736         uint32_t reserved_13           : 1;
2737         uint32_t reserved_12           : 1;
2738         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2739                                                                  endpoint devices. */
2740         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2741                                                                  endpoint devices. */
2742         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
2743                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2744         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
2745                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
2746                                                                  must not write any value other than 0x0 to this field. */
2747         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
2748                                                                  must not change this field. */
2749 #else /* Word 0 - Little Endian */
2750         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
2751                                                                  must not change this field. */
2752         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
2753                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
2754                                                                  must not write any value other than 0x0 to this field. */
2755         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
2756                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2757         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2758                                                                  endpoint devices. */
2759         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2760                                                                  endpoint devices. */
2761         uint32_t reserved_12           : 1;
2762         uint32_t reserved_13           : 1;
2763         uint32_t reserved_14           : 1;
2764         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
2765                                                                  must not change this field. */
2766         uint32_t reserved_16_17        : 2;
2767         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
2768         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
2769         uint32_t reserved_28_31        : 4;
2770 #endif /* Word 0 - End */
2771     } cn81xx;
2772     /* struct bdk_pciercx_cfg029_cn81xx cn88xx; */
2773     struct bdk_pciercx_cfg029_cn83xx
2774     {
2775 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2776         uint32_t reserved_29_31        : 3;
2777         uint32_t flr_cap               : 1;  /**< [ 28: 28](RO) Function level reset capability. This bit applies to endpoints only. */
2778         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
2779         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
2780         uint32_t reserved_16_17        : 2;
2781         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
2782                                                                  must not change this field. */
2783         uint32_t reserved_14           : 1;
2784         uint32_t reserved_13           : 1;
2785         uint32_t reserved_12           : 1;
2786         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2787                                                                  endpoint devices. */
2788         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2789                                                                  endpoint devices. */
2790         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
2791                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2792         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
2793                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
2794                                                                  must not write any value other than 0x0 to this field. */
2795         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
2796                                                                  must not change this field. */
2797 #else /* Word 0 - Little Endian */
2798         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
2799                                                                  must not change this field. */
2800         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
2801                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
2802                                                                  must not write any value other than 0x0 to this field. */
2803         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
2804                                                                  PEM()_CFG_WR. However, the application must not change this field. */
2805         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2806                                                                  endpoint devices. */
2807         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
2808                                                                  endpoint devices. */
2809         uint32_t reserved_12           : 1;
2810         uint32_t reserved_13           : 1;
2811         uint32_t reserved_14           : 1;
2812         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
2813                                                                  must not change this field. */
2814         uint32_t reserved_16_17        : 2;
2815         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
2816         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
2817         uint32_t flr_cap               : 1;  /**< [ 28: 28](RO) Function level reset capability. This bit applies to endpoints only. */
2818         uint32_t reserved_29_31        : 3;
2819 #endif /* Word 0 - End */
2820     } cn83xx;
2821 };
2822 typedef union bdk_pciercx_cfg029 bdk_pciercx_cfg029_t;
2823 
2824 static inline uint64_t BDK_PCIERCX_CFG029(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG029(unsigned long a)2825 static inline uint64_t BDK_PCIERCX_CFG029(unsigned long a)
2826 {
2827     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
2828         return 0x20000000074ll + 0x100000000ll * ((a) & 0x3);
2829     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
2830         return 0x20000000074ll + 0x100000000ll * ((a) & 0x3);
2831     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
2832         return 0x20000000074ll + 0x100000000ll * ((a) & 0x7);
2833     __bdk_csr_fatal("PCIERCX_CFG029", 1, a, 0, 0, 0);
2834 }
2835 
2836 #define typedef_BDK_PCIERCX_CFG029(a) bdk_pciercx_cfg029_t
2837 #define bustype_BDK_PCIERCX_CFG029(a) BDK_CSR_TYPE_PCICONFIGRC
2838 #define basename_BDK_PCIERCX_CFG029(a) "PCIERCX_CFG029"
2839 #define busnum_BDK_PCIERCX_CFG029(a) (a)
2840 #define arguments_BDK_PCIERCX_CFG029(a) (a),-1,-1,-1
2841 
2842 /**
2843  * Register (PCICONFIGRC) pcierc#_cfg030
2844  *
2845  * PCIe RC Device Control/Device Status Register
2846  * This register contains the thirty-first 32-bits of PCIe type 1 configuration space.
2847  */
2848 union bdk_pciercx_cfg030
2849 {
2850     uint32_t u;
2851     struct bdk_pciercx_cfg030_s
2852     {
2853 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2854         uint32_t reserved_22_31        : 10;
2855         uint32_t tp                    : 1;  /**< [ 21: 21](RO) Transaction pending. Hard-wired to 0. */
2856         uint32_t ap_d                  : 1;  /**< [ 20: 20](RO) AUX power detected. Set to 1 if AUX power detected. */
2857         uint32_t ur_d                  : 1;  /**< [ 19: 19](R/W1C/H) Unsupported request detected. Errors are logged in this register regardless of whether or
2858                                                                  not error reporting is enabled in the device control register. UR_D occurs when we receive
2859                                                                  something unsupported. Unsupported requests are nonfatal errors, so UR_D should cause
2860                                                                  NFE_D. Receiving a vendor-defined message should cause an unsupported request. */
2861         uint32_t fe_d                  : 1;  /**< [ 18: 18](R/W1C/H) Fatal error detected. Errors are logged in this register regardless of whether or not
2862                                                                  error reporting is enabled in the device control register. This field is set if we receive
2863                                                                  any of the errors in PCIERC()_CFG066 that has a severity set to fatal. Malformed TLPs
2864                                                                  generally fit into this category. */
2865         uint32_t nfe_d                 : 1;  /**< [ 17: 17](R/W1C/H) Nonfatal error detected. Errors are logged in this register regardless of whether or not
2866                                                                  error reporting is enabled in the device control register. This field is set if we receive
2867                                                                  any of the errors in PCIERC()_CFG066 that has a severity set to Nonfatal and does NOT
2868                                                                  meet Advisory Nonfatal criteria, which most poisoned TLPs should. */
2869         uint32_t ce_d                  : 1;  /**< [ 16: 16](R/W1C/H) Correctable error detected. Errors are logged in this register regardless of whether or
2870                                                                  not error reporting is enabled in the device control register. This field is set if we
2871                                                                  receive any of the errors in PCIERC()_CFG068, for example, a replay timer timeout.
2872                                                                  Also, it can be set if we get any of the errors in PCIERC()_CFG066 that has a severity
2873                                                                  set to nonfatal and meets the advisory nonfatal criteria, which most ECRC errors should. */
2874         uint32_t reserved_15           : 1;
2875         uint32_t mrrs                  : 3;  /**< [ 14: 12](R/W) Max read request size.
2876                                                                  0x0 =128 bytes.
2877                                                                  0x1 = 256 bytes.
2878                                                                  0x2 = 512 bytes.
2879                                                                  0x3 = 1024 bytes.
2880                                                                  0x4 = 2048 bytes.
2881                                                                  0x5 = 4096 bytes. */
2882         uint32_t ns_en                 : 1;  /**< [ 11: 11](R/W) Enable no snoop. */
2883         uint32_t ap_en                 : 1;  /**< [ 10: 10](R/W/H) AUX power PM enable. */
2884         uint32_t pf_en                 : 1;  /**< [  9:  9](R/W/H) Phantom function enable. This bit should never be set; CNXXXX requests never uses phantom
2885                                                                  functions. */
2886         uint32_t etf_en                : 1;  /**< [  8:  8](R/W) Extended tag field enable. Set this bit to enable extended tags. */
2887         uint32_t mps                   : 3;  /**< [  7:  5](R/W) Max payload size. Legal values: 0x0 = 128 B, 0x1 = 256 B.
2888                                                                  Larger sizes are not supported.
2889                                                                  The payload size is the actual number of double-words transferred as indicated
2890                                                                  in the TLP length field and does not take byte enables into account. */
2891         uint32_t ro_en                 : 1;  /**< [  4:  4](R/W) Enable relaxed ordering. */
2892         uint32_t ur_en                 : 1;  /**< [  3:  3](R/W) Unsupported request reporting enable. */
2893         uint32_t fe_en                 : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
2894         uint32_t nfe_en                : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
2895         uint32_t ce_en                 : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
2896 #else /* Word 0 - Little Endian */
2897         uint32_t ce_en                 : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
2898         uint32_t nfe_en                : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
2899         uint32_t fe_en                 : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
2900         uint32_t ur_en                 : 1;  /**< [  3:  3](R/W) Unsupported request reporting enable. */
2901         uint32_t ro_en                 : 1;  /**< [  4:  4](R/W) Enable relaxed ordering. */
2902         uint32_t mps                   : 3;  /**< [  7:  5](R/W) Max payload size. Legal values: 0x0 = 128 B, 0x1 = 256 B.
2903                                                                  Larger sizes are not supported.
2904                                                                  The payload size is the actual number of double-words transferred as indicated
2905                                                                  in the TLP length field and does not take byte enables into account. */
2906         uint32_t etf_en                : 1;  /**< [  8:  8](R/W) Extended tag field enable. Set this bit to enable extended tags. */
2907         uint32_t pf_en                 : 1;  /**< [  9:  9](R/W/H) Phantom function enable. This bit should never be set; CNXXXX requests never uses phantom
2908                                                                  functions. */
2909         uint32_t ap_en                 : 1;  /**< [ 10: 10](R/W/H) AUX power PM enable. */
2910         uint32_t ns_en                 : 1;  /**< [ 11: 11](R/W) Enable no snoop. */
2911         uint32_t mrrs                  : 3;  /**< [ 14: 12](R/W) Max read request size.
2912                                                                  0x0 =128 bytes.
2913                                                                  0x1 = 256 bytes.
2914                                                                  0x2 = 512 bytes.
2915                                                                  0x3 = 1024 bytes.
2916                                                                  0x4 = 2048 bytes.
2917                                                                  0x5 = 4096 bytes. */
2918         uint32_t reserved_15           : 1;
2919         uint32_t ce_d                  : 1;  /**< [ 16: 16](R/W1C/H) Correctable error detected. Errors are logged in this register regardless of whether or
2920                                                                  not error reporting is enabled in the device control register. This field is set if we
2921                                                                  receive any of the errors in PCIERC()_CFG068, for example, a replay timer timeout.
2922                                                                  Also, it can be set if we get any of the errors in PCIERC()_CFG066 that has a severity
2923                                                                  set to nonfatal and meets the advisory nonfatal criteria, which most ECRC errors should. */
2924         uint32_t nfe_d                 : 1;  /**< [ 17: 17](R/W1C/H) Nonfatal error detected. Errors are logged in this register regardless of whether or not
2925                                                                  error reporting is enabled in the device control register. This field is set if we receive
2926                                                                  any of the errors in PCIERC()_CFG066 that has a severity set to Nonfatal and does NOT
2927                                                                  meet Advisory Nonfatal criteria, which most poisoned TLPs should. */
2928         uint32_t fe_d                  : 1;  /**< [ 18: 18](R/W1C/H) Fatal error detected. Errors are logged in this register regardless of whether or not
2929                                                                  error reporting is enabled in the device control register. This field is set if we receive
2930                                                                  any of the errors in PCIERC()_CFG066 that has a severity set to fatal. Malformed TLPs
2931                                                                  generally fit into this category. */
2932         uint32_t ur_d                  : 1;  /**< [ 19: 19](R/W1C/H) Unsupported request detected. Errors are logged in this register regardless of whether or
2933                                                                  not error reporting is enabled in the device control register. UR_D occurs when we receive
2934                                                                  something unsupported. Unsupported requests are nonfatal errors, so UR_D should cause
2935                                                                  NFE_D. Receiving a vendor-defined message should cause an unsupported request. */
2936         uint32_t ap_d                  : 1;  /**< [ 20: 20](RO) AUX power detected. Set to 1 if AUX power detected. */
2937         uint32_t tp                    : 1;  /**< [ 21: 21](RO) Transaction pending. Hard-wired to 0. */
2938         uint32_t reserved_22_31        : 10;
2939 #endif /* Word 0 - End */
2940     } s;
2941     /* struct bdk_pciercx_cfg030_s cn81xx; */
2942     /* struct bdk_pciercx_cfg030_s cn88xx; */
2943     struct bdk_pciercx_cfg030_cn83xx
2944     {
2945 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
2946         uint32_t reserved_22_31        : 10;
2947         uint32_t tp                    : 1;  /**< [ 21: 21](RO) Transaction pending. Hard-wired to 0. */
2948         uint32_t ap_d                  : 1;  /**< [ 20: 20](RO) AUX power detected. Set to 1 if AUX power detected. */
2949         uint32_t ur_d                  : 1;  /**< [ 19: 19](R/W1C/H) Unsupported request detected. Errors are logged in this register regardless of whether or
2950                                                                  not error reporting is enabled in the device control register. UR_D occurs when we receive
2951                                                                  something unsupported. Unsupported requests are nonfatal errors, so UR_D should cause
2952                                                                  NFE_D. Receiving a vendor-defined message should cause an unsupported request. */
2953         uint32_t fe_d                  : 1;  /**< [ 18: 18](R/W1C/H) Fatal error detected. Errors are logged in this register regardless of whether or not
2954                                                                  error reporting is enabled in the device control register. This field is set if we receive
2955                                                                  any of the errors in PCIERC()_CFG066 that has a severity set to fatal. Malformed TLPs
2956                                                                  generally fit into this category. */
2957         uint32_t nfe_d                 : 1;  /**< [ 17: 17](R/W1C/H) Nonfatal error detected. Errors are logged in this register regardless of whether or not
2958                                                                  error reporting is enabled in the device control register. This field is set if we receive
2959                                                                  any of the errors in PCIERC()_CFG066 that has a severity set to Nonfatal and does NOT
2960                                                                  meet Advisory Nonfatal criteria, which most poisoned TLPs should. */
2961         uint32_t ce_d                  : 1;  /**< [ 16: 16](R/W1C/H) Correctable error detected. Errors are logged in this register regardless of whether or
2962                                                                  not error reporting is enabled in the device control register. This field is set if we
2963                                                                  receive any of the errors in PCIERC()_CFG068, for example, a replay timer timeout.
2964                                                                  Also, it can be set if we get any of the errors in PCIERC()_CFG066 that has a severity
2965                                                                  set to nonfatal and meets the advisory nonfatal criteria, which most ECRC errors should. */
2966         uint32_t reserved_15           : 1;
2967         uint32_t mrrs                  : 3;  /**< [ 14: 12](R/W) Max read request size.
2968                                                                  0x0 =128 bytes.
2969                                                                  0x1 = 256 bytes.
2970                                                                  0x2 = 512 bytes.
2971                                                                  0x3 = 1024 bytes.
2972                                                                  0x4 = 2048 bytes.
2973                                                                  0x5 = 4096 bytes.
2974 
2975                                                                  DPI_SLI_PRT()_CFG[MRRS] must be set and properly must not exceed the desired
2976                                                                  max read request size. */
2977         uint32_t ns_en                 : 1;  /**< [ 11: 11](R/W) Enable no snoop. */
2978         uint32_t ap_en                 : 1;  /**< [ 10: 10](RO) AUX power PM enable (Not supported). */
2979         uint32_t pf_en                 : 1;  /**< [  9:  9](R/W/H) Phantom function enable. This bit should never be set; CNXXXX requests never uses phantom
2980                                                                  functions. */
2981         uint32_t etf_en                : 1;  /**< [  8:  8](R/W) Extended tag field enable. Set this bit to enable extended tags. */
2982         uint32_t mps                   : 3;  /**< [  7:  5](R/W) Max payload size. Legal values:
2983                                                                  0x0 = 128 bytes.
2984                                                                  0x1 = 256 bytes.
2985                                                                  0x2 = 512 bytes.
2986                                                                  0x3 = 1024 bytes.
2987                                                                  Larger sizes are not supported by CNXXXX.
2988 
2989                                                                  DPI_SLI_PRT()_CFG[MPS] must be set to the same value as this field for proper
2990                                                                  functionality. */
2991         uint32_t ro_en                 : 1;  /**< [  4:  4](R/W) Enable relaxed ordering. */
2992         uint32_t ur_en                 : 1;  /**< [  3:  3](R/W) Unsupported request reporting enable. */
2993         uint32_t fe_en                 : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
2994         uint32_t nfe_en                : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
2995         uint32_t ce_en                 : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
2996 #else /* Word 0 - Little Endian */
2997         uint32_t ce_en                 : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
2998         uint32_t nfe_en                : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
2999         uint32_t fe_en                 : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
3000         uint32_t ur_en                 : 1;  /**< [  3:  3](R/W) Unsupported request reporting enable. */
3001         uint32_t ro_en                 : 1;  /**< [  4:  4](R/W) Enable relaxed ordering. */
3002         uint32_t mps                   : 3;  /**< [  7:  5](R/W) Max payload size. Legal values:
3003                                                                  0x0 = 128 bytes.
3004                                                                  0x1 = 256 bytes.
3005                                                                  0x2 = 512 bytes.
3006                                                                  0x3 = 1024 bytes.
3007                                                                  Larger sizes are not supported by CNXXXX.
3008 
3009                                                                  DPI_SLI_PRT()_CFG[MPS] must be set to the same value as this field for proper
3010                                                                  functionality. */
3011         uint32_t etf_en                : 1;  /**< [  8:  8](R/W) Extended tag field enable. Set this bit to enable extended tags. */
3012         uint32_t pf_en                 : 1;  /**< [  9:  9](R/W/H) Phantom function enable. This bit should never be set; CNXXXX requests never uses phantom
3013                                                                  functions. */
3014         uint32_t ap_en                 : 1;  /**< [ 10: 10](RO) AUX power PM enable (Not supported). */
3015         uint32_t ns_en                 : 1;  /**< [ 11: 11](R/W) Enable no snoop. */
3016         uint32_t mrrs                  : 3;  /**< [ 14: 12](R/W) Max read request size.
3017                                                                  0x0 =128 bytes.
3018                                                                  0x1 = 256 bytes.
3019                                                                  0x2 = 512 bytes.
3020                                                                  0x3 = 1024 bytes.
3021                                                                  0x4 = 2048 bytes.
3022                                                                  0x5 = 4096 bytes.
3023 
3024                                                                  DPI_SLI_PRT()_CFG[MRRS] must be set and properly must not exceed the desired
3025                                                                  max read request size. */
3026         uint32_t reserved_15           : 1;
3027         uint32_t ce_d                  : 1;  /**< [ 16: 16](R/W1C/H) Correctable error detected. Errors are logged in this register regardless of whether or
3028                                                                  not error reporting is enabled in the device control register. This field is set if we
3029                                                                  receive any of the errors in PCIERC()_CFG068, for example, a replay timer timeout.
3030                                                                  Also, it can be set if we get any of the errors in PCIERC()_CFG066 that has a severity
3031                                                                  set to nonfatal and meets the advisory nonfatal criteria, which most ECRC errors should. */
3032         uint32_t nfe_d                 : 1;  /**< [ 17: 17](R/W1C/H) Nonfatal error detected. Errors are logged in this register regardless of whether or not
3033                                                                  error reporting is enabled in the device control register. This field is set if we receive
3034                                                                  any of the errors in PCIERC()_CFG066 that has a severity set to Nonfatal and does NOT
3035                                                                  meet Advisory Nonfatal criteria, which most poisoned TLPs should. */
3036         uint32_t fe_d                  : 1;  /**< [ 18: 18](R/W1C/H) Fatal error detected. Errors are logged in this register regardless of whether or not
3037                                                                  error reporting is enabled in the device control register. This field is set if we receive
3038                                                                  any of the errors in PCIERC()_CFG066 that has a severity set to fatal. Malformed TLPs
3039                                                                  generally fit into this category. */
3040         uint32_t ur_d                  : 1;  /**< [ 19: 19](R/W1C/H) Unsupported request detected. Errors are logged in this register regardless of whether or
3041                                                                  not error reporting is enabled in the device control register. UR_D occurs when we receive
3042                                                                  something unsupported. Unsupported requests are nonfatal errors, so UR_D should cause
3043                                                                  NFE_D. Receiving a vendor-defined message should cause an unsupported request. */
3044         uint32_t ap_d                  : 1;  /**< [ 20: 20](RO) AUX power detected. Set to 1 if AUX power detected. */
3045         uint32_t tp                    : 1;  /**< [ 21: 21](RO) Transaction pending. Hard-wired to 0. */
3046         uint32_t reserved_22_31        : 10;
3047 #endif /* Word 0 - End */
3048     } cn83xx;
3049 };
3050 typedef union bdk_pciercx_cfg030 bdk_pciercx_cfg030_t;
3051 
3052 static inline uint64_t BDK_PCIERCX_CFG030(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG030(unsigned long a)3053 static inline uint64_t BDK_PCIERCX_CFG030(unsigned long a)
3054 {
3055     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
3056         return 0x20000000078ll + 0x100000000ll * ((a) & 0x3);
3057     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3058         return 0x20000000078ll + 0x100000000ll * ((a) & 0x3);
3059     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
3060         return 0x20000000078ll + 0x100000000ll * ((a) & 0x7);
3061     __bdk_csr_fatal("PCIERCX_CFG030", 1, a, 0, 0, 0);
3062 }
3063 
3064 #define typedef_BDK_PCIERCX_CFG030(a) bdk_pciercx_cfg030_t
3065 #define bustype_BDK_PCIERCX_CFG030(a) BDK_CSR_TYPE_PCICONFIGRC
3066 #define basename_BDK_PCIERCX_CFG030(a) "PCIERCX_CFG030"
3067 #define busnum_BDK_PCIERCX_CFG030(a) (a)
3068 #define arguments_BDK_PCIERCX_CFG030(a) (a),-1,-1,-1
3069 
3070 /**
3071  * Register (PCICONFIGRC) pcierc#_cfg031
3072  *
3073  * PCIe RC Link Capabilities Register
3074  * This register contains the thirty-second 32-bits of PCIe type 1 configuration space.
3075  */
3076 union bdk_pciercx_cfg031
3077 {
3078     uint32_t u;
3079     struct bdk_pciercx_cfg031_s
3080     {
3081 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3082         uint32_t pnum                  : 8;  /**< [ 31: 24](RO/WRSL) Port number, writable through PEM()_CFG_WR. However, the application must not change
3083                                                                  this field. */
3084         uint32_t reserved_23           : 1;
3085         uint32_t aspm                  : 1;  /**< [ 22: 22](RO/WRSL) ASPM optionality compliance. */
3086         uint32_t lbnc                  : 1;  /**< [ 21: 21](RO/WRSL) Link bandwidth notification capability. */
3087         uint32_t dllarc                : 1;  /**< [ 20: 20](RO) Data link layer active reporting capable. Set to 1 for root complex devices and 0 for
3088                                                                  endpoint devices. */
3089         uint32_t sderc                 : 1;  /**< [ 19: 19](RO) Surprise down error reporting capable. Not supported; hardwired to 0. */
3090         uint32_t cpm                   : 1;  /**< [ 18: 18](RO) Clock power management. The default value is the value that software specifies during
3091                                                                  hardware configuration, writable through PEM()_CFG_WR. However, the application must not
3092                                                                  change this field. */
3093         uint32_t l1el                  : 3;  /**< [ 17: 15](RO/WRSL) L1 exit latency. The default value is the value that software specifies during hardware
3094                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
3095                                                                  this field. */
3096         uint32_t l0el                  : 3;  /**< [ 14: 12](RO/WRSL) L0s exit latency. The default value is the value that software specifies during hardware
3097                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
3098                                                                  this field. */
3099         uint32_t aslpms                : 2;  /**< [ 11: 10](RO/WRSL) Active state link PM support. The default value is the value that software specifies
3100                                                                  during hardware configuration, writable through PEM()_CFG_WR. However, the application
3101                                                                  must not change this field. */
3102         uint32_t mlw                   : 6;  /**< [  9:  4](RO/WRSL/H) Maximum link width.
3103                                                                  The reset value of this field is determined by the value read from
3104                                                                  PEM()_CFG[LANES8]. If LANES8 is set the reset value is 0x4, otherwise 0x8.
3105 
3106                                                                  This field is writable through PEM()_CFG_WR. */
3107         uint32_t mls                   : 4;  /**< [  3:  0](RO/WRSL) Maximum link speed. The reset value of this field is controlled by the value read from
3108                                                                  PEM()_CFG[MD].
3109 
3110                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
3111 
3112                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
3113 
3114                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
3115 
3116                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode).
3117 
3118                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change
3119                                                                  this field. */
3120 #else /* Word 0 - Little Endian */
3121         uint32_t mls                   : 4;  /**< [  3:  0](RO/WRSL) Maximum link speed. The reset value of this field is controlled by the value read from
3122                                                                  PEM()_CFG[MD].
3123 
3124                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
3125 
3126                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
3127 
3128                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
3129 
3130                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode).
3131 
3132                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change
3133                                                                  this field. */
3134         uint32_t mlw                   : 6;  /**< [  9:  4](RO/WRSL/H) Maximum link width.
3135                                                                  The reset value of this field is determined by the value read from
3136                                                                  PEM()_CFG[LANES8]. If LANES8 is set the reset value is 0x4, otherwise 0x8.
3137 
3138                                                                  This field is writable through PEM()_CFG_WR. */
3139         uint32_t aslpms                : 2;  /**< [ 11: 10](RO/WRSL) Active state link PM support. The default value is the value that software specifies
3140                                                                  during hardware configuration, writable through PEM()_CFG_WR. However, the application
3141                                                                  must not change this field. */
3142         uint32_t l0el                  : 3;  /**< [ 14: 12](RO/WRSL) L0s exit latency. The default value is the value that software specifies during hardware
3143                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
3144                                                                  this field. */
3145         uint32_t l1el                  : 3;  /**< [ 17: 15](RO/WRSL) L1 exit latency. The default value is the value that software specifies during hardware
3146                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
3147                                                                  this field. */
3148         uint32_t cpm                   : 1;  /**< [ 18: 18](RO) Clock power management. The default value is the value that software specifies during
3149                                                                  hardware configuration, writable through PEM()_CFG_WR. However, the application must not
3150                                                                  change this field. */
3151         uint32_t sderc                 : 1;  /**< [ 19: 19](RO) Surprise down error reporting capable. Not supported; hardwired to 0. */
3152         uint32_t dllarc                : 1;  /**< [ 20: 20](RO) Data link layer active reporting capable. Set to 1 for root complex devices and 0 for
3153                                                                  endpoint devices. */
3154         uint32_t lbnc                  : 1;  /**< [ 21: 21](RO/WRSL) Link bandwidth notification capability. */
3155         uint32_t aspm                  : 1;  /**< [ 22: 22](RO/WRSL) ASPM optionality compliance. */
3156         uint32_t reserved_23           : 1;
3157         uint32_t pnum                  : 8;  /**< [ 31: 24](RO/WRSL) Port number, writable through PEM()_CFG_WR. However, the application must not change
3158                                                                  this field. */
3159 #endif /* Word 0 - End */
3160     } s;
3161     /* struct bdk_pciercx_cfg031_s cn81xx; */
3162     /* struct bdk_pciercx_cfg031_s cn88xx; */
3163     struct bdk_pciercx_cfg031_cn83xx
3164     {
3165 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3166         uint32_t pnum                  : 8;  /**< [ 31: 24](RO/WRSL) Port number, writable through PEM()_CFG_WR. However, the application must not change
3167                                                                  this field. */
3168         uint32_t reserved_23           : 1;
3169         uint32_t aspm                  : 1;  /**< [ 22: 22](RO/WRSL) ASPM optionality compliance. */
3170         uint32_t lbnc                  : 1;  /**< [ 21: 21](RO/WRSL) Link bandwidth notification capability. */
3171         uint32_t dllarc                : 1;  /**< [ 20: 20](RO) Data link layer active reporting capable. Set to 1 for root complex devices and 0 for
3172                                                                  endpoint devices. */
3173         uint32_t sderc                 : 1;  /**< [ 19: 19](RO/WRSL) Surprise down error reporting capable.  Set to 1 for root complex devices and 0 for
3174                                                                  endpoint devices. */
3175         uint32_t cpm                   : 1;  /**< [ 18: 18](RO) Clock power management. The default value is the value that software specifies during
3176                                                                  hardware configuration, writable through PEM()_CFG_WR. However, the application must not
3177                                                                  change this field. */
3178         uint32_t l1el                  : 3;  /**< [ 17: 15](RO/WRSL) L1 exit latency. The default value is the value that software specifies during hardware
3179                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
3180                                                                  this field. */
3181         uint32_t l0el                  : 3;  /**< [ 14: 12](RO/WRSL) L0s exit latency. The default value is the value that software specifies during hardware
3182                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
3183                                                                  this field. */
3184         uint32_t aslpms                : 2;  /**< [ 11: 10](RO/WRSL) Active state link PM support. The default value is the value that software specifies
3185                                                                  during hardware configuration, writable through PEM()_CFG_WR. However, the application
3186                                                                  must not change this field. */
3187         uint32_t mlw                   : 6;  /**< [  9:  4](RO/WRSL/H) Maximum link width.
3188                                                                  The reset value of this field is determined by the value read from
3189                                                                  PEM()_CFG[LANES8]. If LANES8 is set the reset value is 0x8, otherwise 0x4.
3190 
3191                                                                  This field is writable through PEM()_CFG_WR. */
3192         uint32_t mls                   : 4;  /**< [  3:  0](RO/WRSL) Maximum link speed. The reset value of this field is controlled by the value read from
3193                                                                  PEM()_CFG[MD].
3194 
3195                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
3196 
3197                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
3198 
3199                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
3200 
3201                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode).
3202 
3203                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change
3204                                                                  this field. */
3205 #else /* Word 0 - Little Endian */
3206         uint32_t mls                   : 4;  /**< [  3:  0](RO/WRSL) Maximum link speed. The reset value of this field is controlled by the value read from
3207                                                                  PEM()_CFG[MD].
3208 
3209                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
3210 
3211                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
3212 
3213                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
3214 
3215                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode).
3216 
3217                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change
3218                                                                  this field. */
3219         uint32_t mlw                   : 6;  /**< [  9:  4](RO/WRSL/H) Maximum link width.
3220                                                                  The reset value of this field is determined by the value read from
3221                                                                  PEM()_CFG[LANES8]. If LANES8 is set the reset value is 0x8, otherwise 0x4.
3222 
3223                                                                  This field is writable through PEM()_CFG_WR. */
3224         uint32_t aslpms                : 2;  /**< [ 11: 10](RO/WRSL) Active state link PM support. The default value is the value that software specifies
3225                                                                  during hardware configuration, writable through PEM()_CFG_WR. However, the application
3226                                                                  must not change this field. */
3227         uint32_t l0el                  : 3;  /**< [ 14: 12](RO/WRSL) L0s exit latency. The default value is the value that software specifies during hardware
3228                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
3229                                                                  this field. */
3230         uint32_t l1el                  : 3;  /**< [ 17: 15](RO/WRSL) L1 exit latency. The default value is the value that software specifies during hardware
3231                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
3232                                                                  this field. */
3233         uint32_t cpm                   : 1;  /**< [ 18: 18](RO) Clock power management. The default value is the value that software specifies during
3234                                                                  hardware configuration, writable through PEM()_CFG_WR. However, the application must not
3235                                                                  change this field. */
3236         uint32_t sderc                 : 1;  /**< [ 19: 19](RO/WRSL) Surprise down error reporting capable.  Set to 1 for root complex devices and 0 for
3237                                                                  endpoint devices. */
3238         uint32_t dllarc                : 1;  /**< [ 20: 20](RO) Data link layer active reporting capable. Set to 1 for root complex devices and 0 for
3239                                                                  endpoint devices. */
3240         uint32_t lbnc                  : 1;  /**< [ 21: 21](RO/WRSL) Link bandwidth notification capability. */
3241         uint32_t aspm                  : 1;  /**< [ 22: 22](RO/WRSL) ASPM optionality compliance. */
3242         uint32_t reserved_23           : 1;
3243         uint32_t pnum                  : 8;  /**< [ 31: 24](RO/WRSL) Port number, writable through PEM()_CFG_WR. However, the application must not change
3244                                                                  this field. */
3245 #endif /* Word 0 - End */
3246     } cn83xx;
3247 };
3248 typedef union bdk_pciercx_cfg031 bdk_pciercx_cfg031_t;
3249 
3250 static inline uint64_t BDK_PCIERCX_CFG031(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG031(unsigned long a)3251 static inline uint64_t BDK_PCIERCX_CFG031(unsigned long a)
3252 {
3253     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
3254         return 0x2000000007cll + 0x100000000ll * ((a) & 0x3);
3255     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3256         return 0x2000000007cll + 0x100000000ll * ((a) & 0x3);
3257     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
3258         return 0x2000000007cll + 0x100000000ll * ((a) & 0x7);
3259     __bdk_csr_fatal("PCIERCX_CFG031", 1, a, 0, 0, 0);
3260 }
3261 
3262 #define typedef_BDK_PCIERCX_CFG031(a) bdk_pciercx_cfg031_t
3263 #define bustype_BDK_PCIERCX_CFG031(a) BDK_CSR_TYPE_PCICONFIGRC
3264 #define basename_BDK_PCIERCX_CFG031(a) "PCIERCX_CFG031"
3265 #define busnum_BDK_PCIERCX_CFG031(a) (a)
3266 #define arguments_BDK_PCIERCX_CFG031(a) (a),-1,-1,-1
3267 
3268 /**
3269  * Register (PCICONFIGRC) pcierc#_cfg032
3270  *
3271  * PCIe RC Link Control/Link Status Register
3272  * This register contains the thirty-third 32-bits of PCIe type 1 configuration space.
3273  */
3274 union bdk_pciercx_cfg032
3275 {
3276     uint32_t u;
3277     struct bdk_pciercx_cfg032_s
3278     {
3279 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3280         uint32_t lab                   : 1;  /**< [ 31: 31](R/W1C/H) Link autonomous bandwidth status. This bit is set to indicate that hardware has
3281                                                                  autonomously changed link speed or width, without the port transitioning through DL_Down
3282                                                                  status, for reasons other than to attempt to correct unreliable link operation. */
3283         uint32_t lbm                   : 1;  /**< [ 30: 30](R/W1C/H) Link bandwidth management status. This bit is set to indicate either of the following has
3284                                                                  occurred without the port transitioning through DL_DOWN status:
3285 
3286                                                                  * A link retraining has completed following a write of 1b to the retrain link bit.
3287 
3288                                                                  * Hardware has changed the Link speed or width to attempt to correct unreliable link
3289                                                                  operation, either through a LTSSM timeout of higher level process. This bit must be set if
3290                                                                  the physical layer reports a speed or width change was initiated by the downstream
3291                                                                  component that was not indicated as an autonomous change. */
3292         uint32_t dlla                  : 1;  /**< [ 29: 29](RO/H) Data link layer active. */
3293         uint32_t scc                   : 1;  /**< [ 28: 28](RO/WRSL) Slot clock configuration. Indicates that the component uses the same physical reference
3294                                                                  clock that the platform provides on the connector. The default value is the value you
3295                                                                  select during hardware configuration, writable through PEM()_CFG_WR. However, the
3296                                                                  application must not change this field. */
3297         uint32_t lt                    : 1;  /**< [ 27: 27](RO/H) Link training. */
3298         uint32_t reserved_26           : 1;
3299         uint32_t nlw                   : 6;  /**< [ 25: 20](RO/H) Negotiated link width. Set automatically by hardware after link initialization. Value is
3300                                                                  undefined when link is not up. */
3301         uint32_t ls                    : 4;  /**< [ 19: 16](RO/H) Current link speed. The encoded value specifies a bit location in the supported link
3302                                                                  speeds vector (in the link capabilities 2 register) that corresponds to the current link
3303                                                                  speed.
3304                                                                  0x1 = Supported link speeds vector field bit 0.
3305                                                                  0x2 = Supported link speeds vector field bit 1.
3306                                                                  0x3 = Supported link speeds vector field bit 2. */
3307         uint32_t reserved_12_15        : 4;
3308         uint32_t lab_int_enb           : 1;  /**< [ 11: 11](R/W) Link autonomous bandwidth interrupt enable. When set, enables the generation of an
3309                                                                  interrupt to indicate that the link autonomous bandwidth status bit has been set. */
3310         uint32_t lbm_int_enb           : 1;  /**< [ 10: 10](R/W) Link bandwidth management interrupt enable. When set, enables the generation of an
3311                                                                  interrupt to indicate that the link bandwidth management status bit has been set. */
3312         uint32_t hawd                  : 1;  /**< [  9:  9](RO) Hardware autonomous width disable (not supported). */
3313         uint32_t ecpm                  : 1;  /**< [  8:  8](R/W/H) Enable clock power management. Hardwired to 0 if clock power management is disabled in the
3314                                                                  link capabilities register. */
3315         uint32_t es                    : 1;  /**< [  7:  7](R/W) Extended synch. */
3316         uint32_t ccc                   : 1;  /**< [  6:  6](R/W) Common clock configuration. */
3317         uint32_t rl                    : 1;  /**< [  5:  5](R/W/H) Retrain link.
3318                                                                  As per the PCIe specification this bit always reads as zero. */
3319         uint32_t ld                    : 1;  /**< [  4:  4](R/W) Link disable. */
3320         uint32_t rcb                   : 1;  /**< [  3:  3](RO/WRSL) Read completion boundary (RCB), writable through
3321                                                                  PEM()_CFG_WR. However, the application must not change this field because an RCB of 64
3322                                                                  bytes is not supported. */
3323         uint32_t reserved_2            : 1;
3324         uint32_t aslpc                 : 2;  /**< [  1:  0](R/W) Active state link PM control. */
3325 #else /* Word 0 - Little Endian */
3326         uint32_t aslpc                 : 2;  /**< [  1:  0](R/W) Active state link PM control. */
3327         uint32_t reserved_2            : 1;
3328         uint32_t rcb                   : 1;  /**< [  3:  3](RO/WRSL) Read completion boundary (RCB), writable through
3329                                                                  PEM()_CFG_WR. However, the application must not change this field because an RCB of 64
3330                                                                  bytes is not supported. */
3331         uint32_t ld                    : 1;  /**< [  4:  4](R/W) Link disable. */
3332         uint32_t rl                    : 1;  /**< [  5:  5](R/W/H) Retrain link.
3333                                                                  As per the PCIe specification this bit always reads as zero. */
3334         uint32_t ccc                   : 1;  /**< [  6:  6](R/W) Common clock configuration. */
3335         uint32_t es                    : 1;  /**< [  7:  7](R/W) Extended synch. */
3336         uint32_t ecpm                  : 1;  /**< [  8:  8](R/W/H) Enable clock power management. Hardwired to 0 if clock power management is disabled in the
3337                                                                  link capabilities register. */
3338         uint32_t hawd                  : 1;  /**< [  9:  9](RO) Hardware autonomous width disable (not supported). */
3339         uint32_t lbm_int_enb           : 1;  /**< [ 10: 10](R/W) Link bandwidth management interrupt enable. When set, enables the generation of an
3340                                                                  interrupt to indicate that the link bandwidth management status bit has been set. */
3341         uint32_t lab_int_enb           : 1;  /**< [ 11: 11](R/W) Link autonomous bandwidth interrupt enable. When set, enables the generation of an
3342                                                                  interrupt to indicate that the link autonomous bandwidth status bit has been set. */
3343         uint32_t reserved_12_15        : 4;
3344         uint32_t ls                    : 4;  /**< [ 19: 16](RO/H) Current link speed. The encoded value specifies a bit location in the supported link
3345                                                                  speeds vector (in the link capabilities 2 register) that corresponds to the current link
3346                                                                  speed.
3347                                                                  0x1 = Supported link speeds vector field bit 0.
3348                                                                  0x2 = Supported link speeds vector field bit 1.
3349                                                                  0x3 = Supported link speeds vector field bit 2. */
3350         uint32_t nlw                   : 6;  /**< [ 25: 20](RO/H) Negotiated link width. Set automatically by hardware after link initialization. Value is
3351                                                                  undefined when link is not up. */
3352         uint32_t reserved_26           : 1;
3353         uint32_t lt                    : 1;  /**< [ 27: 27](RO/H) Link training. */
3354         uint32_t scc                   : 1;  /**< [ 28: 28](RO/WRSL) Slot clock configuration. Indicates that the component uses the same physical reference
3355                                                                  clock that the platform provides on the connector. The default value is the value you
3356                                                                  select during hardware configuration, writable through PEM()_CFG_WR. However, the
3357                                                                  application must not change this field. */
3358         uint32_t dlla                  : 1;  /**< [ 29: 29](RO/H) Data link layer active. */
3359         uint32_t lbm                   : 1;  /**< [ 30: 30](R/W1C/H) Link bandwidth management status. This bit is set to indicate either of the following has
3360                                                                  occurred without the port transitioning through DL_DOWN status:
3361 
3362                                                                  * A link retraining has completed following a write of 1b to the retrain link bit.
3363 
3364                                                                  * Hardware has changed the Link speed or width to attempt to correct unreliable link
3365                                                                  operation, either through a LTSSM timeout of higher level process. This bit must be set if
3366                                                                  the physical layer reports a speed or width change was initiated by the downstream
3367                                                                  component that was not indicated as an autonomous change. */
3368         uint32_t lab                   : 1;  /**< [ 31: 31](R/W1C/H) Link autonomous bandwidth status. This bit is set to indicate that hardware has
3369                                                                  autonomously changed link speed or width, without the port transitioning through DL_Down
3370                                                                  status, for reasons other than to attempt to correct unreliable link operation. */
3371 #endif /* Word 0 - End */
3372     } s;
3373     /* struct bdk_pciercx_cfg032_s cn81xx; */
3374     struct bdk_pciercx_cfg032_cn88xx
3375     {
3376 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3377         uint32_t lab                   : 1;  /**< [ 31: 31](R/W1C) Link autonomous bandwidth status. This bit is set to indicate that hardware has
3378                                                                  autonomously changed link speed or width, without the port transitioning through DL_Down
3379                                                                  status, for reasons other than to attempt to correct unreliable link operation. */
3380         uint32_t lbm                   : 1;  /**< [ 30: 30](R/W1C) Link bandwidth management status. This bit is set to indicate either of the following has
3381                                                                  occurred without the port transitioning through DL_DOWN status:
3382 
3383                                                                  * A link retraining has completed following a write of 1b to the retrain link bit.
3384 
3385                                                                  * Hardware has changed the Link speed or width to attempt to correct unreliable link
3386                                                                  operation, either through a LTSSM timeout of higher level process. This bit must be set if
3387                                                                  the physical layer reports a speed or width change was initiated by the downstream
3388                                                                  component that was not indicated as an autonomous change. */
3389         uint32_t dlla                  : 1;  /**< [ 29: 29](RO/H) Data link layer active. */
3390         uint32_t scc                   : 1;  /**< [ 28: 28](RO/WRSL) Slot clock configuration. Indicates that the component uses the same physical reference
3391                                                                  clock that the platform provides on the connector. The default value is the value you
3392                                                                  select during hardware configuration, writable through PEM()_CFG_WR. However, the
3393                                                                  application must not change this field. */
3394         uint32_t lt                    : 1;  /**< [ 27: 27](RO/H) Link training. */
3395         uint32_t reserved_26           : 1;
3396         uint32_t nlw                   : 6;  /**< [ 25: 20](RO/H) Negotiated link width. Set automatically by hardware after link initialization. Value is
3397                                                                  undefined when link is not up. */
3398         uint32_t ls                    : 4;  /**< [ 19: 16](RO/H) Current link speed. The encoded value specifies a bit location in the supported link
3399                                                                  speeds vector (in the link capabilities 2 register) that corresponds to the current link
3400                                                                  speed.
3401                                                                  0x1 = Supported link speeds vector field bit 0.
3402                                                                  0x2 = Supported link speeds vector field bit 1.
3403                                                                  0x3 = Supported link speeds vector field bit 2. */
3404         uint32_t reserved_12_15        : 4;
3405         uint32_t lab_int_enb           : 1;  /**< [ 11: 11](R/W) Link autonomous bandwidth interrupt enable. When set, enables the generation of an
3406                                                                  interrupt to indicate that the link autonomous bandwidth status bit has been set. */
3407         uint32_t lbm_int_enb           : 1;  /**< [ 10: 10](R/W) Link bandwidth management interrupt enable. When set, enables the generation of an
3408                                                                  interrupt to indicate that the link bandwidth management status bit has been set. */
3409         uint32_t hawd                  : 1;  /**< [  9:  9](RO) Hardware autonomous width disable (not supported). */
3410         uint32_t ecpm                  : 1;  /**< [  8:  8](R/W/H) Enable clock power management. Hardwired to 0 if clock power management is disabled in the
3411                                                                  link capabilities register. */
3412         uint32_t es                    : 1;  /**< [  7:  7](R/W) Extended synch. */
3413         uint32_t ccc                   : 1;  /**< [  6:  6](R/W) Common clock configuration. */
3414         uint32_t rl                    : 1;  /**< [  5:  5](WO) Retrain link.
3415                                                                  As per the PCIe specification this bit always reads as zero. */
3416         uint32_t ld                    : 1;  /**< [  4:  4](R/W) Link disable. */
3417         uint32_t rcb                   : 1;  /**< [  3:  3](RO/WRSL) Read completion boundary (RCB), writable through
3418                                                                  PEM()_CFG_WR. However, the application must not change this field because an RCB of 64
3419                                                                  bytes is not supported. */
3420         uint32_t reserved_2            : 1;
3421         uint32_t aslpc                 : 2;  /**< [  1:  0](R/W) Active state link PM control. */
3422 #else /* Word 0 - Little Endian */
3423         uint32_t aslpc                 : 2;  /**< [  1:  0](R/W) Active state link PM control. */
3424         uint32_t reserved_2            : 1;
3425         uint32_t rcb                   : 1;  /**< [  3:  3](RO/WRSL) Read completion boundary (RCB), writable through
3426                                                                  PEM()_CFG_WR. However, the application must not change this field because an RCB of 64
3427                                                                  bytes is not supported. */
3428         uint32_t ld                    : 1;  /**< [  4:  4](R/W) Link disable. */
3429         uint32_t rl                    : 1;  /**< [  5:  5](WO) Retrain link.
3430                                                                  As per the PCIe specification this bit always reads as zero. */
3431         uint32_t ccc                   : 1;  /**< [  6:  6](R/W) Common clock configuration. */
3432         uint32_t es                    : 1;  /**< [  7:  7](R/W) Extended synch. */
3433         uint32_t ecpm                  : 1;  /**< [  8:  8](R/W/H) Enable clock power management. Hardwired to 0 if clock power management is disabled in the
3434                                                                  link capabilities register. */
3435         uint32_t hawd                  : 1;  /**< [  9:  9](RO) Hardware autonomous width disable (not supported). */
3436         uint32_t lbm_int_enb           : 1;  /**< [ 10: 10](R/W) Link bandwidth management interrupt enable. When set, enables the generation of an
3437                                                                  interrupt to indicate that the link bandwidth management status bit has been set. */
3438         uint32_t lab_int_enb           : 1;  /**< [ 11: 11](R/W) Link autonomous bandwidth interrupt enable. When set, enables the generation of an
3439                                                                  interrupt to indicate that the link autonomous bandwidth status bit has been set. */
3440         uint32_t reserved_12_15        : 4;
3441         uint32_t ls                    : 4;  /**< [ 19: 16](RO/H) Current link speed. The encoded value specifies a bit location in the supported link
3442                                                                  speeds vector (in the link capabilities 2 register) that corresponds to the current link
3443                                                                  speed.
3444                                                                  0x1 = Supported link speeds vector field bit 0.
3445                                                                  0x2 = Supported link speeds vector field bit 1.
3446                                                                  0x3 = Supported link speeds vector field bit 2. */
3447         uint32_t nlw                   : 6;  /**< [ 25: 20](RO/H) Negotiated link width. Set automatically by hardware after link initialization. Value is
3448                                                                  undefined when link is not up. */
3449         uint32_t reserved_26           : 1;
3450         uint32_t lt                    : 1;  /**< [ 27: 27](RO/H) Link training. */
3451         uint32_t scc                   : 1;  /**< [ 28: 28](RO/WRSL) Slot clock configuration. Indicates that the component uses the same physical reference
3452                                                                  clock that the platform provides on the connector. The default value is the value you
3453                                                                  select during hardware configuration, writable through PEM()_CFG_WR. However, the
3454                                                                  application must not change this field. */
3455         uint32_t dlla                  : 1;  /**< [ 29: 29](RO/H) Data link layer active. */
3456         uint32_t lbm                   : 1;  /**< [ 30: 30](R/W1C) Link bandwidth management status. This bit is set to indicate either of the following has
3457                                                                  occurred without the port transitioning through DL_DOWN status:
3458 
3459                                                                  * A link retraining has completed following a write of 1b to the retrain link bit.
3460 
3461                                                                  * Hardware has changed the Link speed or width to attempt to correct unreliable link
3462                                                                  operation, either through a LTSSM timeout of higher level process. This bit must be set if
3463                                                                  the physical layer reports a speed or width change was initiated by the downstream
3464                                                                  component that was not indicated as an autonomous change. */
3465         uint32_t lab                   : 1;  /**< [ 31: 31](R/W1C) Link autonomous bandwidth status. This bit is set to indicate that hardware has
3466                                                                  autonomously changed link speed or width, without the port transitioning through DL_Down
3467                                                                  status, for reasons other than to attempt to correct unreliable link operation. */
3468 #endif /* Word 0 - End */
3469     } cn88xx;
3470     struct bdk_pciercx_cfg032_cn83xx
3471     {
3472 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3473         uint32_t lab                   : 1;  /**< [ 31: 31](R/W1C/H) Link autonomous bandwidth status. This bit is set to indicate that hardware has
3474                                                                  autonomously changed link speed or width, without the port transitioning through DL_Down
3475                                                                  status, for reasons other than to attempt to correct unreliable link operation. */
3476         uint32_t lbm                   : 1;  /**< [ 30: 30](R/W1C/H) Link bandwidth management status. This bit is set to indicate either of the following has
3477                                                                  occurred without the port transitioning through DL_DOWN status:
3478 
3479                                                                  * A link retraining has completed following a write of 1b to the retrain link bit.
3480 
3481                                                                  * Hardware has changed the Link speed or width to attempt to correct unreliable link
3482                                                                  operation, either through a LTSSM timeout of higher level process. This bit must be set if
3483                                                                  the physical layer reports a speed or width change was initiated by the downstream
3484                                                                  component that was not indicated as an autonomous change. */
3485         uint32_t dlla                  : 1;  /**< [ 29: 29](RO/H) Data link layer active. */
3486         uint32_t scc                   : 1;  /**< [ 28: 28](RO/WRSL) Slot clock configuration. Indicates that the component uses the same physical reference
3487                                                                  clock that the platform provides on the connector. The default value is the value you
3488                                                                  select during hardware configuration, writable through PEM()_CFG_WR. However, the
3489                                                                  application must not change this field. */
3490         uint32_t lt                    : 1;  /**< [ 27: 27](RO/H) Link training. */
3491         uint32_t reserved_26           : 1;
3492         uint32_t nlw                   : 6;  /**< [ 25: 20](RO/H) Negotiated link width. Set automatically by hardware after link initialization. Value is
3493                                                                  undefined when link is not up. */
3494         uint32_t ls                    : 4;  /**< [ 19: 16](RO/H) Current link speed. The encoded value specifies a bit location in the supported link
3495                                                                  speeds vector (in the link capabilities 2 register) that corresponds to the current link
3496                                                                  speed.
3497                                                                  0x1 = Supported link speeds vector field bit 0.
3498                                                                  0x2 = Supported link speeds vector field bit 1.
3499                                                                  0x3 = Supported link speeds vector field bit 2. */
3500         uint32_t reserved_12_15        : 4;
3501         uint32_t lab_int_enb           : 1;  /**< [ 11: 11](R/W) Link autonomous bandwidth interrupt enable. When set, enables the generation of an
3502                                                                  interrupt to indicate that the link autonomous bandwidth status bit has been set. */
3503         uint32_t lbm_int_enb           : 1;  /**< [ 10: 10](R/W) Link bandwidth management interrupt enable. When set, enables the generation of an
3504                                                                  interrupt to indicate that the link bandwidth management status bit has been set. */
3505         uint32_t hawd                  : 1;  /**< [  9:  9](R/W) Hardware autonomous width disable (not supported). */
3506         uint32_t ecpm                  : 1;  /**< [  8:  8](R/W/H) Enable clock power management. Hardwired to 0 if clock power management is disabled in the
3507                                                                  link capabilities register. */
3508         uint32_t es                    : 1;  /**< [  7:  7](R/W) Extended synch. */
3509         uint32_t ccc                   : 1;  /**< [  6:  6](R/W) Common clock configuration. */
3510         uint32_t rl                    : 1;  /**< [  5:  5](R/W/H) Retrain link.
3511                                                                  As per the PCIe specification this bit always reads as zero. */
3512         uint32_t ld                    : 1;  /**< [  4:  4](R/W) Link disable. */
3513         uint32_t rcb                   : 1;  /**< [  3:  3](RO/WRSL) Read completion boundary (RCB), writable through
3514                                                                  PEM()_CFG_WR. However, the application must not change this field because an RCB of 64
3515                                                                  bytes is not supported. */
3516         uint32_t reserved_2            : 1;
3517         uint32_t aslpc                 : 2;  /**< [  1:  0](R/W) Active state link PM control. */
3518 #else /* Word 0 - Little Endian */
3519         uint32_t aslpc                 : 2;  /**< [  1:  0](R/W) Active state link PM control. */
3520         uint32_t reserved_2            : 1;
3521         uint32_t rcb                   : 1;  /**< [  3:  3](RO/WRSL) Read completion boundary (RCB), writable through
3522                                                                  PEM()_CFG_WR. However, the application must not change this field because an RCB of 64
3523                                                                  bytes is not supported. */
3524         uint32_t ld                    : 1;  /**< [  4:  4](R/W) Link disable. */
3525         uint32_t rl                    : 1;  /**< [  5:  5](R/W/H) Retrain link.
3526                                                                  As per the PCIe specification this bit always reads as zero. */
3527         uint32_t ccc                   : 1;  /**< [  6:  6](R/W) Common clock configuration. */
3528         uint32_t es                    : 1;  /**< [  7:  7](R/W) Extended synch. */
3529         uint32_t ecpm                  : 1;  /**< [  8:  8](R/W/H) Enable clock power management. Hardwired to 0 if clock power management is disabled in the
3530                                                                  link capabilities register. */
3531         uint32_t hawd                  : 1;  /**< [  9:  9](R/W) Hardware autonomous width disable (not supported). */
3532         uint32_t lbm_int_enb           : 1;  /**< [ 10: 10](R/W) Link bandwidth management interrupt enable. When set, enables the generation of an
3533                                                                  interrupt to indicate that the link bandwidth management status bit has been set. */
3534         uint32_t lab_int_enb           : 1;  /**< [ 11: 11](R/W) Link autonomous bandwidth interrupt enable. When set, enables the generation of an
3535                                                                  interrupt to indicate that the link autonomous bandwidth status bit has been set. */
3536         uint32_t reserved_12_15        : 4;
3537         uint32_t ls                    : 4;  /**< [ 19: 16](RO/H) Current link speed. The encoded value specifies a bit location in the supported link
3538                                                                  speeds vector (in the link capabilities 2 register) that corresponds to the current link
3539                                                                  speed.
3540                                                                  0x1 = Supported link speeds vector field bit 0.
3541                                                                  0x2 = Supported link speeds vector field bit 1.
3542                                                                  0x3 = Supported link speeds vector field bit 2. */
3543         uint32_t nlw                   : 6;  /**< [ 25: 20](RO/H) Negotiated link width. Set automatically by hardware after link initialization. Value is
3544                                                                  undefined when link is not up. */
3545         uint32_t reserved_26           : 1;
3546         uint32_t lt                    : 1;  /**< [ 27: 27](RO/H) Link training. */
3547         uint32_t scc                   : 1;  /**< [ 28: 28](RO/WRSL) Slot clock configuration. Indicates that the component uses the same physical reference
3548                                                                  clock that the platform provides on the connector. The default value is the value you
3549                                                                  select during hardware configuration, writable through PEM()_CFG_WR. However, the
3550                                                                  application must not change this field. */
3551         uint32_t dlla                  : 1;  /**< [ 29: 29](RO/H) Data link layer active. */
3552         uint32_t lbm                   : 1;  /**< [ 30: 30](R/W1C/H) Link bandwidth management status. This bit is set to indicate either of the following has
3553                                                                  occurred without the port transitioning through DL_DOWN status:
3554 
3555                                                                  * A link retraining has completed following a write of 1b to the retrain link bit.
3556 
3557                                                                  * Hardware has changed the Link speed or width to attempt to correct unreliable link
3558                                                                  operation, either through a LTSSM timeout of higher level process. This bit must be set if
3559                                                                  the physical layer reports a speed or width change was initiated by the downstream
3560                                                                  component that was not indicated as an autonomous change. */
3561         uint32_t lab                   : 1;  /**< [ 31: 31](R/W1C/H) Link autonomous bandwidth status. This bit is set to indicate that hardware has
3562                                                                  autonomously changed link speed or width, without the port transitioning through DL_Down
3563                                                                  status, for reasons other than to attempt to correct unreliable link operation. */
3564 #endif /* Word 0 - End */
3565     } cn83xx;
3566 };
3567 typedef union bdk_pciercx_cfg032 bdk_pciercx_cfg032_t;
3568 
3569 static inline uint64_t BDK_PCIERCX_CFG032(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG032(unsigned long a)3570 static inline uint64_t BDK_PCIERCX_CFG032(unsigned long a)
3571 {
3572     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
3573         return 0x20000000080ll + 0x100000000ll * ((a) & 0x3);
3574     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3575         return 0x20000000080ll + 0x100000000ll * ((a) & 0x3);
3576     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
3577         return 0x20000000080ll + 0x100000000ll * ((a) & 0x7);
3578     __bdk_csr_fatal("PCIERCX_CFG032", 1, a, 0, 0, 0);
3579 }
3580 
3581 #define typedef_BDK_PCIERCX_CFG032(a) bdk_pciercx_cfg032_t
3582 #define bustype_BDK_PCIERCX_CFG032(a) BDK_CSR_TYPE_PCICONFIGRC
3583 #define basename_BDK_PCIERCX_CFG032(a) "PCIERCX_CFG032"
3584 #define busnum_BDK_PCIERCX_CFG032(a) (a)
3585 #define arguments_BDK_PCIERCX_CFG032(a) (a),-1,-1,-1
3586 
3587 /**
3588  * Register (PCICONFIGRC) pcierc#_cfg033
3589  *
3590  * PCIe RC Slot Capabilities Register
3591  * This register contains the thirty-fourth 32-bits of PCIe type 1 configuration space.
3592  */
3593 union bdk_pciercx_cfg033
3594 {
3595     uint32_t u;
3596     struct bdk_pciercx_cfg033_s
3597     {
3598 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3599         uint32_t ps_num                : 13; /**< [ 31: 19](RO/WRSL) Physical slot number, writable through PEM()_CFG_WR. */
3600         uint32_t nccs                  : 1;  /**< [ 18: 18](RO/WRSL) No command complete support, writable through PEM()_CFG_WR. However, the application
3601                                                                  must not change this field. */
3602         uint32_t emip                  : 1;  /**< [ 17: 17](RO/WRSL) Electromechanical interlock present, writable through PEM()_CFG_WR. However, the
3603                                                                  application must not change this field. */
3604         uint32_t sp_ls                 : 2;  /**< [ 16: 15](RO/WRSL) Slot power limit scale, writable through PEM()_CFG_WR. */
3605         uint32_t sp_lv                 : 8;  /**< [ 14:  7](RO/WRSL) Slot power limit value, writable through PEM()_CFG_WR. */
3606         uint32_t hp_c                  : 1;  /**< [  6:  6](RO/WRSL) Hot plug capable, writable through PEM()_CFG_WR. However, the application must not
3607                                                                  change this field. */
3608         uint32_t hp_s                  : 1;  /**< [  5:  5](RO/WRSL) Hot plug surprise, writable through PEM()_CFG_WR. However, the application must not
3609                                                                  change this field. */
3610         uint32_t pip                   : 1;  /**< [  4:  4](RO/WRSL) Power indicator present, writable through PEM()_CFG_WR. However, the application must
3611                                                                  not change this field. */
3612         uint32_t aip                   : 1;  /**< [  3:  3](RO/WRSL) Attention indicator present, writable through PEM()_CFG_WR. However, the application
3613                                                                  must not change this field. */
3614         uint32_t mrlsp                 : 1;  /**< [  2:  2](RO/WRSL) MRL sensor present, writable through PEM()_CFG_WR. However, the application must not
3615                                                                  change this field. */
3616         uint32_t pcp                   : 1;  /**< [  1:  1](RO/WRSL) Power controller present, writable through PEM()_CFG_WR. However, the application must
3617                                                                  not change this field. */
3618         uint32_t abp                   : 1;  /**< [  0:  0](RO/WRSL) Attention button present, writable through PEM()_CFG_WR. However, the application must
3619                                                                  not change this field. */
3620 #else /* Word 0 - Little Endian */
3621         uint32_t abp                   : 1;  /**< [  0:  0](RO/WRSL) Attention button present, writable through PEM()_CFG_WR. However, the application must
3622                                                                  not change this field. */
3623         uint32_t pcp                   : 1;  /**< [  1:  1](RO/WRSL) Power controller present, writable through PEM()_CFG_WR. However, the application must
3624                                                                  not change this field. */
3625         uint32_t mrlsp                 : 1;  /**< [  2:  2](RO/WRSL) MRL sensor present, writable through PEM()_CFG_WR. However, the application must not
3626                                                                  change this field. */
3627         uint32_t aip                   : 1;  /**< [  3:  3](RO/WRSL) Attention indicator present, writable through PEM()_CFG_WR. However, the application
3628                                                                  must not change this field. */
3629         uint32_t pip                   : 1;  /**< [  4:  4](RO/WRSL) Power indicator present, writable through PEM()_CFG_WR. However, the application must
3630                                                                  not change this field. */
3631         uint32_t hp_s                  : 1;  /**< [  5:  5](RO/WRSL) Hot plug surprise, writable through PEM()_CFG_WR. However, the application must not
3632                                                                  change this field. */
3633         uint32_t hp_c                  : 1;  /**< [  6:  6](RO/WRSL) Hot plug capable, writable through PEM()_CFG_WR. However, the application must not
3634                                                                  change this field. */
3635         uint32_t sp_lv                 : 8;  /**< [ 14:  7](RO/WRSL) Slot power limit value, writable through PEM()_CFG_WR. */
3636         uint32_t sp_ls                 : 2;  /**< [ 16: 15](RO/WRSL) Slot power limit scale, writable through PEM()_CFG_WR. */
3637         uint32_t emip                  : 1;  /**< [ 17: 17](RO/WRSL) Electromechanical interlock present, writable through PEM()_CFG_WR. However, the
3638                                                                  application must not change this field. */
3639         uint32_t nccs                  : 1;  /**< [ 18: 18](RO/WRSL) No command complete support, writable through PEM()_CFG_WR. However, the application
3640                                                                  must not change this field. */
3641         uint32_t ps_num                : 13; /**< [ 31: 19](RO/WRSL) Physical slot number, writable through PEM()_CFG_WR. */
3642 #endif /* Word 0 - End */
3643     } s;
3644     /* struct bdk_pciercx_cfg033_s cn; */
3645 };
3646 typedef union bdk_pciercx_cfg033 bdk_pciercx_cfg033_t;
3647 
3648 static inline uint64_t BDK_PCIERCX_CFG033(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG033(unsigned long a)3649 static inline uint64_t BDK_PCIERCX_CFG033(unsigned long a)
3650 {
3651     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
3652         return 0x20000000084ll + 0x100000000ll * ((a) & 0x3);
3653     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3654         return 0x20000000084ll + 0x100000000ll * ((a) & 0x3);
3655     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
3656         return 0x20000000084ll + 0x100000000ll * ((a) & 0x7);
3657     __bdk_csr_fatal("PCIERCX_CFG033", 1, a, 0, 0, 0);
3658 }
3659 
3660 #define typedef_BDK_PCIERCX_CFG033(a) bdk_pciercx_cfg033_t
3661 #define bustype_BDK_PCIERCX_CFG033(a) BDK_CSR_TYPE_PCICONFIGRC
3662 #define basename_BDK_PCIERCX_CFG033(a) "PCIERCX_CFG033"
3663 #define busnum_BDK_PCIERCX_CFG033(a) (a)
3664 #define arguments_BDK_PCIERCX_CFG033(a) (a),-1,-1,-1
3665 
3666 /**
3667  * Register (PCICONFIGRC) pcierc#_cfg034
3668  *
3669  * PCIe RC Slot Control/Slot Status Register
3670  * This register contains the thirty-fifth 32-bits of PCIe type 1 configuration space.
3671  */
3672 union bdk_pciercx_cfg034
3673 {
3674     uint32_t u;
3675     struct bdk_pciercx_cfg034_s
3676     {
3677 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3678         uint32_t reserved_25_31        : 7;
3679         uint32_t dlls_c                : 1;  /**< [ 24: 24](R/W1C/H) Data link layer state changed. */
3680         uint32_t emis                  : 1;  /**< [ 23: 23](RO) Electromechanical interlock status. */
3681         uint32_t pds                   : 1;  /**< [ 22: 22](RO/H) Presence detect state. */
3682         uint32_t mrlss                 : 1;  /**< [ 21: 21](RO) MRL sensor state. */
3683         uint32_t ccint_d               : 1;  /**< [ 20: 20](R/W1C/H) Command completed. */
3684         uint32_t pd_c                  : 1;  /**< [ 19: 19](R/W1C/H) Presence detect changed. */
3685         uint32_t mrls_c                : 1;  /**< [ 18: 18](R/W1C/H) MRL sensor changed. */
3686         uint32_t pf_d                  : 1;  /**< [ 17: 17](R/W1C/H) Power fault detected. */
3687         uint32_t abp_d                 : 1;  /**< [ 16: 16](R/W1C/H) Attention button pressed. */
3688         uint32_t reserved_13_15        : 3;
3689         uint32_t dlls_en               : 1;  /**< [ 12: 12](R/W) Data link layer state changed enable. */
3690         uint32_t emic                  : 1;  /**< [ 11: 11](WO) Electromechanical interlock control. */
3691         uint32_t pcc                   : 1;  /**< [ 10: 10](R/W) Power controller control. */
3692         uint32_t pic                   : 2;  /**< [  9:  8](R/W) Power indicator control. */
3693         uint32_t aic                   : 2;  /**< [  7:  6](R/W) Attention indicator control. */
3694         uint32_t hpint_en              : 1;  /**< [  5:  5](R/W) Hot-plug interrupt enable. */
3695         uint32_t ccint_en              : 1;  /**< [  4:  4](R/W) Command completed interrupt enable. */
3696         uint32_t pd_en                 : 1;  /**< [  3:  3](R/W) Presence detect changed enable. */
3697         uint32_t mrls_en               : 1;  /**< [  2:  2](R/W) MRL sensor changed enable. */
3698         uint32_t pf_en                 : 1;  /**< [  1:  1](R/W) Power fault detected enable. */
3699         uint32_t abp_en                : 1;  /**< [  0:  0](R/W) Attention button pressed enable. */
3700 #else /* Word 0 - Little Endian */
3701         uint32_t abp_en                : 1;  /**< [  0:  0](R/W) Attention button pressed enable. */
3702         uint32_t pf_en                 : 1;  /**< [  1:  1](R/W) Power fault detected enable. */
3703         uint32_t mrls_en               : 1;  /**< [  2:  2](R/W) MRL sensor changed enable. */
3704         uint32_t pd_en                 : 1;  /**< [  3:  3](R/W) Presence detect changed enable. */
3705         uint32_t ccint_en              : 1;  /**< [  4:  4](R/W) Command completed interrupt enable. */
3706         uint32_t hpint_en              : 1;  /**< [  5:  5](R/W) Hot-plug interrupt enable. */
3707         uint32_t aic                   : 2;  /**< [  7:  6](R/W) Attention indicator control. */
3708         uint32_t pic                   : 2;  /**< [  9:  8](R/W) Power indicator control. */
3709         uint32_t pcc                   : 1;  /**< [ 10: 10](R/W) Power controller control. */
3710         uint32_t emic                  : 1;  /**< [ 11: 11](WO) Electromechanical interlock control. */
3711         uint32_t dlls_en               : 1;  /**< [ 12: 12](R/W) Data link layer state changed enable. */
3712         uint32_t reserved_13_15        : 3;
3713         uint32_t abp_d                 : 1;  /**< [ 16: 16](R/W1C/H) Attention button pressed. */
3714         uint32_t pf_d                  : 1;  /**< [ 17: 17](R/W1C/H) Power fault detected. */
3715         uint32_t mrls_c                : 1;  /**< [ 18: 18](R/W1C/H) MRL sensor changed. */
3716         uint32_t pd_c                  : 1;  /**< [ 19: 19](R/W1C/H) Presence detect changed. */
3717         uint32_t ccint_d               : 1;  /**< [ 20: 20](R/W1C/H) Command completed. */
3718         uint32_t mrlss                 : 1;  /**< [ 21: 21](RO) MRL sensor state. */
3719         uint32_t pds                   : 1;  /**< [ 22: 22](RO/H) Presence detect state. */
3720         uint32_t emis                  : 1;  /**< [ 23: 23](RO) Electromechanical interlock status. */
3721         uint32_t dlls_c                : 1;  /**< [ 24: 24](R/W1C/H) Data link layer state changed. */
3722         uint32_t reserved_25_31        : 7;
3723 #endif /* Word 0 - End */
3724     } s;
3725     /* struct bdk_pciercx_cfg034_s cn81xx; */
3726     struct bdk_pciercx_cfg034_cn88xx
3727     {
3728 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3729         uint32_t reserved_25_31        : 7;
3730         uint32_t dlls_c                : 1;  /**< [ 24: 24](R/W1C/H) Data link layer state changed. */
3731         uint32_t emis                  : 1;  /**< [ 23: 23](RO) Electromechanical interlock status. */
3732         uint32_t pds                   : 1;  /**< [ 22: 22](RO) Presence detect state. */
3733         uint32_t mrlss                 : 1;  /**< [ 21: 21](RO) MRL sensor state. */
3734         uint32_t ccint_d               : 1;  /**< [ 20: 20](R/W1C/H) Command completed. */
3735         uint32_t pd_c                  : 1;  /**< [ 19: 19](R/W1C/H) Presence detect changed. */
3736         uint32_t mrls_c                : 1;  /**< [ 18: 18](R/W1C/H) MRL sensor changed. */
3737         uint32_t pf_d                  : 1;  /**< [ 17: 17](R/W1C/H) Power fault detected. */
3738         uint32_t abp_d                 : 1;  /**< [ 16: 16](R/W1C/H) Attention button pressed. */
3739         uint32_t reserved_13_15        : 3;
3740         uint32_t dlls_en               : 1;  /**< [ 12: 12](R/W) Data link layer state changed enable. */
3741         uint32_t emic                  : 1;  /**< [ 11: 11](WO) Electromechanical interlock control. */
3742         uint32_t pcc                   : 1;  /**< [ 10: 10](R/W) Power controller control. */
3743         uint32_t pic                   : 2;  /**< [  9:  8](R/W) Power indicator control. */
3744         uint32_t aic                   : 2;  /**< [  7:  6](R/W) Attention indicator control. */
3745         uint32_t hpint_en              : 1;  /**< [  5:  5](R/W) Hot-plug interrupt enable. */
3746         uint32_t ccint_en              : 1;  /**< [  4:  4](R/W) Command completed interrupt enable. */
3747         uint32_t pd_en                 : 1;  /**< [  3:  3](R/W) Presence detect changed enable. */
3748         uint32_t mrls_en               : 1;  /**< [  2:  2](R/W) MRL sensor changed enable. */
3749         uint32_t pf_en                 : 1;  /**< [  1:  1](R/W) Power fault detected enable. */
3750         uint32_t abp_en                : 1;  /**< [  0:  0](R/W) Attention button pressed enable. */
3751 #else /* Word 0 - Little Endian */
3752         uint32_t abp_en                : 1;  /**< [  0:  0](R/W) Attention button pressed enable. */
3753         uint32_t pf_en                 : 1;  /**< [  1:  1](R/W) Power fault detected enable. */
3754         uint32_t mrls_en               : 1;  /**< [  2:  2](R/W) MRL sensor changed enable. */
3755         uint32_t pd_en                 : 1;  /**< [  3:  3](R/W) Presence detect changed enable. */
3756         uint32_t ccint_en              : 1;  /**< [  4:  4](R/W) Command completed interrupt enable. */
3757         uint32_t hpint_en              : 1;  /**< [  5:  5](R/W) Hot-plug interrupt enable. */
3758         uint32_t aic                   : 2;  /**< [  7:  6](R/W) Attention indicator control. */
3759         uint32_t pic                   : 2;  /**< [  9:  8](R/W) Power indicator control. */
3760         uint32_t pcc                   : 1;  /**< [ 10: 10](R/W) Power controller control. */
3761         uint32_t emic                  : 1;  /**< [ 11: 11](WO) Electromechanical interlock control. */
3762         uint32_t dlls_en               : 1;  /**< [ 12: 12](R/W) Data link layer state changed enable. */
3763         uint32_t reserved_13_15        : 3;
3764         uint32_t abp_d                 : 1;  /**< [ 16: 16](R/W1C/H) Attention button pressed. */
3765         uint32_t pf_d                  : 1;  /**< [ 17: 17](R/W1C/H) Power fault detected. */
3766         uint32_t mrls_c                : 1;  /**< [ 18: 18](R/W1C/H) MRL sensor changed. */
3767         uint32_t pd_c                  : 1;  /**< [ 19: 19](R/W1C/H) Presence detect changed. */
3768         uint32_t ccint_d               : 1;  /**< [ 20: 20](R/W1C/H) Command completed. */
3769         uint32_t mrlss                 : 1;  /**< [ 21: 21](RO) MRL sensor state. */
3770         uint32_t pds                   : 1;  /**< [ 22: 22](RO) Presence detect state. */
3771         uint32_t emis                  : 1;  /**< [ 23: 23](RO) Electromechanical interlock status. */
3772         uint32_t dlls_c                : 1;  /**< [ 24: 24](R/W1C/H) Data link layer state changed. */
3773         uint32_t reserved_25_31        : 7;
3774 #endif /* Word 0 - End */
3775     } cn88xx;
3776     /* struct bdk_pciercx_cfg034_s cn83xx; */
3777 };
3778 typedef union bdk_pciercx_cfg034 bdk_pciercx_cfg034_t;
3779 
3780 static inline uint64_t BDK_PCIERCX_CFG034(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG034(unsigned long a)3781 static inline uint64_t BDK_PCIERCX_CFG034(unsigned long a)
3782 {
3783     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
3784         return 0x20000000088ll + 0x100000000ll * ((a) & 0x3);
3785     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3786         return 0x20000000088ll + 0x100000000ll * ((a) & 0x3);
3787     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
3788         return 0x20000000088ll + 0x100000000ll * ((a) & 0x7);
3789     __bdk_csr_fatal("PCIERCX_CFG034", 1, a, 0, 0, 0);
3790 }
3791 
3792 #define typedef_BDK_PCIERCX_CFG034(a) bdk_pciercx_cfg034_t
3793 #define bustype_BDK_PCIERCX_CFG034(a) BDK_CSR_TYPE_PCICONFIGRC
3794 #define basename_BDK_PCIERCX_CFG034(a) "PCIERCX_CFG034"
3795 #define busnum_BDK_PCIERCX_CFG034(a) (a)
3796 #define arguments_BDK_PCIERCX_CFG034(a) (a),-1,-1,-1
3797 
3798 /**
3799  * Register (PCICONFIGRC) pcierc#_cfg035
3800  *
3801  * PCIe RC Root Control/Root Capabilities Register
3802  * This register contains the thirty-sixth 32-bits of PCIe type 1 configuration space.
3803  */
3804 union bdk_pciercx_cfg035
3805 {
3806     uint32_t u;
3807     struct bdk_pciercx_cfg035_s
3808     {
3809 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3810         uint32_t reserved_17_31        : 15;
3811         uint32_t crssv                 : 1;  /**< [ 16: 16](RO) CRS software visibility. Not supported, hardwired to 0. */
3812         uint32_t reserved_5_15         : 11;
3813         uint32_t crssve                : 1;  /**< [  4:  4](RO) CRS software visibility enable. Not supported, hardwired to 0. */
3814         uint32_t pmeie                 : 1;  /**< [  3:  3](R/W) PME interrupt enable. */
3815         uint32_t sefee                 : 1;  /**< [  2:  2](R/W) System error on fatal error enable. */
3816         uint32_t senfee                : 1;  /**< [  1:  1](R/W) System error on nonfatal error enable. */
3817         uint32_t secee                 : 1;  /**< [  0:  0](R/W) System error on correctable error enable. */
3818 #else /* Word 0 - Little Endian */
3819         uint32_t secee                 : 1;  /**< [  0:  0](R/W) System error on correctable error enable. */
3820         uint32_t senfee                : 1;  /**< [  1:  1](R/W) System error on nonfatal error enable. */
3821         uint32_t sefee                 : 1;  /**< [  2:  2](R/W) System error on fatal error enable. */
3822         uint32_t pmeie                 : 1;  /**< [  3:  3](R/W) PME interrupt enable. */
3823         uint32_t crssve                : 1;  /**< [  4:  4](RO) CRS software visibility enable. Not supported, hardwired to 0. */
3824         uint32_t reserved_5_15         : 11;
3825         uint32_t crssv                 : 1;  /**< [ 16: 16](RO) CRS software visibility. Not supported, hardwired to 0. */
3826         uint32_t reserved_17_31        : 15;
3827 #endif /* Word 0 - End */
3828     } s;
3829     /* struct bdk_pciercx_cfg035_s cn; */
3830 };
3831 typedef union bdk_pciercx_cfg035 bdk_pciercx_cfg035_t;
3832 
3833 static inline uint64_t BDK_PCIERCX_CFG035(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG035(unsigned long a)3834 static inline uint64_t BDK_PCIERCX_CFG035(unsigned long a)
3835 {
3836     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
3837         return 0x2000000008cll + 0x100000000ll * ((a) & 0x3);
3838     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3839         return 0x2000000008cll + 0x100000000ll * ((a) & 0x3);
3840     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
3841         return 0x2000000008cll + 0x100000000ll * ((a) & 0x7);
3842     __bdk_csr_fatal("PCIERCX_CFG035", 1, a, 0, 0, 0);
3843 }
3844 
3845 #define typedef_BDK_PCIERCX_CFG035(a) bdk_pciercx_cfg035_t
3846 #define bustype_BDK_PCIERCX_CFG035(a) BDK_CSR_TYPE_PCICONFIGRC
3847 #define basename_BDK_PCIERCX_CFG035(a) "PCIERCX_CFG035"
3848 #define busnum_BDK_PCIERCX_CFG035(a) (a)
3849 #define arguments_BDK_PCIERCX_CFG035(a) (a),-1,-1,-1
3850 
3851 /**
3852  * Register (PCICONFIGRC) pcierc#_cfg036
3853  *
3854  * PCIe RC Root Status Register
3855  * This register contains the thirty-seventh 32-bits of PCIe type 1 configuration space.
3856  */
3857 union bdk_pciercx_cfg036
3858 {
3859     uint32_t u;
3860     struct bdk_pciercx_cfg036_s
3861     {
3862 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3863         uint32_t reserved_18_31        : 14;
3864         uint32_t pme_pend              : 1;  /**< [ 17: 17](RO) PME pending. */
3865         uint32_t pme_stat              : 1;  /**< [ 16: 16](R/W1C/H) PME status. */
3866         uint32_t pme_rid               : 16; /**< [ 15:  0](RO) PME requester ID. */
3867 #else /* Word 0 - Little Endian */
3868         uint32_t pme_rid               : 16; /**< [ 15:  0](RO) PME requester ID. */
3869         uint32_t pme_stat              : 1;  /**< [ 16: 16](R/W1C/H) PME status. */
3870         uint32_t pme_pend              : 1;  /**< [ 17: 17](RO) PME pending. */
3871         uint32_t reserved_18_31        : 14;
3872 #endif /* Word 0 - End */
3873     } s;
3874     /* struct bdk_pciercx_cfg036_s cn; */
3875 };
3876 typedef union bdk_pciercx_cfg036 bdk_pciercx_cfg036_t;
3877 
3878 static inline uint64_t BDK_PCIERCX_CFG036(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG036(unsigned long a)3879 static inline uint64_t BDK_PCIERCX_CFG036(unsigned long a)
3880 {
3881     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
3882         return 0x20000000090ll + 0x100000000ll * ((a) & 0x3);
3883     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
3884         return 0x20000000090ll + 0x100000000ll * ((a) & 0x3);
3885     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
3886         return 0x20000000090ll + 0x100000000ll * ((a) & 0x7);
3887     __bdk_csr_fatal("PCIERCX_CFG036", 1, a, 0, 0, 0);
3888 }
3889 
3890 #define typedef_BDK_PCIERCX_CFG036(a) bdk_pciercx_cfg036_t
3891 #define bustype_BDK_PCIERCX_CFG036(a) BDK_CSR_TYPE_PCICONFIGRC
3892 #define basename_BDK_PCIERCX_CFG036(a) "PCIERCX_CFG036"
3893 #define busnum_BDK_PCIERCX_CFG036(a) (a)
3894 #define arguments_BDK_PCIERCX_CFG036(a) (a),-1,-1,-1
3895 
3896 /**
3897  * Register (PCICONFIGRC) pcierc#_cfg037
3898  *
3899  * PCIe RC Device Capabilities 2 Register
3900  * This register contains the thirty-eighth 32-bits of PCIe type 1 configuration space.
3901  */
3902 union bdk_pciercx_cfg037
3903 {
3904     uint32_t u;
3905     struct bdk_pciercx_cfg037_s
3906     {
3907 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3908         uint32_t reserved_24_31        : 8;
3909         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
3910                                                                  0x1 = 1.
3911                                                                  0x2 = 2.
3912                                                                  0x3 = 3.
3913                                                                  0x0 = 4. */
3914         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
3915         uint32_t effs                  : 1;  /**< [ 20: 20](RO) Extended fmt field supported (not supported). */
3916         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
3917         uint32_t tag10b_req_supp       : 1;  /**< [ 17: 17](RO) 10-bit tag requestor supported (not supported). */
3918         uint32_t tag10b_cpl_supp       : 1;  /**< [ 16: 16](RO) 10-bit tag completer supported (not supported). */
3919         uint32_t ln_sys_cls            : 2;  /**< [ 15: 14](RO) LN System CLS (not supported). */
3920         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
3921         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
3922         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
3923                                                                  permitted in the relaxed ordering model. */
3924         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported. */
3925         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported. */
3926         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported. */
3927         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
3928         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
3929         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
3930         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
3931 #else /* Word 0 - Little Endian */
3932         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
3933         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
3934         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
3935         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
3936         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported. */
3937         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported. */
3938         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported. */
3939         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
3940                                                                  permitted in the relaxed ordering model. */
3941         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
3942         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
3943         uint32_t ln_sys_cls            : 2;  /**< [ 15: 14](RO) LN System CLS (not supported). */
3944         uint32_t tag10b_cpl_supp       : 1;  /**< [ 16: 16](RO) 10-bit tag completer supported (not supported). */
3945         uint32_t tag10b_req_supp       : 1;  /**< [ 17: 17](RO) 10-bit tag requestor supported (not supported). */
3946         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
3947         uint32_t effs                  : 1;  /**< [ 20: 20](RO) Extended fmt field supported (not supported). */
3948         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
3949         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
3950                                                                  0x1 = 1.
3951                                                                  0x2 = 2.
3952                                                                  0x3 = 3.
3953                                                                  0x0 = 4. */
3954         uint32_t reserved_24_31        : 8;
3955 #endif /* Word 0 - End */
3956     } s;
3957     struct bdk_pciercx_cfg037_cn88xxp1
3958     {
3959 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
3960         uint32_t reserved_24_31        : 8;
3961         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
3962                                                                  0x1 = 1.
3963                                                                  0x2 = 2.
3964                                                                  0x3 = 3.
3965                                                                  0x0 = 4. */
3966         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
3967         uint32_t effs                  : 1;  /**< [ 20: 20](RO) Extended fmt field supported (not supported). */
3968         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
3969         uint32_t reserved_14_17        : 4;
3970         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
3971         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
3972         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
3973                                                                  permitted in the relaxed ordering model. */
3974         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported (not supported). */
3975         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported. */
3976         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported. */
3977         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
3978         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
3979         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
3980         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
3981 #else /* Word 0 - Little Endian */
3982         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
3983         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
3984         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
3985         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
3986         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported. */
3987         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported. */
3988         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported (not supported). */
3989         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
3990                                                                  permitted in the relaxed ordering model. */
3991         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
3992         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
3993         uint32_t reserved_14_17        : 4;
3994         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
3995         uint32_t effs                  : 1;  /**< [ 20: 20](RO) Extended fmt field supported (not supported). */
3996         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
3997         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
3998                                                                  0x1 = 1.
3999                                                                  0x2 = 2.
4000                                                                  0x3 = 3.
4001                                                                  0x0 = 4. */
4002         uint32_t reserved_24_31        : 8;
4003 #endif /* Word 0 - End */
4004     } cn88xxp1;
4005     struct bdk_pciercx_cfg037_cn81xx
4006     {
4007 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4008         uint32_t reserved_24_31        : 8;
4009         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
4010                                                                  0x1 = 1.
4011                                                                  0x2 = 2.
4012                                                                  0x3 = 3.
4013                                                                  0x0 = 4. */
4014         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
4015         uint32_t effs                  : 1;  /**< [ 20: 20](RO) Extended fmt field supported (not supported). */
4016         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
4017         uint32_t reserved_14_17        : 4;
4018         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
4019         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
4020         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
4021                                                                  permitted in the relaxed ordering model. */
4022         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported. */
4023         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported. */
4024         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported. */
4025         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
4026         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
4027         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
4028         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
4029 #else /* Word 0 - Little Endian */
4030         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
4031         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
4032         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
4033         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
4034         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported. */
4035         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported. */
4036         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported. */
4037         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
4038                                                                  permitted in the relaxed ordering model. */
4039         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
4040         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
4041         uint32_t reserved_14_17        : 4;
4042         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
4043         uint32_t effs                  : 1;  /**< [ 20: 20](RO) Extended fmt field supported (not supported). */
4044         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
4045         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
4046                                                                  0x1 = 1.
4047                                                                  0x2 = 2.
4048                                                                  0x3 = 3.
4049                                                                  0x0 = 4. */
4050         uint32_t reserved_24_31        : 8;
4051 #endif /* Word 0 - End */
4052     } cn81xx;
4053     struct bdk_pciercx_cfg037_cn83xx
4054     {
4055 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4056         uint32_t reserved_24_31        : 8;
4057         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
4058                                                                  0x1 = 1.
4059                                                                  0x2 = 2.
4060                                                                  0x3 = 3.
4061                                                                  0x0 = 4. */
4062         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
4063         uint32_t effs                  : 1;  /**< [ 20: 20](RO/WRSL) Extended fmt field supported (not supported). */
4064         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
4065         uint32_t tag10b_req_supp       : 1;  /**< [ 17: 17](RO) 10-bit tag requestor supported (not supported). */
4066         uint32_t tag10b_cpl_supp       : 1;  /**< [ 16: 16](RO) 10-bit tag completer supported (not supported). */
4067         uint32_t ln_sys_cls            : 2;  /**< [ 15: 14](RO) LN System CLS (not supported). */
4068         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
4069         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
4070         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
4071                                                                  permitted in the relaxed ordering model. */
4072         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported.
4073                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
4074                                                                  unsupported request. */
4075         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported.
4076                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
4077                                                                  unsupported request. */
4078         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported.
4079                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
4080                                                                  unsupported request. */
4081         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
4082         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
4083         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
4084         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
4085 #else /* Word 0 - Little Endian */
4086         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
4087         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
4088         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
4089         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
4090         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported.
4091                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
4092                                                                  unsupported request. */
4093         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported.
4094                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
4095                                                                  unsupported request. */
4096         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported.
4097                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
4098                                                                  unsupported request. */
4099         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
4100                                                                  permitted in the relaxed ordering model. */
4101         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
4102         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
4103         uint32_t ln_sys_cls            : 2;  /**< [ 15: 14](RO) LN System CLS (not supported). */
4104         uint32_t tag10b_cpl_supp       : 1;  /**< [ 16: 16](RO) 10-bit tag completer supported (not supported). */
4105         uint32_t tag10b_req_supp       : 1;  /**< [ 17: 17](RO) 10-bit tag requestor supported (not supported). */
4106         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
4107         uint32_t effs                  : 1;  /**< [ 20: 20](RO/WRSL) Extended fmt field supported (not supported). */
4108         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
4109         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
4110                                                                  0x1 = 1.
4111                                                                  0x2 = 2.
4112                                                                  0x3 = 3.
4113                                                                  0x0 = 4. */
4114         uint32_t reserved_24_31        : 8;
4115 #endif /* Word 0 - End */
4116     } cn83xx;
4117     struct bdk_pciercx_cfg037_cn88xxp2
4118     {
4119 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4120         uint32_t reserved_24_31        : 8;
4121         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
4122                                                                  0x1 = 1.
4123                                                                  0x2 = 2.
4124                                                                  0x3 = 3.
4125                                                                  0x0 = 4. */
4126         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
4127         uint32_t effs                  : 1;  /**< [ 20: 20](RO/WRSL) Extended fmt field supported.  Writable through PEM()_CFG_WR.  However,
4128                                                                  the application must not change this field. */
4129         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
4130         uint32_t reserved_14_17        : 4;
4131         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
4132         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
4133         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
4134                                                                  permitted in the relaxed ordering model. */
4135         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported. */
4136         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported. */
4137         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported. */
4138         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
4139         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
4140         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
4141         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
4142 #else /* Word 0 - Little Endian */
4143         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
4144         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
4145         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
4146         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
4147         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported. */
4148         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported. */
4149         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported. */
4150         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
4151                                                                  permitted in the relaxed ordering model. */
4152         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported (not supported). */
4153         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported (not supported). */
4154         uint32_t reserved_14_17        : 4;
4155         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported (not supported). */
4156         uint32_t effs                  : 1;  /**< [ 20: 20](RO/WRSL) Extended fmt field supported.  Writable through PEM()_CFG_WR.  However,
4157                                                                  the application must not change this field. */
4158         uint32_t eetps                 : 1;  /**< [ 21: 21](RO) End-end TLP prefix supported (not supported). */
4159         uint32_t meetp                 : 2;  /**< [ 23: 22](RO) Max end-end TLP prefixes.
4160                                                                  0x1 = 1.
4161                                                                  0x2 = 2.
4162                                                                  0x3 = 3.
4163                                                                  0x0 = 4. */
4164         uint32_t reserved_24_31        : 8;
4165 #endif /* Word 0 - End */
4166     } cn88xxp2;
4167 };
4168 typedef union bdk_pciercx_cfg037 bdk_pciercx_cfg037_t;
4169 
4170 static inline uint64_t BDK_PCIERCX_CFG037(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG037(unsigned long a)4171 static inline uint64_t BDK_PCIERCX_CFG037(unsigned long a)
4172 {
4173     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
4174         return 0x20000000094ll + 0x100000000ll * ((a) & 0x3);
4175     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
4176         return 0x20000000094ll + 0x100000000ll * ((a) & 0x3);
4177     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
4178         return 0x20000000094ll + 0x100000000ll * ((a) & 0x7);
4179     __bdk_csr_fatal("PCIERCX_CFG037", 1, a, 0, 0, 0);
4180 }
4181 
4182 #define typedef_BDK_PCIERCX_CFG037(a) bdk_pciercx_cfg037_t
4183 #define bustype_BDK_PCIERCX_CFG037(a) BDK_CSR_TYPE_PCICONFIGRC
4184 #define basename_BDK_PCIERCX_CFG037(a) "PCIERCX_CFG037"
4185 #define busnum_BDK_PCIERCX_CFG037(a) (a)
4186 #define arguments_BDK_PCIERCX_CFG037(a) (a),-1,-1,-1
4187 
4188 /**
4189  * Register (PCICONFIGRC) pcierc#_cfg038
4190  *
4191  * PCIe RC Device Control 2 Register/Device Status 2 Register
4192  * This register contains the thirty-ninth 32-bits of PCIe type 1 configuration space.
4193  */
4194 union bdk_pciercx_cfg038
4195 {
4196     uint32_t u;
4197     struct bdk_pciercx_cfg038_s
4198     {
4199 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4200         uint32_t reserved_16_31        : 16;
4201         uint32_t eetpb                 : 1;  /**< [ 15: 15](RO) Unsupported end-end TLP prefix blocking. */
4202         uint32_t obffe                 : 2;  /**< [ 14: 13](RO) Optimized buffer flush fill (OBFF) enable (not supported). */
4203         uint32_t reserved_12           : 1;
4204         uint32_t tag10b_req_en         : 1;  /**< [ 11: 11](RO) 10-bit tag requestoer enable (not supported). */
4205         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
4206         uint32_t id0_cp                : 1;  /**< [  9:  9](RO) ID based ordering completion enable (not supported). */
4207         uint32_t id0_rq                : 1;  /**< [  8:  8](RO) ID based ordering request enable (not supported). */
4208         uint32_t atom_op_eb            : 1;  /**< [  7:  7](RO) AtomicOp egress blocking (not supported). */
4209         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
4210         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
4211         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
4212         uint32_t ctv                   : 4;  /**< [  3:  0](R/W) Completion timeout value.
4213                                                                  0x0 = Default range: 50 us to 50 ms.
4214                                                                  0x1 = 50 us to 100 us.
4215                                                                  0x2 = 1 ms to 10 ms.
4216                                                                  0x5 = 16 ms to 55 ms.
4217                                                                  0x6 = 65 ms to 210 ms.
4218                                                                  0x9 = 260 ms to 900 ms.
4219                                                                  0xA = 1 s to 3.5 s.
4220                                                                  0xD = 4 s to 13 s.
4221                                                                  0xE = 17 s to 64 s.
4222 
4223                                                                  Values not defined are reserved. */
4224 #else /* Word 0 - Little Endian */
4225         uint32_t ctv                   : 4;  /**< [  3:  0](R/W) Completion timeout value.
4226                                                                  0x0 = Default range: 50 us to 50 ms.
4227                                                                  0x1 = 50 us to 100 us.
4228                                                                  0x2 = 1 ms to 10 ms.
4229                                                                  0x5 = 16 ms to 55 ms.
4230                                                                  0x6 = 65 ms to 210 ms.
4231                                                                  0x9 = 260 ms to 900 ms.
4232                                                                  0xA = 1 s to 3.5 s.
4233                                                                  0xD = 4 s to 13 s.
4234                                                                  0xE = 17 s to 64 s.
4235 
4236                                                                  Values not defined are reserved. */
4237         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
4238         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
4239         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
4240         uint32_t atom_op_eb            : 1;  /**< [  7:  7](RO) AtomicOp egress blocking (not supported). */
4241         uint32_t id0_rq                : 1;  /**< [  8:  8](RO) ID based ordering request enable (not supported). */
4242         uint32_t id0_cp                : 1;  /**< [  9:  9](RO) ID based ordering completion enable (not supported). */
4243         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
4244         uint32_t tag10b_req_en         : 1;  /**< [ 11: 11](RO) 10-bit tag requestoer enable (not supported). */
4245         uint32_t reserved_12           : 1;
4246         uint32_t obffe                 : 2;  /**< [ 14: 13](RO) Optimized buffer flush fill (OBFF) enable (not supported). */
4247         uint32_t eetpb                 : 1;  /**< [ 15: 15](RO) Unsupported end-end TLP prefix blocking. */
4248         uint32_t reserved_16_31        : 16;
4249 #endif /* Word 0 - End */
4250     } s;
4251     struct bdk_pciercx_cfg038_cn81xx
4252     {
4253 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4254         uint32_t reserved_16_31        : 16;
4255         uint32_t eetpb                 : 1;  /**< [ 15: 15](RO) Unsupported end-end TLP prefix blocking. */
4256         uint32_t obffe                 : 2;  /**< [ 14: 13](RO) Optimized buffer flush fill (OBFF) enable (not supported). */
4257         uint32_t reserved_11_12        : 2;
4258         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
4259         uint32_t id0_cp                : 1;  /**< [  9:  9](RO) ID based ordering completion enable (not supported). */
4260         uint32_t id0_rq                : 1;  /**< [  8:  8](RO) ID based ordering request enable (not supported). */
4261         uint32_t atom_op_eb            : 1;  /**< [  7:  7](RO) AtomicOp egress blocking (not supported). */
4262         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
4263         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
4264         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
4265         uint32_t ctv                   : 4;  /**< [  3:  0](R/W) Completion timeout value.
4266                                                                  0x0 = Default range: 50 us to 50 ms.
4267                                                                  0x1 = 50 us to 100 us.
4268                                                                  0x2 = 1 ms to 10 ms.
4269                                                                  0x5 = 16 ms to 55 ms.
4270                                                                  0x6 = 65 ms to 210 ms.
4271                                                                  0x9 = 260 ms to 900 ms.
4272                                                                  0xA = 1 s to 3.5 s.
4273                                                                  0xD = 4 s to 13 s.
4274                                                                  0xE = 17 s to 64 s.
4275 
4276                                                                  Values not defined are reserved. */
4277 #else /* Word 0 - Little Endian */
4278         uint32_t ctv                   : 4;  /**< [  3:  0](R/W) Completion timeout value.
4279                                                                  0x0 = Default range: 50 us to 50 ms.
4280                                                                  0x1 = 50 us to 100 us.
4281                                                                  0x2 = 1 ms to 10 ms.
4282                                                                  0x5 = 16 ms to 55 ms.
4283                                                                  0x6 = 65 ms to 210 ms.
4284                                                                  0x9 = 260 ms to 900 ms.
4285                                                                  0xA = 1 s to 3.5 s.
4286                                                                  0xD = 4 s to 13 s.
4287                                                                  0xE = 17 s to 64 s.
4288 
4289                                                                  Values not defined are reserved. */
4290         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
4291         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
4292         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
4293         uint32_t atom_op_eb            : 1;  /**< [  7:  7](RO) AtomicOp egress blocking (not supported). */
4294         uint32_t id0_rq                : 1;  /**< [  8:  8](RO) ID based ordering request enable (not supported). */
4295         uint32_t id0_cp                : 1;  /**< [  9:  9](RO) ID based ordering completion enable (not supported). */
4296         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
4297         uint32_t reserved_11_12        : 2;
4298         uint32_t obffe                 : 2;  /**< [ 14: 13](RO) Optimized buffer flush fill (OBFF) enable (not supported). */
4299         uint32_t eetpb                 : 1;  /**< [ 15: 15](RO) Unsupported end-end TLP prefix blocking. */
4300         uint32_t reserved_16_31        : 16;
4301 #endif /* Word 0 - End */
4302     } cn81xx;
4303     struct bdk_pciercx_cfg038_cn88xx
4304     {
4305 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4306         uint32_t reserved_16_31        : 16;
4307         uint32_t eetpb                 : 1;  /**< [ 15: 15](RO) Unsupported end-end TLP prefix blocking. */
4308         uint32_t obffe                 : 2;  /**< [ 14: 13](RO) Optimized buffer flush fill (OBFF) enable (not supported). */
4309         uint32_t reserved_11_12        : 2;
4310         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
4311         uint32_t id0_cp                : 1;  /**< [  9:  9](RO) ID based ordering completion enable (not supported). */
4312         uint32_t id0_rq                : 1;  /**< [  8:  8](RO) ID based ordering request enable (not supported). */
4313         uint32_t atom_op_eb            : 1;  /**< [  7:  7](RO) AtomicOp egress blocking (not supported). */
4314         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
4315         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
4316         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
4317         uint32_t ctv                   : 4;  /**< [  3:  0](RO/H) Completion timeout value.
4318                                                                  0x0 = Default range: 16 ms to 55 ms.
4319                                                                  0x1 = 50 us to 100 us.
4320                                                                  0x2 = 1 ms to 10 ms.
4321                                                                  0x3 = 16 ms to 55 ms.
4322                                                                  0x6 = 65 ms to 210 ms.
4323                                                                  0x9 = 260 ms to 900 ms.
4324                                                                  0xA = 1 s to 3.5 s.
4325                                                                  0xD = 4 s to 13 s.
4326                                                                  0xE = 17 s to 64 s.
4327 
4328                                                                  Values not defined are reserved. */
4329 #else /* Word 0 - Little Endian */
4330         uint32_t ctv                   : 4;  /**< [  3:  0](RO/H) Completion timeout value.
4331                                                                  0x0 = Default range: 16 ms to 55 ms.
4332                                                                  0x1 = 50 us to 100 us.
4333                                                                  0x2 = 1 ms to 10 ms.
4334                                                                  0x3 = 16 ms to 55 ms.
4335                                                                  0x6 = 65 ms to 210 ms.
4336                                                                  0x9 = 260 ms to 900 ms.
4337                                                                  0xA = 1 s to 3.5 s.
4338                                                                  0xD = 4 s to 13 s.
4339                                                                  0xE = 17 s to 64 s.
4340 
4341                                                                  Values not defined are reserved. */
4342         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
4343         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
4344         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
4345         uint32_t atom_op_eb            : 1;  /**< [  7:  7](RO) AtomicOp egress blocking (not supported). */
4346         uint32_t id0_rq                : 1;  /**< [  8:  8](RO) ID based ordering request enable (not supported). */
4347         uint32_t id0_cp                : 1;  /**< [  9:  9](RO) ID based ordering completion enable (not supported). */
4348         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
4349         uint32_t reserved_11_12        : 2;
4350         uint32_t obffe                 : 2;  /**< [ 14: 13](RO) Optimized buffer flush fill (OBFF) enable (not supported). */
4351         uint32_t eetpb                 : 1;  /**< [ 15: 15](RO) Unsupported end-end TLP prefix blocking. */
4352         uint32_t reserved_16_31        : 16;
4353 #endif /* Word 0 - End */
4354     } cn88xx;
4355     struct bdk_pciercx_cfg038_cn83xx
4356     {
4357 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4358         uint32_t reserved_16_31        : 16;
4359         uint32_t eetpb                 : 1;  /**< [ 15: 15](RO) Unsupported end-end TLP prefix blocking. */
4360         uint32_t obffe                 : 2;  /**< [ 14: 13](RO) Optimized buffer flush fill (OBFF) enable (not supported). */
4361         uint32_t reserved_12           : 1;
4362         uint32_t tag10b_req_en         : 1;  /**< [ 11: 11](RO) 10-bit tag requestoer enable (not supported). */
4363         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
4364         uint32_t id0_cp                : 1;  /**< [  9:  9](RO) ID based ordering completion enable (not supported). */
4365         uint32_t id0_rq                : 1;  /**< [  8:  8](RO) ID based ordering request enable (not supported). */
4366         uint32_t atom_op_eb            : 1;  /**< [  7:  7](R/W) AtomicOp egress blocking. */
4367         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
4368         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
4369         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
4370         uint32_t ctv                   : 4;  /**< [  3:  0](R/W/H) Completion timeout value.
4371                                                                  0x0 = Default range: 16 ms to 55 ms.
4372                                                                  0x1 = 50 us to 100 us.
4373                                                                  0x2 = 1 ms to 10 ms.
4374                                                                  0x3 = 16 ms to 55 ms.
4375                                                                  0x6 = 65 ms to 210 ms.
4376                                                                  0x9 = 260 ms to 900 ms.
4377                                                                  0xA = 1 s to 3.5 s.
4378                                                                  0xD = 4 s to 13 s.
4379                                                                  0xE = 17 s to 64 s.
4380 
4381                                                                  Values not defined are reserved. */
4382 #else /* Word 0 - Little Endian */
4383         uint32_t ctv                   : 4;  /**< [  3:  0](R/W/H) Completion timeout value.
4384                                                                  0x0 = Default range: 16 ms to 55 ms.
4385                                                                  0x1 = 50 us to 100 us.
4386                                                                  0x2 = 1 ms to 10 ms.
4387                                                                  0x3 = 16 ms to 55 ms.
4388                                                                  0x6 = 65 ms to 210 ms.
4389                                                                  0x9 = 260 ms to 900 ms.
4390                                                                  0xA = 1 s to 3.5 s.
4391                                                                  0xD = 4 s to 13 s.
4392                                                                  0xE = 17 s to 64 s.
4393 
4394                                                                  Values not defined are reserved. */
4395         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
4396         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
4397         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
4398         uint32_t atom_op_eb            : 1;  /**< [  7:  7](R/W) AtomicOp egress blocking. */
4399         uint32_t id0_rq                : 1;  /**< [  8:  8](RO) ID based ordering request enable (not supported). */
4400         uint32_t id0_cp                : 1;  /**< [  9:  9](RO) ID based ordering completion enable (not supported). */
4401         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
4402         uint32_t tag10b_req_en         : 1;  /**< [ 11: 11](RO) 10-bit tag requestoer enable (not supported). */
4403         uint32_t reserved_12           : 1;
4404         uint32_t obffe                 : 2;  /**< [ 14: 13](RO) Optimized buffer flush fill (OBFF) enable (not supported). */
4405         uint32_t eetpb                 : 1;  /**< [ 15: 15](RO) Unsupported end-end TLP prefix blocking. */
4406         uint32_t reserved_16_31        : 16;
4407 #endif /* Word 0 - End */
4408     } cn83xx;
4409 };
4410 typedef union bdk_pciercx_cfg038 bdk_pciercx_cfg038_t;
4411 
4412 static inline uint64_t BDK_PCIERCX_CFG038(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG038(unsigned long a)4413 static inline uint64_t BDK_PCIERCX_CFG038(unsigned long a)
4414 {
4415     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
4416         return 0x20000000098ll + 0x100000000ll * ((a) & 0x3);
4417     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
4418         return 0x20000000098ll + 0x100000000ll * ((a) & 0x3);
4419     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
4420         return 0x20000000098ll + 0x100000000ll * ((a) & 0x7);
4421     __bdk_csr_fatal("PCIERCX_CFG038", 1, a, 0, 0, 0);
4422 }
4423 
4424 #define typedef_BDK_PCIERCX_CFG038(a) bdk_pciercx_cfg038_t
4425 #define bustype_BDK_PCIERCX_CFG038(a) BDK_CSR_TYPE_PCICONFIGRC
4426 #define basename_BDK_PCIERCX_CFG038(a) "PCIERCX_CFG038"
4427 #define busnum_BDK_PCIERCX_CFG038(a) (a)
4428 #define arguments_BDK_PCIERCX_CFG038(a) (a),-1,-1,-1
4429 
4430 /**
4431  * Register (PCICONFIGRC) pcierc#_cfg039
4432  *
4433  * PCIe RC Link Capabilities 2 Register
4434  * This register contains the fortieth 32-bits of PCIe type 1 configuration space.
4435  */
4436 union bdk_pciercx_cfg039
4437 {
4438     uint32_t u;
4439     struct bdk_pciercx_cfg039_s
4440     {
4441 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4442         uint32_t reserved_9_31         : 23;
4443         uint32_t cls                   : 1;  /**< [  8:  8](RO) Crosslink supported. */
4444         uint32_t slsv                  : 7;  /**< [  7:  1](RO/WRSL) Supported link speeds vector. Indicates the supported link speeds of the associated port.
4445                                                                  For each bit, a value of 1 b indicates that the corresponding link speed is supported;
4446                                                                  otherwise, the link speed is not supported. Bit definitions are:
4447 
4448                                                                  _ Bit \<1\> = 2.5 GT/s.
4449 
4450                                                                  _ Bit \<2\> = 5.0 GT/s.
4451 
4452                                                                  _ Bit \<3\> = 8.0 GT/s.
4453 
4454                                                                  _ Bits \<7:4\> are reserved.
4455 
4456                                                                  The reset value of this field is controlled by the value read from PEM()_CFG[MD].
4457 
4458                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
4459 
4460                                                                  _ MD is 0x1, reset to 0x3: 5.0 GHz and 2.5 GHz supported.
4461 
4462                                                                  _ MD is 0x2, reset to 0x7: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
4463 
4464                                                                  _ MD is 0x3, reset to 0x7: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
4465         uint32_t reserved_0            : 1;
4466 #else /* Word 0 - Little Endian */
4467         uint32_t reserved_0            : 1;
4468         uint32_t slsv                  : 7;  /**< [  7:  1](RO/WRSL) Supported link speeds vector. Indicates the supported link speeds of the associated port.
4469                                                                  For each bit, a value of 1 b indicates that the corresponding link speed is supported;
4470                                                                  otherwise, the link speed is not supported. Bit definitions are:
4471 
4472                                                                  _ Bit \<1\> = 2.5 GT/s.
4473 
4474                                                                  _ Bit \<2\> = 5.0 GT/s.
4475 
4476                                                                  _ Bit \<3\> = 8.0 GT/s.
4477 
4478                                                                  _ Bits \<7:4\> are reserved.
4479 
4480                                                                  The reset value of this field is controlled by the value read from PEM()_CFG[MD].
4481 
4482                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
4483 
4484                                                                  _ MD is 0x1, reset to 0x3: 5.0 GHz and 2.5 GHz supported.
4485 
4486                                                                  _ MD is 0x2, reset to 0x7: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
4487 
4488                                                                  _ MD is 0x3, reset to 0x7: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
4489         uint32_t cls                   : 1;  /**< [  8:  8](RO) Crosslink supported. */
4490         uint32_t reserved_9_31         : 23;
4491 #endif /* Word 0 - End */
4492     } s;
4493     /* struct bdk_pciercx_cfg039_s cn; */
4494 };
4495 typedef union bdk_pciercx_cfg039 bdk_pciercx_cfg039_t;
4496 
4497 static inline uint64_t BDK_PCIERCX_CFG039(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG039(unsigned long a)4498 static inline uint64_t BDK_PCIERCX_CFG039(unsigned long a)
4499 {
4500     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
4501         return 0x2000000009cll + 0x100000000ll * ((a) & 0x3);
4502     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
4503         return 0x2000000009cll + 0x100000000ll * ((a) & 0x3);
4504     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
4505         return 0x2000000009cll + 0x100000000ll * ((a) & 0x7);
4506     __bdk_csr_fatal("PCIERCX_CFG039", 1, a, 0, 0, 0);
4507 }
4508 
4509 #define typedef_BDK_PCIERCX_CFG039(a) bdk_pciercx_cfg039_t
4510 #define bustype_BDK_PCIERCX_CFG039(a) BDK_CSR_TYPE_PCICONFIGRC
4511 #define basename_BDK_PCIERCX_CFG039(a) "PCIERCX_CFG039"
4512 #define busnum_BDK_PCIERCX_CFG039(a) (a)
4513 #define arguments_BDK_PCIERCX_CFG039(a) (a),-1,-1,-1
4514 
4515 /**
4516  * Register (PCICONFIGRC) pcierc#_cfg040
4517  *
4518  * PCIe RC Link Control 2 Register/Link Status 2 Register
4519  * This register contains the forty-first 32-bits of PCIe type 1 configuration space.
4520  */
4521 union bdk_pciercx_cfg040
4522 {
4523     uint32_t u;
4524     struct bdk_pciercx_cfg040_s
4525     {
4526 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4527         uint32_t reserved_23_31        : 9;
4528         uint32_t rtd                   : 1;  /**< [ 22: 22](RO) Retimer presence detected. */
4529         uint32_t ler                   : 1;  /**< [ 21: 21](R/W1C/H) Link equalization request */
4530         uint32_t ep3s                  : 1;  /**< [ 20: 20](RO/H) Equalization phase 3 successful */
4531         uint32_t ep2s                  : 1;  /**< [ 19: 19](RO/H) Equalization phase 2 successful */
4532         uint32_t ep1s                  : 1;  /**< [ 18: 18](RO/H) Equalization phase 1 successful */
4533         uint32_t eqc                   : 1;  /**< [ 17: 17](RO/H) Equalization complete */
4534         uint32_t cdl                   : 1;  /**< [ 16: 16](RO/H) Current deemphasis level. When the link is operating at 5 GT/s speed, this bit reflects
4535                                                                  the level of deemphasis. Encodings:
4536                                                                  1 = -3.5 dB.
4537                                                                  0 = -6 dB.
4538 
4539                                                                  The value in this bit is undefined when the link is operating at 2.5 GT/s speed. */
4540         uint32_t cde                   : 4;  /**< [ 15: 12](R/W) Compliance deemphasis. This bit sets the deemphasis level in Polling.Compliance state if
4541                                                                  the entry occurred due to the TX compliance receive bit being 1. Encodings:
4542                                                                  0x1 = -3.5 dB.
4543                                                                  0x0 = -6 dB.
4544 
4545                                                                  When the Link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4546         uint32_t csos                  : 1;  /**< [ 11: 11](R/W) Compliance SOS. When set to 1, the LTSSM is required to send SKP ordered sets periodically
4547                                                                  in between the (modified) compliance patterns.
4548                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4549         uint32_t emc                   : 1;  /**< [ 10: 10](R/W) Enter modified compliance. When this bit is set to 1, the device transmits a modified
4550                                                                  compliance pattern if the LTSSM enters Polling.Compliance state. */
4551         uint32_t tm                    : 3;  /**< [  9:  7](R/W/H) Transmit margin. This field controls the value of the non-deemphasized voltage level at
4552                                                                  the transmitter signals:
4553                                                                  0x0 =  800-1200 mV for full swing 400-600 mV for half-swing.
4554                                                                  0x1-0x2 = Values must be monotonic with a nonzero slope.
4555                                                                  0x3 = 200-400 mV for full-swing and 100-200 mV for half-swing.
4556                                                                  0x4-0x7 = Reserved.
4557                                                                  This field is reset to 0x0 on entry to the LTSSM Polling.Compliance substate. When
4558                                                                  operating in 5.0 GT/s mode with full swing, the deemphasis ratio must be maintained within
4559                                                                  +/- 1 dB from the specification-defined operational value either -3.5 or -6 dB. */
4560         uint32_t sde                   : 1;  /**< [  6:  6](RO/WRSL) Selectable deemphasis. When the link is operating at 5.0 GT/s speed, selects the level of
4561                                                                  deemphasis:
4562                                                                  1 = -3.5 dB.
4563                                                                  0 = -6 dB.
4564 
4565                                                                  When the link is operating at 2.5 GT/s speed, the setting of this bit has no effect. */
4566         uint32_t hasd                  : 1;  /**< [  5:  5](R/W) Hardware autonomous speed disable. When asserted, the application must disable hardware
4567                                                                  from changing the link speed for device-specific reasons other than attempting to correct
4568                                                                  unreliable link operation by reducing link speed. Initial transition to the highest
4569                                                                  supported common link speed is not blocked by this signal. */
4570         uint32_t ec                    : 1;  /**< [  4:  4](R/W) Enter compliance. Software is permitted to force a link to enter compliance mode at the
4571                                                                  speed indicated in the target link speed field by setting this bit to 1 in both components
4572                                                                  on a link and then initiating a hot reset on the link. */
4573         uint32_t tls                   : 4;  /**< [  3:  0](R/W) Target link speed. For downstream ports, this field sets an upper limit on link
4574                                                                  operational speed by restricting the values advertised by the upstream component in its
4575                                                                  training sequences:
4576 
4577                                                                  0x1 = 2.5 Gb/s target link speed.
4578                                                                  0x2 = 5 Gb/s target link speed.
4579                                                                  0x3 = 8 Gb/s target link speed.
4580 
4581                                                                  All other encodings are reserved.
4582 
4583                                                                  If a value is written to this field that does not correspond to a speed included in the
4584                                                                  supported link speeds field, the result is undefined. For both upstream and downstream
4585                                                                  ports, this field is used to set the target compliance mode speed when software is using
4586                                                                  the enter compliance bit to force a link into compliance mode.
4587                                                                  The reset value of this field is controlled by the value read from PEM()_CFG[MD].
4588 
4589                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
4590 
4591                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
4592 
4593                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
4594 
4595                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
4596 #else /* Word 0 - Little Endian */
4597         uint32_t tls                   : 4;  /**< [  3:  0](R/W) Target link speed. For downstream ports, this field sets an upper limit on link
4598                                                                  operational speed by restricting the values advertised by the upstream component in its
4599                                                                  training sequences:
4600 
4601                                                                  0x1 = 2.5 Gb/s target link speed.
4602                                                                  0x2 = 5 Gb/s target link speed.
4603                                                                  0x3 = 8 Gb/s target link speed.
4604 
4605                                                                  All other encodings are reserved.
4606 
4607                                                                  If a value is written to this field that does not correspond to a speed included in the
4608                                                                  supported link speeds field, the result is undefined. For both upstream and downstream
4609                                                                  ports, this field is used to set the target compliance mode speed when software is using
4610                                                                  the enter compliance bit to force a link into compliance mode.
4611                                                                  The reset value of this field is controlled by the value read from PEM()_CFG[MD].
4612 
4613                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
4614 
4615                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
4616 
4617                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
4618 
4619                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
4620         uint32_t ec                    : 1;  /**< [  4:  4](R/W) Enter compliance. Software is permitted to force a link to enter compliance mode at the
4621                                                                  speed indicated in the target link speed field by setting this bit to 1 in both components
4622                                                                  on a link and then initiating a hot reset on the link. */
4623         uint32_t hasd                  : 1;  /**< [  5:  5](R/W) Hardware autonomous speed disable. When asserted, the application must disable hardware
4624                                                                  from changing the link speed for device-specific reasons other than attempting to correct
4625                                                                  unreliable link operation by reducing link speed. Initial transition to the highest
4626                                                                  supported common link speed is not blocked by this signal. */
4627         uint32_t sde                   : 1;  /**< [  6:  6](RO/WRSL) Selectable deemphasis. When the link is operating at 5.0 GT/s speed, selects the level of
4628                                                                  deemphasis:
4629                                                                  1 = -3.5 dB.
4630                                                                  0 = -6 dB.
4631 
4632                                                                  When the link is operating at 2.5 GT/s speed, the setting of this bit has no effect. */
4633         uint32_t tm                    : 3;  /**< [  9:  7](R/W/H) Transmit margin. This field controls the value of the non-deemphasized voltage level at
4634                                                                  the transmitter signals:
4635                                                                  0x0 =  800-1200 mV for full swing 400-600 mV for half-swing.
4636                                                                  0x1-0x2 = Values must be monotonic with a nonzero slope.
4637                                                                  0x3 = 200-400 mV for full-swing and 100-200 mV for half-swing.
4638                                                                  0x4-0x7 = Reserved.
4639                                                                  This field is reset to 0x0 on entry to the LTSSM Polling.Compliance substate. When
4640                                                                  operating in 5.0 GT/s mode with full swing, the deemphasis ratio must be maintained within
4641                                                                  +/- 1 dB from the specification-defined operational value either -3.5 or -6 dB. */
4642         uint32_t emc                   : 1;  /**< [ 10: 10](R/W) Enter modified compliance. When this bit is set to 1, the device transmits a modified
4643                                                                  compliance pattern if the LTSSM enters Polling.Compliance state. */
4644         uint32_t csos                  : 1;  /**< [ 11: 11](R/W) Compliance SOS. When set to 1, the LTSSM is required to send SKP ordered sets periodically
4645                                                                  in between the (modified) compliance patterns.
4646                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4647         uint32_t cde                   : 4;  /**< [ 15: 12](R/W) Compliance deemphasis. This bit sets the deemphasis level in Polling.Compliance state if
4648                                                                  the entry occurred due to the TX compliance receive bit being 1. Encodings:
4649                                                                  0x1 = -3.5 dB.
4650                                                                  0x0 = -6 dB.
4651 
4652                                                                  When the Link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4653         uint32_t cdl                   : 1;  /**< [ 16: 16](RO/H) Current deemphasis level. When the link is operating at 5 GT/s speed, this bit reflects
4654                                                                  the level of deemphasis. Encodings:
4655                                                                  1 = -3.5 dB.
4656                                                                  0 = -6 dB.
4657 
4658                                                                  The value in this bit is undefined when the link is operating at 2.5 GT/s speed. */
4659         uint32_t eqc                   : 1;  /**< [ 17: 17](RO/H) Equalization complete */
4660         uint32_t ep1s                  : 1;  /**< [ 18: 18](RO/H) Equalization phase 1 successful */
4661         uint32_t ep2s                  : 1;  /**< [ 19: 19](RO/H) Equalization phase 2 successful */
4662         uint32_t ep3s                  : 1;  /**< [ 20: 20](RO/H) Equalization phase 3 successful */
4663         uint32_t ler                   : 1;  /**< [ 21: 21](R/W1C/H) Link equalization request */
4664         uint32_t rtd                   : 1;  /**< [ 22: 22](RO) Retimer presence detected. */
4665         uint32_t reserved_23_31        : 9;
4666 #endif /* Word 0 - End */
4667     } s;
4668     struct bdk_pciercx_cfg040_cn81xx
4669     {
4670 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4671         uint32_t reserved_22_31        : 10;
4672         uint32_t ler                   : 1;  /**< [ 21: 21](R/W1C/H) Link equalization request */
4673         uint32_t ep3s                  : 1;  /**< [ 20: 20](RO/H) Equalization phase 3 successful */
4674         uint32_t ep2s                  : 1;  /**< [ 19: 19](RO/H) Equalization phase 2 successful */
4675         uint32_t ep1s                  : 1;  /**< [ 18: 18](RO/H) Equalization phase 1 successful */
4676         uint32_t eqc                   : 1;  /**< [ 17: 17](RO/H) Equalization complete */
4677         uint32_t cdl                   : 1;  /**< [ 16: 16](RO/H) Current deemphasis level. When the link is operating at 5 GT/s speed, this bit reflects
4678                                                                  the level of deemphasis. Encodings:
4679                                                                  1 = -3.5 dB.
4680                                                                  0 = -6 dB.
4681 
4682                                                                  The value in this bit is undefined when the link is operating at 2.5 GT/s speed. */
4683         uint32_t cde                   : 4;  /**< [ 15: 12](R/W) Compliance deemphasis. This bit sets the deemphasis level in Polling.Compliance state if
4684                                                                  the entry occurred due to the TX compliance receive bit being 1. Encodings:
4685                                                                  0x1 = -3.5 dB.
4686                                                                  0x0 = -6 dB.
4687 
4688                                                                  When the Link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4689         uint32_t csos                  : 1;  /**< [ 11: 11](R/W) Compliance SOS. When set to 1, the LTSSM is required to send SKP ordered sets periodically
4690                                                                  in between the (modified) compliance patterns.
4691                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4692         uint32_t emc                   : 1;  /**< [ 10: 10](R/W) Enter modified compliance. When this bit is set to 1, the device transmits a modified
4693                                                                  compliance pattern if the LTSSM enters Polling.Compliance state. */
4694         uint32_t tm                    : 3;  /**< [  9:  7](R/W/H) Transmit margin. This field controls the value of the non-deemphasized voltage level at
4695                                                                  the transmitter signals:
4696                                                                  0x0 =  800-1200 mV for full swing 400-600 mV for half-swing.
4697                                                                  0x1-0x2 = Values must be monotonic with a nonzero slope.
4698                                                                  0x3 = 200-400 mV for full-swing and 100-200 mV for half-swing.
4699                                                                  0x4-0x7 = Reserved.
4700                                                                  This field is reset to 0x0 on entry to the LTSSM Polling.Compliance substate. When
4701                                                                  operating in 5.0 GT/s mode with full swing, the deemphasis ratio must be maintained within
4702                                                                  +/- 1 dB from the specification-defined operational value either -3.5 or -6 dB. */
4703         uint32_t sde                   : 1;  /**< [  6:  6](RO/WRSL) Selectable deemphasis. When the link is operating at 5.0 GT/s speed, selects the level of
4704                                                                  deemphasis:
4705                                                                  1 = -3.5 dB.
4706                                                                  0 = -6 dB.
4707 
4708                                                                  When the link is operating at 2.5 GT/s speed, the setting of this bit has no effect. */
4709         uint32_t hasd                  : 1;  /**< [  5:  5](R/W) Hardware autonomous speed disable. When asserted, the application must disable hardware
4710                                                                  from changing the link speed for device-specific reasons other than attempting to correct
4711                                                                  unreliable link operation by reducing link speed. Initial transition to the highest
4712                                                                  supported common link speed is not blocked by this signal. */
4713         uint32_t ec                    : 1;  /**< [  4:  4](R/W) Enter compliance. Software is permitted to force a link to enter compliance mode at the
4714                                                                  speed indicated in the target link speed field by setting this bit to 1 in both components
4715                                                                  on a link and then initiating a hot reset on the link. */
4716         uint32_t tls                   : 4;  /**< [  3:  0](R/W) Target link speed. For downstream ports, this field sets an upper limit on link
4717                                                                  operational speed by restricting the values advertised by the upstream component in its
4718                                                                  training sequences:
4719 
4720                                                                  0x1 = 2.5 Gb/s target link speed.
4721                                                                  0x2 = 5 Gb/s target link speed.
4722                                                                  0x3 = 8 Gb/s target link speed.
4723 
4724                                                                  All other encodings are reserved.
4725 
4726                                                                  If a value is written to this field that does not correspond to a speed included in the
4727                                                                  supported link speeds field, the result is undefined. For both upstream and downstream
4728                                                                  ports, this field is used to set the target compliance mode speed when software is using
4729                                                                  the enter compliance bit to force a link into compliance mode.
4730                                                                  The reset value of this field is controlled by the value read from PEM()_CFG[MD].
4731 
4732                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
4733 
4734                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
4735 
4736                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
4737 
4738                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
4739 #else /* Word 0 - Little Endian */
4740         uint32_t tls                   : 4;  /**< [  3:  0](R/W) Target link speed. For downstream ports, this field sets an upper limit on link
4741                                                                  operational speed by restricting the values advertised by the upstream component in its
4742                                                                  training sequences:
4743 
4744                                                                  0x1 = 2.5 Gb/s target link speed.
4745                                                                  0x2 = 5 Gb/s target link speed.
4746                                                                  0x3 = 8 Gb/s target link speed.
4747 
4748                                                                  All other encodings are reserved.
4749 
4750                                                                  If a value is written to this field that does not correspond to a speed included in the
4751                                                                  supported link speeds field, the result is undefined. For both upstream and downstream
4752                                                                  ports, this field is used to set the target compliance mode speed when software is using
4753                                                                  the enter compliance bit to force a link into compliance mode.
4754                                                                  The reset value of this field is controlled by the value read from PEM()_CFG[MD].
4755 
4756                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
4757 
4758                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
4759 
4760                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
4761 
4762                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
4763         uint32_t ec                    : 1;  /**< [  4:  4](R/W) Enter compliance. Software is permitted to force a link to enter compliance mode at the
4764                                                                  speed indicated in the target link speed field by setting this bit to 1 in both components
4765                                                                  on a link and then initiating a hot reset on the link. */
4766         uint32_t hasd                  : 1;  /**< [  5:  5](R/W) Hardware autonomous speed disable. When asserted, the application must disable hardware
4767                                                                  from changing the link speed for device-specific reasons other than attempting to correct
4768                                                                  unreliable link operation by reducing link speed. Initial transition to the highest
4769                                                                  supported common link speed is not blocked by this signal. */
4770         uint32_t sde                   : 1;  /**< [  6:  6](RO/WRSL) Selectable deemphasis. When the link is operating at 5.0 GT/s speed, selects the level of
4771                                                                  deemphasis:
4772                                                                  1 = -3.5 dB.
4773                                                                  0 = -6 dB.
4774 
4775                                                                  When the link is operating at 2.5 GT/s speed, the setting of this bit has no effect. */
4776         uint32_t tm                    : 3;  /**< [  9:  7](R/W/H) Transmit margin. This field controls the value of the non-deemphasized voltage level at
4777                                                                  the transmitter signals:
4778                                                                  0x0 =  800-1200 mV for full swing 400-600 mV for half-swing.
4779                                                                  0x1-0x2 = Values must be monotonic with a nonzero slope.
4780                                                                  0x3 = 200-400 mV for full-swing and 100-200 mV for half-swing.
4781                                                                  0x4-0x7 = Reserved.
4782                                                                  This field is reset to 0x0 on entry to the LTSSM Polling.Compliance substate. When
4783                                                                  operating in 5.0 GT/s mode with full swing, the deemphasis ratio must be maintained within
4784                                                                  +/- 1 dB from the specification-defined operational value either -3.5 or -6 dB. */
4785         uint32_t emc                   : 1;  /**< [ 10: 10](R/W) Enter modified compliance. When this bit is set to 1, the device transmits a modified
4786                                                                  compliance pattern if the LTSSM enters Polling.Compliance state. */
4787         uint32_t csos                  : 1;  /**< [ 11: 11](R/W) Compliance SOS. When set to 1, the LTSSM is required to send SKP ordered sets periodically
4788                                                                  in between the (modified) compliance patterns.
4789                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4790         uint32_t cde                   : 4;  /**< [ 15: 12](R/W) Compliance deemphasis. This bit sets the deemphasis level in Polling.Compliance state if
4791                                                                  the entry occurred due to the TX compliance receive bit being 1. Encodings:
4792                                                                  0x1 = -3.5 dB.
4793                                                                  0x0 = -6 dB.
4794 
4795                                                                  When the Link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4796         uint32_t cdl                   : 1;  /**< [ 16: 16](RO/H) Current deemphasis level. When the link is operating at 5 GT/s speed, this bit reflects
4797                                                                  the level of deemphasis. Encodings:
4798                                                                  1 = -3.5 dB.
4799                                                                  0 = -6 dB.
4800 
4801                                                                  The value in this bit is undefined when the link is operating at 2.5 GT/s speed. */
4802         uint32_t eqc                   : 1;  /**< [ 17: 17](RO/H) Equalization complete */
4803         uint32_t ep1s                  : 1;  /**< [ 18: 18](RO/H) Equalization phase 1 successful */
4804         uint32_t ep2s                  : 1;  /**< [ 19: 19](RO/H) Equalization phase 2 successful */
4805         uint32_t ep3s                  : 1;  /**< [ 20: 20](RO/H) Equalization phase 3 successful */
4806         uint32_t ler                   : 1;  /**< [ 21: 21](R/W1C/H) Link equalization request */
4807         uint32_t reserved_22_31        : 10;
4808 #endif /* Word 0 - End */
4809     } cn81xx;
4810     /* struct bdk_pciercx_cfg040_cn81xx cn88xx; */
4811     struct bdk_pciercx_cfg040_cn83xx
4812     {
4813 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4814         uint32_t reserved_23_31        : 9;
4815         uint32_t rtd                   : 1;  /**< [ 22: 22](RO) Retimer presence detected. */
4816         uint32_t ler                   : 1;  /**< [ 21: 21](R/W1C/H) Link equalization request */
4817         uint32_t ep3s                  : 1;  /**< [ 20: 20](RO/H) Equalization phase 3 successful */
4818         uint32_t ep2s                  : 1;  /**< [ 19: 19](RO/H) Equalization phase 2 successful */
4819         uint32_t ep1s                  : 1;  /**< [ 18: 18](RO/H) Equalization phase 1 successful */
4820         uint32_t eqc                   : 1;  /**< [ 17: 17](RO/H) Equalization complete */
4821         uint32_t cdl                   : 1;  /**< [ 16: 16](RO/H) Current deemphasis level. When the link is operating at 5 GT/s speed, this bit reflects
4822                                                                  the level of deemphasis. Encodings:
4823                                                                  1 = -3.5 dB.
4824                                                                  0 = -6 dB.
4825 
4826                                                                  The value in this bit is undefined when the link is operating at 2.5 GT/s speed. */
4827         uint32_t cde                   : 4;  /**< [ 15: 12](R/W) Compliance deemphasis. This bit sets the deemphasis level in Polling.Compliance state if
4828                                                                  the entry occurred due to the TX compliance receive bit being 1. Encodings:
4829                                                                  0x1 = -3.5 dB.
4830                                                                  0x0 = -6 dB.
4831 
4832                                                                  When the Link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4833         uint32_t csos                  : 1;  /**< [ 11: 11](R/W) Compliance SOS. When set to 1, the LTSSM is required to send SKP ordered sets periodically
4834                                                                  in between the (modified) compliance patterns.
4835                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4836         uint32_t emc                   : 1;  /**< [ 10: 10](R/W) Enter modified compliance. When this bit is set to 1, the device transmits a modified
4837                                                                  compliance pattern if the LTSSM enters Polling.Compliance state. */
4838         uint32_t tm                    : 3;  /**< [  9:  7](R/W/H) Transmit margin. This field controls the value of the non-deemphasized voltage level at
4839                                                                  the transmitter signals:
4840                                                                  0x0 =  800-1200 mV for full swing 400-600 mV for half-swing.
4841                                                                  0x1-0x2 = Values must be monotonic with a nonzero slope.
4842                                                                  0x3 = 200-400 mV for full-swing and 100-200 mV for half-swing.
4843                                                                  0x4-0x7 = Reserved.
4844                                                                  This field is reset to 0x0 on entry to the LTSSM Polling.Compliance substate. When
4845                                                                  operating in 5.0 GT/s mode with full swing, the deemphasis ratio must be maintained within
4846                                                                  +/- 1 dB from the specification-defined operational value either -3.5 or -6 dB. */
4847         uint32_t sde                   : 1;  /**< [  6:  6](RO/WRSL) Selectable deemphasis. When the link is operating at 5.0 GT/s speed, selects the level of
4848                                                                  deemphasis on the downstream device.  Must be set prior to link training.
4849                                                                  0 = -6 dB.
4850                                                                  1 = -3.5 dB.
4851 
4852                                                                  When the link is operating at 2.5 GT/s speed, the setting of this bit has no effect.
4853 
4854                                                                  PCIERC()_CFG515[S_D_E] can be used to change the deemphasis on the upstream ports. */
4855         uint32_t hasd                  : 1;  /**< [  5:  5](R/W) Hardware autonomous speed disable. When asserted, the application must disable hardware
4856                                                                  from changing the link speed for device-specific reasons other than attempting to correct
4857                                                                  unreliable link operation by reducing link speed. Initial transition to the highest
4858                                                                  supported common link speed is not blocked by this signal. */
4859         uint32_t ec                    : 1;  /**< [  4:  4](R/W) Enter compliance. Software is permitted to force a link to enter compliance mode at the
4860                                                                  speed indicated in the target link speed field by setting this bit to 1 in both components
4861                                                                  on a link and then initiating a hot reset on the link. */
4862         uint32_t tls                   : 4;  /**< [  3:  0](R/W) Target link speed. For downstream ports, this field sets an upper limit on link
4863                                                                  operational speed by restricting the values advertised by the upstream component in its
4864                                                                  training sequences:
4865 
4866                                                                  0x1 = 2.5 Gb/s target link speed.
4867                                                                  0x2 = 5 Gb/s target link speed.
4868                                                                  0x3 = 8 Gb/s target link speed.
4869 
4870                                                                  All other encodings are reserved.
4871 
4872                                                                  If a value is written to this field that does not correspond to a speed included in the
4873                                                                  supported link speeds field, the result is undefined. For both upstream and downstream
4874                                                                  ports, this field is used to set the target compliance mode speed when software is using
4875                                                                  the enter compliance bit to force a link into compliance mode.
4876                                                                  The reset value of this field is controlled by the value read from PEM()_CFG[MD].
4877 
4878                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
4879 
4880                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
4881 
4882                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
4883 
4884                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
4885 #else /* Word 0 - Little Endian */
4886         uint32_t tls                   : 4;  /**< [  3:  0](R/W) Target link speed. For downstream ports, this field sets an upper limit on link
4887                                                                  operational speed by restricting the values advertised by the upstream component in its
4888                                                                  training sequences:
4889 
4890                                                                  0x1 = 2.5 Gb/s target link speed.
4891                                                                  0x2 = 5 Gb/s target link speed.
4892                                                                  0x3 = 8 Gb/s target link speed.
4893 
4894                                                                  All other encodings are reserved.
4895 
4896                                                                  If a value is written to this field that does not correspond to a speed included in the
4897                                                                  supported link speeds field, the result is undefined. For both upstream and downstream
4898                                                                  ports, this field is used to set the target compliance mode speed when software is using
4899                                                                  the enter compliance bit to force a link into compliance mode.
4900                                                                  The reset value of this field is controlled by the value read from PEM()_CFG[MD].
4901 
4902                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
4903 
4904                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
4905 
4906                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
4907 
4908                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
4909         uint32_t ec                    : 1;  /**< [  4:  4](R/W) Enter compliance. Software is permitted to force a link to enter compliance mode at the
4910                                                                  speed indicated in the target link speed field by setting this bit to 1 in both components
4911                                                                  on a link and then initiating a hot reset on the link. */
4912         uint32_t hasd                  : 1;  /**< [  5:  5](R/W) Hardware autonomous speed disable. When asserted, the application must disable hardware
4913                                                                  from changing the link speed for device-specific reasons other than attempting to correct
4914                                                                  unreliable link operation by reducing link speed. Initial transition to the highest
4915                                                                  supported common link speed is not blocked by this signal. */
4916         uint32_t sde                   : 1;  /**< [  6:  6](RO/WRSL) Selectable deemphasis. When the link is operating at 5.0 GT/s speed, selects the level of
4917                                                                  deemphasis on the downstream device.  Must be set prior to link training.
4918                                                                  0 = -6 dB.
4919                                                                  1 = -3.5 dB.
4920 
4921                                                                  When the link is operating at 2.5 GT/s speed, the setting of this bit has no effect.
4922 
4923                                                                  PCIERC()_CFG515[S_D_E] can be used to change the deemphasis on the upstream ports. */
4924         uint32_t tm                    : 3;  /**< [  9:  7](R/W/H) Transmit margin. This field controls the value of the non-deemphasized voltage level at
4925                                                                  the transmitter signals:
4926                                                                  0x0 =  800-1200 mV for full swing 400-600 mV for half-swing.
4927                                                                  0x1-0x2 = Values must be monotonic with a nonzero slope.
4928                                                                  0x3 = 200-400 mV for full-swing and 100-200 mV for half-swing.
4929                                                                  0x4-0x7 = Reserved.
4930                                                                  This field is reset to 0x0 on entry to the LTSSM Polling.Compliance substate. When
4931                                                                  operating in 5.0 GT/s mode with full swing, the deemphasis ratio must be maintained within
4932                                                                  +/- 1 dB from the specification-defined operational value either -3.5 or -6 dB. */
4933         uint32_t emc                   : 1;  /**< [ 10: 10](R/W) Enter modified compliance. When this bit is set to 1, the device transmits a modified
4934                                                                  compliance pattern if the LTSSM enters Polling.Compliance state. */
4935         uint32_t csos                  : 1;  /**< [ 11: 11](R/W) Compliance SOS. When set to 1, the LTSSM is required to send SKP ordered sets periodically
4936                                                                  in between the (modified) compliance patterns.
4937                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4938         uint32_t cde                   : 4;  /**< [ 15: 12](R/W) Compliance deemphasis. This bit sets the deemphasis level in Polling.Compliance state if
4939                                                                  the entry occurred due to the TX compliance receive bit being 1. Encodings:
4940                                                                  0x1 = -3.5 dB.
4941                                                                  0x0 = -6 dB.
4942 
4943                                                                  When the Link is operating at 2.5 GT/s, the setting of this bit has no effect. */
4944         uint32_t cdl                   : 1;  /**< [ 16: 16](RO/H) Current deemphasis level. When the link is operating at 5 GT/s speed, this bit reflects
4945                                                                  the level of deemphasis. Encodings:
4946                                                                  1 = -3.5 dB.
4947                                                                  0 = -6 dB.
4948 
4949                                                                  The value in this bit is undefined when the link is operating at 2.5 GT/s speed. */
4950         uint32_t eqc                   : 1;  /**< [ 17: 17](RO/H) Equalization complete */
4951         uint32_t ep1s                  : 1;  /**< [ 18: 18](RO/H) Equalization phase 1 successful */
4952         uint32_t ep2s                  : 1;  /**< [ 19: 19](RO/H) Equalization phase 2 successful */
4953         uint32_t ep3s                  : 1;  /**< [ 20: 20](RO/H) Equalization phase 3 successful */
4954         uint32_t ler                   : 1;  /**< [ 21: 21](R/W1C/H) Link equalization request */
4955         uint32_t rtd                   : 1;  /**< [ 22: 22](RO) Retimer presence detected. */
4956         uint32_t reserved_23_31        : 9;
4957 #endif /* Word 0 - End */
4958     } cn83xx;
4959 };
4960 typedef union bdk_pciercx_cfg040 bdk_pciercx_cfg040_t;
4961 
4962 static inline uint64_t BDK_PCIERCX_CFG040(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG040(unsigned long a)4963 static inline uint64_t BDK_PCIERCX_CFG040(unsigned long a)
4964 {
4965     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
4966         return 0x200000000a0ll + 0x100000000ll * ((a) & 0x3);
4967     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
4968         return 0x200000000a0ll + 0x100000000ll * ((a) & 0x3);
4969     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
4970         return 0x200000000a0ll + 0x100000000ll * ((a) & 0x7);
4971     __bdk_csr_fatal("PCIERCX_CFG040", 1, a, 0, 0, 0);
4972 }
4973 
4974 #define typedef_BDK_PCIERCX_CFG040(a) bdk_pciercx_cfg040_t
4975 #define bustype_BDK_PCIERCX_CFG040(a) BDK_CSR_TYPE_PCICONFIGRC
4976 #define basename_BDK_PCIERCX_CFG040(a) "PCIERCX_CFG040"
4977 #define busnum_BDK_PCIERCX_CFG040(a) (a)
4978 #define arguments_BDK_PCIERCX_CFG040(a) (a),-1,-1,-1
4979 
4980 /**
4981  * Register (PCICONFIGRC) pcierc#_cfg041
4982  *
4983  * PCIe RC Slot Capabilities 2 Register
4984  * This register contains the forty-second 32-bits of PCIe type 1 configuration space.
4985  */
4986 union bdk_pciercx_cfg041
4987 {
4988     uint32_t u;
4989     struct bdk_pciercx_cfg041_s
4990     {
4991 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
4992         uint32_t reserved_0_31         : 32;
4993 #else /* Word 0 - Little Endian */
4994         uint32_t reserved_0_31         : 32;
4995 #endif /* Word 0 - End */
4996     } s;
4997     /* struct bdk_pciercx_cfg041_s cn; */
4998 };
4999 typedef union bdk_pciercx_cfg041 bdk_pciercx_cfg041_t;
5000 
5001 static inline uint64_t BDK_PCIERCX_CFG041(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG041(unsigned long a)5002 static inline uint64_t BDK_PCIERCX_CFG041(unsigned long a)
5003 {
5004     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5005         return 0x200000000a4ll + 0x100000000ll * ((a) & 0x3);
5006     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5007         return 0x200000000a4ll + 0x100000000ll * ((a) & 0x3);
5008     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
5009         return 0x200000000a4ll + 0x100000000ll * ((a) & 0x7);
5010     __bdk_csr_fatal("PCIERCX_CFG041", 1, a, 0, 0, 0);
5011 }
5012 
5013 #define typedef_BDK_PCIERCX_CFG041(a) bdk_pciercx_cfg041_t
5014 #define bustype_BDK_PCIERCX_CFG041(a) BDK_CSR_TYPE_PCICONFIGRC
5015 #define basename_BDK_PCIERCX_CFG041(a) "PCIERCX_CFG041"
5016 #define busnum_BDK_PCIERCX_CFG041(a) (a)
5017 #define arguments_BDK_PCIERCX_CFG041(a) (a),-1,-1,-1
5018 
5019 /**
5020  * Register (PCICONFIGRC) pcierc#_cfg042
5021  *
5022  * PCIe RC Slot Control 2 Register/Slot Status 2 Register
5023  * This register contains the forty-third 32-bits of PCIe type 1 configuration space.
5024  */
5025 union bdk_pciercx_cfg042
5026 {
5027     uint32_t u;
5028     struct bdk_pciercx_cfg042_s
5029     {
5030 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5031         uint32_t reserved_0_31         : 32;
5032 #else /* Word 0 - Little Endian */
5033         uint32_t reserved_0_31         : 32;
5034 #endif /* Word 0 - End */
5035     } s;
5036     /* struct bdk_pciercx_cfg042_s cn; */
5037 };
5038 typedef union bdk_pciercx_cfg042 bdk_pciercx_cfg042_t;
5039 
5040 static inline uint64_t BDK_PCIERCX_CFG042(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG042(unsigned long a)5041 static inline uint64_t BDK_PCIERCX_CFG042(unsigned long a)
5042 {
5043     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5044         return 0x200000000a8ll + 0x100000000ll * ((a) & 0x3);
5045     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5046         return 0x200000000a8ll + 0x100000000ll * ((a) & 0x3);
5047     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
5048         return 0x200000000a8ll + 0x100000000ll * ((a) & 0x7);
5049     __bdk_csr_fatal("PCIERCX_CFG042", 1, a, 0, 0, 0);
5050 }
5051 
5052 #define typedef_BDK_PCIERCX_CFG042(a) bdk_pciercx_cfg042_t
5053 #define bustype_BDK_PCIERCX_CFG042(a) BDK_CSR_TYPE_PCICONFIGRC
5054 #define basename_BDK_PCIERCX_CFG042(a) "PCIERCX_CFG042"
5055 #define busnum_BDK_PCIERCX_CFG042(a) (a)
5056 #define arguments_BDK_PCIERCX_CFG042(a) (a),-1,-1,-1
5057 
5058 /**
5059  * Register (PCICONFIGRC) pcierc#_cfg044
5060  *
5061  * PCIe RC PCI Express MSI-X Capability ID/MSI-X Next Item Pointer/MSI-X Control Register
5062  * This register contains the forty-fifth 32-bits of PCIe type 1 configuration space.
5063  */
5064 union bdk_pciercx_cfg044
5065 {
5066     uint32_t u;
5067     struct bdk_pciercx_cfg044_s
5068     {
5069 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5070         uint32_t msixen                : 1;  /**< [ 31: 31](RO/WRSL) MSI-X enable. */
5071         uint32_t funm                  : 1;  /**< [ 30: 30](RO/WRSL) Function mask.
5072                                                                  0 = Each vectors mask bit determines whether the vector is masked or not.
5073                                                                  1 = All vectors associated with the function are masked, regardless of their respective
5074                                                                  per-vector mask bits. */
5075         uint32_t reserved_27_29        : 3;
5076         uint32_t msixts                : 11; /**< [ 26: 16](RO/WRSL) MSI-X table size encoded as (table size - 1). */
5077         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) "Next capability pointer. Writable through PEM#_CFG_WR. However, the application must not
5078                                                                  change this field." */
5079         uint32_t msixcid               : 8;  /**< [  7:  0](RO) MSI-X capability ID. */
5080 #else /* Word 0 - Little Endian */
5081         uint32_t msixcid               : 8;  /**< [  7:  0](RO) MSI-X capability ID. */
5082         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) "Next capability pointer. Writable through PEM#_CFG_WR. However, the application must not
5083                                                                  change this field." */
5084         uint32_t msixts                : 11; /**< [ 26: 16](RO/WRSL) MSI-X table size encoded as (table size - 1). */
5085         uint32_t reserved_27_29        : 3;
5086         uint32_t funm                  : 1;  /**< [ 30: 30](RO/WRSL) Function mask.
5087                                                                  0 = Each vectors mask bit determines whether the vector is masked or not.
5088                                                                  1 = All vectors associated with the function are masked, regardless of their respective
5089                                                                  per-vector mask bits. */
5090         uint32_t msixen                : 1;  /**< [ 31: 31](RO/WRSL) MSI-X enable. */
5091 #endif /* Word 0 - End */
5092     } s;
5093     /* struct bdk_pciercx_cfg044_s cn81xx; */
5094     struct bdk_pciercx_cfg044_cn88xx
5095     {
5096 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5097         uint32_t msixen                : 1;  /**< [ 31: 31](RO/WRSL) MSI-X enable. If MSI-X is enabled, MSI and INTx must be disabled. */
5098         uint32_t funm                  : 1;  /**< [ 30: 30](RO/WRSL) Function mask.
5099                                                                  0 = Each vectors mask bit determines whether the vector is masked or not.
5100                                                                  1 = All vectors associated with the function are masked, regardless of their respective
5101                                                                  per-vector mask bits. */
5102         uint32_t reserved_27_29        : 3;
5103         uint32_t msixts                : 11; /**< [ 26: 16](RO/WRSL/H) MSI-X table size encoded as (table size - 1). */
5104         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) "Next capability pointer. Writable through PEM#_CFG_WR. However, the application must not
5105                                                                  change this field." */
5106         uint32_t msixcid               : 8;  /**< [  7:  0](RO/H) MSI-X capability ID. */
5107 #else /* Word 0 - Little Endian */
5108         uint32_t msixcid               : 8;  /**< [  7:  0](RO/H) MSI-X capability ID. */
5109         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) "Next capability pointer. Writable through PEM#_CFG_WR. However, the application must not
5110                                                                  change this field." */
5111         uint32_t msixts                : 11; /**< [ 26: 16](RO/WRSL/H) MSI-X table size encoded as (table size - 1). */
5112         uint32_t reserved_27_29        : 3;
5113         uint32_t funm                  : 1;  /**< [ 30: 30](RO/WRSL) Function mask.
5114                                                                  0 = Each vectors mask bit determines whether the vector is masked or not.
5115                                                                  1 = All vectors associated with the function are masked, regardless of their respective
5116                                                                  per-vector mask bits. */
5117         uint32_t msixen                : 1;  /**< [ 31: 31](RO/WRSL) MSI-X enable. If MSI-X is enabled, MSI and INTx must be disabled. */
5118 #endif /* Word 0 - End */
5119     } cn88xx;
5120     struct bdk_pciercx_cfg044_cn83xx
5121     {
5122 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5123         uint32_t msixen                : 1;  /**< [ 31: 31](RO/WRSL) MSI-X enable. If MSI-X is enabled, MSI and INTx must be disabled. */
5124         uint32_t funm                  : 1;  /**< [ 30: 30](RO/WRSL) Function mask.
5125                                                                  0 = Each vectors mask bit determines whether the vector is masked or not.
5126                                                                  1 = All vectors associated with the function are masked, regardless of their respective
5127                                                                  per-vector mask bits. */
5128         uint32_t reserved_27_29        : 3;
5129         uint32_t msixts                : 11; /**< [ 26: 16](RO/WRSL) MSI-X table size encoded as (table size - 1). */
5130         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) "Next capability pointer. Writable through PEM#_CFG_WR. However, the application must not
5131                                                                  change this field." */
5132         uint32_t msixcid               : 8;  /**< [  7:  0](RO/H) MSI-X capability ID. */
5133 #else /* Word 0 - Little Endian */
5134         uint32_t msixcid               : 8;  /**< [  7:  0](RO/H) MSI-X capability ID. */
5135         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) "Next capability pointer. Writable through PEM#_CFG_WR. However, the application must not
5136                                                                  change this field." */
5137         uint32_t msixts                : 11; /**< [ 26: 16](RO/WRSL) MSI-X table size encoded as (table size - 1). */
5138         uint32_t reserved_27_29        : 3;
5139         uint32_t funm                  : 1;  /**< [ 30: 30](RO/WRSL) Function mask.
5140                                                                  0 = Each vectors mask bit determines whether the vector is masked or not.
5141                                                                  1 = All vectors associated with the function are masked, regardless of their respective
5142                                                                  per-vector mask bits. */
5143         uint32_t msixen                : 1;  /**< [ 31: 31](RO/WRSL) MSI-X enable. If MSI-X is enabled, MSI and INTx must be disabled. */
5144 #endif /* Word 0 - End */
5145     } cn83xx;
5146 };
5147 typedef union bdk_pciercx_cfg044 bdk_pciercx_cfg044_t;
5148 
5149 static inline uint64_t BDK_PCIERCX_CFG044(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG044(unsigned long a)5150 static inline uint64_t BDK_PCIERCX_CFG044(unsigned long a)
5151 {
5152     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5153         return 0x200000000b0ll + 0x100000000ll * ((a) & 0x3);
5154     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5155         return 0x200000000b0ll + 0x100000000ll * ((a) & 0x3);
5156     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
5157         return 0x200000000b0ll + 0x100000000ll * ((a) & 0x7);
5158     __bdk_csr_fatal("PCIERCX_CFG044", 1, a, 0, 0, 0);
5159 }
5160 
5161 #define typedef_BDK_PCIERCX_CFG044(a) bdk_pciercx_cfg044_t
5162 #define bustype_BDK_PCIERCX_CFG044(a) BDK_CSR_TYPE_PCICONFIGRC
5163 #define basename_BDK_PCIERCX_CFG044(a) "PCIERCX_CFG044"
5164 #define busnum_BDK_PCIERCX_CFG044(a) (a)
5165 #define arguments_BDK_PCIERCX_CFG044(a) (a),-1,-1,-1
5166 
5167 /**
5168  * Register (PCICONFIGRC) pcierc#_cfg045
5169  *
5170  * PCIe RC PCI Express MSI-X Table Offset and BIR Register
5171  * This register contains the forty-sixth 32-bits of PCIe type 1 configuration space.
5172  */
5173 union bdk_pciercx_cfg045
5174 {
5175     uint32_t u;
5176     struct bdk_pciercx_cfg045_s
5177     {
5178 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5179         uint32_t msixtoffs             : 29; /**< [ 31:  3](RO/WRSL) MSI-X table offset register. Base address of the MSI-X table, as an offset from the base
5180                                                                  address of the BAR indicated by the table BIR bits. Writable through PEM()_CFG_WR.
5181                                                                  However, the application must not change this field. */
5182         uint32_t msixtbir              : 3;  /**< [  2:  0](RO/WRSL) "MSI-X table BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
5183                                                                  table into memory space.
5184                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field." */
5185 #else /* Word 0 - Little Endian */
5186         uint32_t msixtbir              : 3;  /**< [  2:  0](RO/WRSL) "MSI-X table BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
5187                                                                  table into memory space.
5188                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field." */
5189         uint32_t msixtoffs             : 29; /**< [ 31:  3](RO/WRSL) MSI-X table offset register. Base address of the MSI-X table, as an offset from the base
5190                                                                  address of the BAR indicated by the table BIR bits. Writable through PEM()_CFG_WR.
5191                                                                  However, the application must not change this field. */
5192 #endif /* Word 0 - End */
5193     } s;
5194     /* struct bdk_pciercx_cfg045_s cn81xx; */
5195     struct bdk_pciercx_cfg045_cn88xx
5196     {
5197 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5198         uint32_t msixtoffs             : 29; /**< [ 31:  3](RO/WRSL/H) MSI-X table offset register. Base address of the MSI-X table, as an offset from the base
5199                                                                  address of the BAR indicated by the table BIR bits. Writable through PEM()_CFG_WR.
5200                                                                  However, the application must not change this field. */
5201         uint32_t msixtbir              : 3;  /**< [  2:  0](RO/WRSL) "MSI-X table BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
5202                                                                  table into memory space.
5203                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field." */
5204 #else /* Word 0 - Little Endian */
5205         uint32_t msixtbir              : 3;  /**< [  2:  0](RO/WRSL) "MSI-X table BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
5206                                                                  table into memory space.
5207                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field." */
5208         uint32_t msixtoffs             : 29; /**< [ 31:  3](RO/WRSL/H) MSI-X table offset register. Base address of the MSI-X table, as an offset from the base
5209                                                                  address of the BAR indicated by the table BIR bits. Writable through PEM()_CFG_WR.
5210                                                                  However, the application must not change this field. */
5211 #endif /* Word 0 - End */
5212     } cn88xx;
5213     /* struct bdk_pciercx_cfg045_s cn83xx; */
5214 };
5215 typedef union bdk_pciercx_cfg045 bdk_pciercx_cfg045_t;
5216 
5217 static inline uint64_t BDK_PCIERCX_CFG045(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG045(unsigned long a)5218 static inline uint64_t BDK_PCIERCX_CFG045(unsigned long a)
5219 {
5220     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5221         return 0x200000000b4ll + 0x100000000ll * ((a) & 0x3);
5222     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5223         return 0x200000000b4ll + 0x100000000ll * ((a) & 0x3);
5224     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
5225         return 0x200000000b4ll + 0x100000000ll * ((a) & 0x7);
5226     __bdk_csr_fatal("PCIERCX_CFG045", 1, a, 0, 0, 0);
5227 }
5228 
5229 #define typedef_BDK_PCIERCX_CFG045(a) bdk_pciercx_cfg045_t
5230 #define bustype_BDK_PCIERCX_CFG045(a) BDK_CSR_TYPE_PCICONFIGRC
5231 #define basename_BDK_PCIERCX_CFG045(a) "PCIERCX_CFG045"
5232 #define busnum_BDK_PCIERCX_CFG045(a) (a)
5233 #define arguments_BDK_PCIERCX_CFG045(a) (a),-1,-1,-1
5234 
5235 /**
5236  * Register (PCICONFIGRC) pcierc#_cfg046
5237  *
5238  * PCIe RC PCI Express MSI-X PBA Offset and BIR Register
5239  * This register contains the forty-seventh 32-bits of PCIe type 1 configuration space.
5240  */
5241 union bdk_pciercx_cfg046
5242 {
5243     uint32_t u;
5244     struct bdk_pciercx_cfg046_s
5245     {
5246 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5247         uint32_t msixpoffs             : 29; /**< [ 31:  3](RO/WRSL) MSI-X table offset register. Base address of the MSI-X PBA, as an offset from the base
5248                                                                  address of the BAR indicated by the table PBA bits. Writable through PEM()_CFG_WR.
5249                                                                  However, the application must not change this field. */
5250         uint32_t msixpbir              : 3;  /**< [  2:  0](RO/WRSL) "MSI-X PBA BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
5251                                                                  pending bit array into memory space.
5252                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field." */
5253 #else /* Word 0 - Little Endian */
5254         uint32_t msixpbir              : 3;  /**< [  2:  0](RO/WRSL) "MSI-X PBA BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
5255                                                                  pending bit array into memory space.
5256                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field." */
5257         uint32_t msixpoffs             : 29; /**< [ 31:  3](RO/WRSL) MSI-X table offset register. Base address of the MSI-X PBA, as an offset from the base
5258                                                                  address of the BAR indicated by the table PBA bits. Writable through PEM()_CFG_WR.
5259                                                                  However, the application must not change this field. */
5260 #endif /* Word 0 - End */
5261     } s;
5262     /* struct bdk_pciercx_cfg046_s cn81xx; */
5263     struct bdk_pciercx_cfg046_cn88xx
5264     {
5265 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5266         uint32_t msixpoffs             : 29; /**< [ 31:  3](RO/WRSL/H) MSI-X table offset register. Base address of the MSI-X PBA, as an offset from the base
5267                                                                  address of the BAR indicated by the table PBA bits. Writable through PEM()_CFG_WR.
5268                                                                  However, the application must not change this field. */
5269         uint32_t msixpbir              : 3;  /**< [  2:  0](RO/WRSL) "MSI-X PBA BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
5270                                                                  pending bit array into memory space.
5271                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field." */
5272 #else /* Word 0 - Little Endian */
5273         uint32_t msixpbir              : 3;  /**< [  2:  0](RO/WRSL) "MSI-X PBA BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
5274                                                                  pending bit array into memory space.
5275                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field." */
5276         uint32_t msixpoffs             : 29; /**< [ 31:  3](RO/WRSL/H) MSI-X table offset register. Base address of the MSI-X PBA, as an offset from the base
5277                                                                  address of the BAR indicated by the table PBA bits. Writable through PEM()_CFG_WR.
5278                                                                  However, the application must not change this field. */
5279 #endif /* Word 0 - End */
5280     } cn88xx;
5281     /* struct bdk_pciercx_cfg046_cn88xx cn83xx; */
5282 };
5283 typedef union bdk_pciercx_cfg046 bdk_pciercx_cfg046_t;
5284 
5285 static inline uint64_t BDK_PCIERCX_CFG046(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG046(unsigned long a)5286 static inline uint64_t BDK_PCIERCX_CFG046(unsigned long a)
5287 {
5288     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5289         return 0x200000000b8ll + 0x100000000ll * ((a) & 0x3);
5290     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5291         return 0x200000000b8ll + 0x100000000ll * ((a) & 0x3);
5292     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
5293         return 0x200000000b8ll + 0x100000000ll * ((a) & 0x7);
5294     __bdk_csr_fatal("PCIERCX_CFG046", 1, a, 0, 0, 0);
5295 }
5296 
5297 #define typedef_BDK_PCIERCX_CFG046(a) bdk_pciercx_cfg046_t
5298 #define bustype_BDK_PCIERCX_CFG046(a) BDK_CSR_TYPE_PCICONFIGRC
5299 #define basename_BDK_PCIERCX_CFG046(a) "PCIERCX_CFG046"
5300 #define busnum_BDK_PCIERCX_CFG046(a) (a)
5301 #define arguments_BDK_PCIERCX_CFG046(a) (a),-1,-1,-1
5302 
5303 /**
5304  * Register (PCICONFIGRC) pcierc#_cfg047
5305  *
5306  * PCIe RC Unused Capability Registers
5307  * This register contains 32-bits of PCIe type 1 configuration space.
5308  */
5309 union bdk_pciercx_cfg047
5310 {
5311     uint32_t u;
5312     struct bdk_pciercx_cfg047_s
5313     {
5314 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5315         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5316                                                                  for software to add additional configuration capabilities.
5317                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5318 #else /* Word 0 - Little Endian */
5319         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5320                                                                  for software to add additional configuration capabilities.
5321                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5322 #endif /* Word 0 - End */
5323     } s;
5324     /* struct bdk_pciercx_cfg047_s cn; */
5325 };
5326 typedef union bdk_pciercx_cfg047 bdk_pciercx_cfg047_t;
5327 
5328 static inline uint64_t BDK_PCIERCX_CFG047(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG047(unsigned long a)5329 static inline uint64_t BDK_PCIERCX_CFG047(unsigned long a)
5330 {
5331     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5332         return 0x200000000bcll + 0x100000000ll * ((a) & 0x3);
5333     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5334         return 0x200000000bcll + 0x100000000ll * ((a) & 0x3);
5335     __bdk_csr_fatal("PCIERCX_CFG047", 1, a, 0, 0, 0);
5336 }
5337 
5338 #define typedef_BDK_PCIERCX_CFG047(a) bdk_pciercx_cfg047_t
5339 #define bustype_BDK_PCIERCX_CFG047(a) BDK_CSR_TYPE_PCICONFIGRC
5340 #define basename_BDK_PCIERCX_CFG047(a) "PCIERCX_CFG047"
5341 #define busnum_BDK_PCIERCX_CFG047(a) (a)
5342 #define arguments_BDK_PCIERCX_CFG047(a) (a),-1,-1,-1
5343 
5344 /**
5345  * Register (PCICONFIGRC) pcierc#_cfg048
5346  *
5347  * PCIe RC Unused Capability Registers
5348  * This register contains 32-bits of PCIe type 1 configuration space.
5349  */
5350 union bdk_pciercx_cfg048
5351 {
5352     uint32_t u;
5353     struct bdk_pciercx_cfg048_s
5354     {
5355 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5356         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5357                                                                  for software to add additional configuration capabilities.
5358                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5359 #else /* Word 0 - Little Endian */
5360         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5361                                                                  for software to add additional configuration capabilities.
5362                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5363 #endif /* Word 0 - End */
5364     } s;
5365     /* struct bdk_pciercx_cfg048_s cn; */
5366 };
5367 typedef union bdk_pciercx_cfg048 bdk_pciercx_cfg048_t;
5368 
5369 static inline uint64_t BDK_PCIERCX_CFG048(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG048(unsigned long a)5370 static inline uint64_t BDK_PCIERCX_CFG048(unsigned long a)
5371 {
5372     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5373         return 0x200000000c0ll + 0x100000000ll * ((a) & 0x3);
5374     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5375         return 0x200000000c0ll + 0x100000000ll * ((a) & 0x3);
5376     __bdk_csr_fatal("PCIERCX_CFG048", 1, a, 0, 0, 0);
5377 }
5378 
5379 #define typedef_BDK_PCIERCX_CFG048(a) bdk_pciercx_cfg048_t
5380 #define bustype_BDK_PCIERCX_CFG048(a) BDK_CSR_TYPE_PCICONFIGRC
5381 #define basename_BDK_PCIERCX_CFG048(a) "PCIERCX_CFG048"
5382 #define busnum_BDK_PCIERCX_CFG048(a) (a)
5383 #define arguments_BDK_PCIERCX_CFG048(a) (a),-1,-1,-1
5384 
5385 /**
5386  * Register (PCICONFIGRC) pcierc#_cfg049
5387  *
5388  * PCIe RC Unused Capability Registers
5389  * This register contains 32-bits of PCIe type 1 configuration space.
5390  */
5391 union bdk_pciercx_cfg049
5392 {
5393     uint32_t u;
5394     struct bdk_pciercx_cfg049_s
5395     {
5396 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5397         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5398                                                                  for software to add additional configuration capabilities.
5399                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5400 #else /* Word 0 - Little Endian */
5401         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5402                                                                  for software to add additional configuration capabilities.
5403                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5404 #endif /* Word 0 - End */
5405     } s;
5406     /* struct bdk_pciercx_cfg049_s cn; */
5407 };
5408 typedef union bdk_pciercx_cfg049 bdk_pciercx_cfg049_t;
5409 
5410 static inline uint64_t BDK_PCIERCX_CFG049(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG049(unsigned long a)5411 static inline uint64_t BDK_PCIERCX_CFG049(unsigned long a)
5412 {
5413     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5414         return 0x200000000c4ll + 0x100000000ll * ((a) & 0x3);
5415     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5416         return 0x200000000c4ll + 0x100000000ll * ((a) & 0x3);
5417     __bdk_csr_fatal("PCIERCX_CFG049", 1, a, 0, 0, 0);
5418 }
5419 
5420 #define typedef_BDK_PCIERCX_CFG049(a) bdk_pciercx_cfg049_t
5421 #define bustype_BDK_PCIERCX_CFG049(a) BDK_CSR_TYPE_PCICONFIGRC
5422 #define basename_BDK_PCIERCX_CFG049(a) "PCIERCX_CFG049"
5423 #define busnum_BDK_PCIERCX_CFG049(a) (a)
5424 #define arguments_BDK_PCIERCX_CFG049(a) (a),-1,-1,-1
5425 
5426 /**
5427  * Register (PCICONFIGRC) pcierc#_cfg050
5428  *
5429  * PCIe RC Unused Capability Registers
5430  * This register contains 32-bits of PCIe type 1 configuration space.
5431  */
5432 union bdk_pciercx_cfg050
5433 {
5434     uint32_t u;
5435     struct bdk_pciercx_cfg050_s
5436     {
5437 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5438         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5439                                                                  for software to add additional configuration capabilities.
5440                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5441 #else /* Word 0 - Little Endian */
5442         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5443                                                                  for software to add additional configuration capabilities.
5444                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5445 #endif /* Word 0 - End */
5446     } s;
5447     /* struct bdk_pciercx_cfg050_s cn; */
5448 };
5449 typedef union bdk_pciercx_cfg050 bdk_pciercx_cfg050_t;
5450 
5451 static inline uint64_t BDK_PCIERCX_CFG050(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG050(unsigned long a)5452 static inline uint64_t BDK_PCIERCX_CFG050(unsigned long a)
5453 {
5454     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5455         return 0x200000000c8ll + 0x100000000ll * ((a) & 0x3);
5456     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5457         return 0x200000000c8ll + 0x100000000ll * ((a) & 0x3);
5458     __bdk_csr_fatal("PCIERCX_CFG050", 1, a, 0, 0, 0);
5459 }
5460 
5461 #define typedef_BDK_PCIERCX_CFG050(a) bdk_pciercx_cfg050_t
5462 #define bustype_BDK_PCIERCX_CFG050(a) BDK_CSR_TYPE_PCICONFIGRC
5463 #define basename_BDK_PCIERCX_CFG050(a) "PCIERCX_CFG050"
5464 #define busnum_BDK_PCIERCX_CFG050(a) (a)
5465 #define arguments_BDK_PCIERCX_CFG050(a) (a),-1,-1,-1
5466 
5467 /**
5468  * Register (PCICONFIGRC) pcierc#_cfg051
5469  *
5470  * PCIe RC Unused Capability Registers
5471  * This register contains 32-bits of PCIe type 1 configuration space.
5472  */
5473 union bdk_pciercx_cfg051
5474 {
5475     uint32_t u;
5476     struct bdk_pciercx_cfg051_s
5477     {
5478 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5479         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5480                                                                  for software to add additional configuration capabilities.
5481                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5482 #else /* Word 0 - Little Endian */
5483         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5484                                                                  for software to add additional configuration capabilities.
5485                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5486 #endif /* Word 0 - End */
5487     } s;
5488     /* struct bdk_pciercx_cfg051_s cn; */
5489 };
5490 typedef union bdk_pciercx_cfg051 bdk_pciercx_cfg051_t;
5491 
5492 static inline uint64_t BDK_PCIERCX_CFG051(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG051(unsigned long a)5493 static inline uint64_t BDK_PCIERCX_CFG051(unsigned long a)
5494 {
5495     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5496         return 0x200000000ccll + 0x100000000ll * ((a) & 0x3);
5497     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5498         return 0x200000000ccll + 0x100000000ll * ((a) & 0x3);
5499     __bdk_csr_fatal("PCIERCX_CFG051", 1, a, 0, 0, 0);
5500 }
5501 
5502 #define typedef_BDK_PCIERCX_CFG051(a) bdk_pciercx_cfg051_t
5503 #define bustype_BDK_PCIERCX_CFG051(a) BDK_CSR_TYPE_PCICONFIGRC
5504 #define basename_BDK_PCIERCX_CFG051(a) "PCIERCX_CFG051"
5505 #define busnum_BDK_PCIERCX_CFG051(a) (a)
5506 #define arguments_BDK_PCIERCX_CFG051(a) (a),-1,-1,-1
5507 
5508 /**
5509  * Register (PCICONFIGRC) pcierc#_cfg052
5510  *
5511  * PCIe RC Unused Capability Registers
5512  * This register contains 32-bits of PCIe type 1 configuration space.
5513  */
5514 union bdk_pciercx_cfg052
5515 {
5516     uint32_t u;
5517     struct bdk_pciercx_cfg052_s
5518     {
5519 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5520         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5521                                                                  for software to add additional configuration capabilities.
5522                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5523 #else /* Word 0 - Little Endian */
5524         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5525                                                                  for software to add additional configuration capabilities.
5526                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5527 #endif /* Word 0 - End */
5528     } s;
5529     /* struct bdk_pciercx_cfg052_s cn; */
5530 };
5531 typedef union bdk_pciercx_cfg052 bdk_pciercx_cfg052_t;
5532 
5533 static inline uint64_t BDK_PCIERCX_CFG052(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG052(unsigned long a)5534 static inline uint64_t BDK_PCIERCX_CFG052(unsigned long a)
5535 {
5536     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5537         return 0x200000000d0ll + 0x100000000ll * ((a) & 0x3);
5538     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5539         return 0x200000000d0ll + 0x100000000ll * ((a) & 0x3);
5540     __bdk_csr_fatal("PCIERCX_CFG052", 1, a, 0, 0, 0);
5541 }
5542 
5543 #define typedef_BDK_PCIERCX_CFG052(a) bdk_pciercx_cfg052_t
5544 #define bustype_BDK_PCIERCX_CFG052(a) BDK_CSR_TYPE_PCICONFIGRC
5545 #define basename_BDK_PCIERCX_CFG052(a) "PCIERCX_CFG052"
5546 #define busnum_BDK_PCIERCX_CFG052(a) (a)
5547 #define arguments_BDK_PCIERCX_CFG052(a) (a),-1,-1,-1
5548 
5549 /**
5550  * Register (PCICONFIGRC) pcierc#_cfg053
5551  *
5552  * PCIe RC Unused Capability Registers
5553  * This register contains 32-bits of PCIe type 1 configuration space.
5554  */
5555 union bdk_pciercx_cfg053
5556 {
5557     uint32_t u;
5558     struct bdk_pciercx_cfg053_s
5559     {
5560 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5561         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5562                                                                  for software to add additional configuration capabilities.
5563                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5564 #else /* Word 0 - Little Endian */
5565         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5566                                                                  for software to add additional configuration capabilities.
5567                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5568 #endif /* Word 0 - End */
5569     } s;
5570     /* struct bdk_pciercx_cfg053_s cn; */
5571 };
5572 typedef union bdk_pciercx_cfg053 bdk_pciercx_cfg053_t;
5573 
5574 static inline uint64_t BDK_PCIERCX_CFG053(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG053(unsigned long a)5575 static inline uint64_t BDK_PCIERCX_CFG053(unsigned long a)
5576 {
5577     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5578         return 0x200000000d4ll + 0x100000000ll * ((a) & 0x3);
5579     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5580         return 0x200000000d4ll + 0x100000000ll * ((a) & 0x3);
5581     __bdk_csr_fatal("PCIERCX_CFG053", 1, a, 0, 0, 0);
5582 }
5583 
5584 #define typedef_BDK_PCIERCX_CFG053(a) bdk_pciercx_cfg053_t
5585 #define bustype_BDK_PCIERCX_CFG053(a) BDK_CSR_TYPE_PCICONFIGRC
5586 #define basename_BDK_PCIERCX_CFG053(a) "PCIERCX_CFG053"
5587 #define busnum_BDK_PCIERCX_CFG053(a) (a)
5588 #define arguments_BDK_PCIERCX_CFG053(a) (a),-1,-1,-1
5589 
5590 /**
5591  * Register (PCICONFIGRC) pcierc#_cfg054
5592  *
5593  * PCIe RC Unused Capability Registers
5594  * This register contains 32-bits of PCIe type 1 configuration space.
5595  */
5596 union bdk_pciercx_cfg054
5597 {
5598     uint32_t u;
5599     struct bdk_pciercx_cfg054_s
5600     {
5601 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5602         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5603                                                                  for software to add additional configuration capabilities.
5604                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5605 #else /* Word 0 - Little Endian */
5606         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5607                                                                  for software to add additional configuration capabilities.
5608                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5609 #endif /* Word 0 - End */
5610     } s;
5611     /* struct bdk_pciercx_cfg054_s cn; */
5612 };
5613 typedef union bdk_pciercx_cfg054 bdk_pciercx_cfg054_t;
5614 
5615 static inline uint64_t BDK_PCIERCX_CFG054(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG054(unsigned long a)5616 static inline uint64_t BDK_PCIERCX_CFG054(unsigned long a)
5617 {
5618     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5619         return 0x200000000d8ll + 0x100000000ll * ((a) & 0x3);
5620     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5621         return 0x200000000d8ll + 0x100000000ll * ((a) & 0x3);
5622     __bdk_csr_fatal("PCIERCX_CFG054", 1, a, 0, 0, 0);
5623 }
5624 
5625 #define typedef_BDK_PCIERCX_CFG054(a) bdk_pciercx_cfg054_t
5626 #define bustype_BDK_PCIERCX_CFG054(a) BDK_CSR_TYPE_PCICONFIGRC
5627 #define basename_BDK_PCIERCX_CFG054(a) "PCIERCX_CFG054"
5628 #define busnum_BDK_PCIERCX_CFG054(a) (a)
5629 #define arguments_BDK_PCIERCX_CFG054(a) (a),-1,-1,-1
5630 
5631 /**
5632  * Register (PCICONFIGRC) pcierc#_cfg055
5633  *
5634  * PCIe RC Unused Capability Registers
5635  * This register contains 32-bits of PCIe type 1 configuration space.
5636  */
5637 union bdk_pciercx_cfg055
5638 {
5639     uint32_t u;
5640     struct bdk_pciercx_cfg055_s
5641     {
5642 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5643         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5644                                                                  for software to add additional configuration capabilities.
5645                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5646 #else /* Word 0 - Little Endian */
5647         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5648                                                                  for software to add additional configuration capabilities.
5649                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5650 #endif /* Word 0 - End */
5651     } s;
5652     /* struct bdk_pciercx_cfg055_s cn; */
5653 };
5654 typedef union bdk_pciercx_cfg055 bdk_pciercx_cfg055_t;
5655 
5656 static inline uint64_t BDK_PCIERCX_CFG055(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG055(unsigned long a)5657 static inline uint64_t BDK_PCIERCX_CFG055(unsigned long a)
5658 {
5659     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5660         return 0x200000000dcll + 0x100000000ll * ((a) & 0x3);
5661     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5662         return 0x200000000dcll + 0x100000000ll * ((a) & 0x3);
5663     __bdk_csr_fatal("PCIERCX_CFG055", 1, a, 0, 0, 0);
5664 }
5665 
5666 #define typedef_BDK_PCIERCX_CFG055(a) bdk_pciercx_cfg055_t
5667 #define bustype_BDK_PCIERCX_CFG055(a) BDK_CSR_TYPE_PCICONFIGRC
5668 #define basename_BDK_PCIERCX_CFG055(a) "PCIERCX_CFG055"
5669 #define busnum_BDK_PCIERCX_CFG055(a) (a)
5670 #define arguments_BDK_PCIERCX_CFG055(a) (a),-1,-1,-1
5671 
5672 /**
5673  * Register (PCICONFIGRC) pcierc#_cfg056
5674  *
5675  * PCIe RC Unused Capability Registers
5676  * This register contains 32-bits of PCIe type 1 configuration space.
5677  */
5678 union bdk_pciercx_cfg056
5679 {
5680     uint32_t u;
5681     struct bdk_pciercx_cfg056_s
5682     {
5683 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5684         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5685                                                                  for software to add additional configuration capabilities.
5686                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5687 #else /* Word 0 - Little Endian */
5688         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5689                                                                  for software to add additional configuration capabilities.
5690                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5691 #endif /* Word 0 - End */
5692     } s;
5693     /* struct bdk_pciercx_cfg056_s cn; */
5694 };
5695 typedef union bdk_pciercx_cfg056 bdk_pciercx_cfg056_t;
5696 
5697 static inline uint64_t BDK_PCIERCX_CFG056(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG056(unsigned long a)5698 static inline uint64_t BDK_PCIERCX_CFG056(unsigned long a)
5699 {
5700     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5701         return 0x200000000e0ll + 0x100000000ll * ((a) & 0x3);
5702     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5703         return 0x200000000e0ll + 0x100000000ll * ((a) & 0x3);
5704     __bdk_csr_fatal("PCIERCX_CFG056", 1, a, 0, 0, 0);
5705 }
5706 
5707 #define typedef_BDK_PCIERCX_CFG056(a) bdk_pciercx_cfg056_t
5708 #define bustype_BDK_PCIERCX_CFG056(a) BDK_CSR_TYPE_PCICONFIGRC
5709 #define basename_BDK_PCIERCX_CFG056(a) "PCIERCX_CFG056"
5710 #define busnum_BDK_PCIERCX_CFG056(a) (a)
5711 #define arguments_BDK_PCIERCX_CFG056(a) (a),-1,-1,-1
5712 
5713 /**
5714  * Register (PCICONFIGRC) pcierc#_cfg057
5715  *
5716  * PCIe RC Unused Capability Registers
5717  * This register contains 32-bits of PCIe type 1 configuration space.
5718  */
5719 union bdk_pciercx_cfg057
5720 {
5721     uint32_t u;
5722     struct bdk_pciercx_cfg057_s
5723     {
5724 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5725         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5726                                                                  for software to add additional configuration capabilities.
5727                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5728 #else /* Word 0 - Little Endian */
5729         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5730                                                                  for software to add additional configuration capabilities.
5731                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5732 #endif /* Word 0 - End */
5733     } s;
5734     /* struct bdk_pciercx_cfg057_s cn; */
5735 };
5736 typedef union bdk_pciercx_cfg057 bdk_pciercx_cfg057_t;
5737 
5738 static inline uint64_t BDK_PCIERCX_CFG057(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG057(unsigned long a)5739 static inline uint64_t BDK_PCIERCX_CFG057(unsigned long a)
5740 {
5741     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5742         return 0x200000000e4ll + 0x100000000ll * ((a) & 0x3);
5743     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5744         return 0x200000000e4ll + 0x100000000ll * ((a) & 0x3);
5745     __bdk_csr_fatal("PCIERCX_CFG057", 1, a, 0, 0, 0);
5746 }
5747 
5748 #define typedef_BDK_PCIERCX_CFG057(a) bdk_pciercx_cfg057_t
5749 #define bustype_BDK_PCIERCX_CFG057(a) BDK_CSR_TYPE_PCICONFIGRC
5750 #define basename_BDK_PCIERCX_CFG057(a) "PCIERCX_CFG057"
5751 #define busnum_BDK_PCIERCX_CFG057(a) (a)
5752 #define arguments_BDK_PCIERCX_CFG057(a) (a),-1,-1,-1
5753 
5754 /**
5755  * Register (PCICONFIGRC) pcierc#_cfg058
5756  *
5757  * PCIe RC Unused Capability Registers
5758  * This register contains 32-bits of PCIe type 1 configuration space.
5759  */
5760 union bdk_pciercx_cfg058
5761 {
5762     uint32_t u;
5763     struct bdk_pciercx_cfg058_s
5764     {
5765 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5766         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5767                                                                  for software to add additional configuration capabilities.
5768                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5769 #else /* Word 0 - Little Endian */
5770         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5771                                                                  for software to add additional configuration capabilities.
5772                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5773 #endif /* Word 0 - End */
5774     } s;
5775     /* struct bdk_pciercx_cfg058_s cn; */
5776 };
5777 typedef union bdk_pciercx_cfg058 bdk_pciercx_cfg058_t;
5778 
5779 static inline uint64_t BDK_PCIERCX_CFG058(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG058(unsigned long a)5780 static inline uint64_t BDK_PCIERCX_CFG058(unsigned long a)
5781 {
5782     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5783         return 0x200000000e8ll + 0x100000000ll * ((a) & 0x3);
5784     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5785         return 0x200000000e8ll + 0x100000000ll * ((a) & 0x3);
5786     __bdk_csr_fatal("PCIERCX_CFG058", 1, a, 0, 0, 0);
5787 }
5788 
5789 #define typedef_BDK_PCIERCX_CFG058(a) bdk_pciercx_cfg058_t
5790 #define bustype_BDK_PCIERCX_CFG058(a) BDK_CSR_TYPE_PCICONFIGRC
5791 #define basename_BDK_PCIERCX_CFG058(a) "PCIERCX_CFG058"
5792 #define busnum_BDK_PCIERCX_CFG058(a) (a)
5793 #define arguments_BDK_PCIERCX_CFG058(a) (a),-1,-1,-1
5794 
5795 /**
5796  * Register (PCICONFIGRC) pcierc#_cfg059
5797  *
5798  * PCIe RC Unused Capability Registers
5799  * This register contains 32-bits of PCIe type 1 configuration space.
5800  */
5801 union bdk_pciercx_cfg059
5802 {
5803     uint32_t u;
5804     struct bdk_pciercx_cfg059_s
5805     {
5806 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5807         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5808                                                                  for software to add additional configuration capabilities.
5809                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5810 #else /* Word 0 - Little Endian */
5811         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5812                                                                  for software to add additional configuration capabilities.
5813                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5814 #endif /* Word 0 - End */
5815     } s;
5816     /* struct bdk_pciercx_cfg059_s cn; */
5817 };
5818 typedef union bdk_pciercx_cfg059 bdk_pciercx_cfg059_t;
5819 
5820 static inline uint64_t BDK_PCIERCX_CFG059(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG059(unsigned long a)5821 static inline uint64_t BDK_PCIERCX_CFG059(unsigned long a)
5822 {
5823     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5824         return 0x200000000ecll + 0x100000000ll * ((a) & 0x3);
5825     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5826         return 0x200000000ecll + 0x100000000ll * ((a) & 0x3);
5827     __bdk_csr_fatal("PCIERCX_CFG059", 1, a, 0, 0, 0);
5828 }
5829 
5830 #define typedef_BDK_PCIERCX_CFG059(a) bdk_pciercx_cfg059_t
5831 #define bustype_BDK_PCIERCX_CFG059(a) BDK_CSR_TYPE_PCICONFIGRC
5832 #define basename_BDK_PCIERCX_CFG059(a) "PCIERCX_CFG059"
5833 #define busnum_BDK_PCIERCX_CFG059(a) (a)
5834 #define arguments_BDK_PCIERCX_CFG059(a) (a),-1,-1,-1
5835 
5836 /**
5837  * Register (PCICONFIGRC) pcierc#_cfg060
5838  *
5839  * PCIe RC Unused Capability Registers
5840  * This register contains 32-bits of PCIe type 1 configuration space.
5841  */
5842 union bdk_pciercx_cfg060
5843 {
5844     uint32_t u;
5845     struct bdk_pciercx_cfg060_s
5846     {
5847 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5848         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5849                                                                  for software to add additional configuration capabilities.
5850                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5851 #else /* Word 0 - Little Endian */
5852         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5853                                                                  for software to add additional configuration capabilities.
5854                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5855 #endif /* Word 0 - End */
5856     } s;
5857     /* struct bdk_pciercx_cfg060_s cn; */
5858 };
5859 typedef union bdk_pciercx_cfg060 bdk_pciercx_cfg060_t;
5860 
5861 static inline uint64_t BDK_PCIERCX_CFG060(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG060(unsigned long a)5862 static inline uint64_t BDK_PCIERCX_CFG060(unsigned long a)
5863 {
5864     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5865         return 0x200000000f0ll + 0x100000000ll * ((a) & 0x3);
5866     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5867         return 0x200000000f0ll + 0x100000000ll * ((a) & 0x3);
5868     __bdk_csr_fatal("PCIERCX_CFG060", 1, a, 0, 0, 0);
5869 }
5870 
5871 #define typedef_BDK_PCIERCX_CFG060(a) bdk_pciercx_cfg060_t
5872 #define bustype_BDK_PCIERCX_CFG060(a) BDK_CSR_TYPE_PCICONFIGRC
5873 #define basename_BDK_PCIERCX_CFG060(a) "PCIERCX_CFG060"
5874 #define busnum_BDK_PCIERCX_CFG060(a) (a)
5875 #define arguments_BDK_PCIERCX_CFG060(a) (a),-1,-1,-1
5876 
5877 /**
5878  * Register (PCICONFIGRC) pcierc#_cfg061
5879  *
5880  * PCIe RC Unused Capability Registers
5881  * This register contains 32-bits of PCIe type 1 configuration space.
5882  */
5883 union bdk_pciercx_cfg061
5884 {
5885     uint32_t u;
5886     struct bdk_pciercx_cfg061_s
5887     {
5888 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5889         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5890                                                                  for software to add additional configuration capabilities.
5891                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5892 #else /* Word 0 - Little Endian */
5893         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5894                                                                  for software to add additional configuration capabilities.
5895                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5896 #endif /* Word 0 - End */
5897     } s;
5898     /* struct bdk_pciercx_cfg061_s cn; */
5899 };
5900 typedef union bdk_pciercx_cfg061 bdk_pciercx_cfg061_t;
5901 
5902 static inline uint64_t BDK_PCIERCX_CFG061(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG061(unsigned long a)5903 static inline uint64_t BDK_PCIERCX_CFG061(unsigned long a)
5904 {
5905     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5906         return 0x200000000f4ll + 0x100000000ll * ((a) & 0x3);
5907     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5908         return 0x200000000f4ll + 0x100000000ll * ((a) & 0x3);
5909     __bdk_csr_fatal("PCIERCX_CFG061", 1, a, 0, 0, 0);
5910 }
5911 
5912 #define typedef_BDK_PCIERCX_CFG061(a) bdk_pciercx_cfg061_t
5913 #define bustype_BDK_PCIERCX_CFG061(a) BDK_CSR_TYPE_PCICONFIGRC
5914 #define basename_BDK_PCIERCX_CFG061(a) "PCIERCX_CFG061"
5915 #define busnum_BDK_PCIERCX_CFG061(a) (a)
5916 #define arguments_BDK_PCIERCX_CFG061(a) (a),-1,-1,-1
5917 
5918 /**
5919  * Register (PCICONFIGRC) pcierc#_cfg062
5920  *
5921  * PCIe RC Unused Capability Registers
5922  * This register contains 32-bits of PCIe type 1 configuration space.
5923  */
5924 union bdk_pciercx_cfg062
5925 {
5926     uint32_t u;
5927     struct bdk_pciercx_cfg062_s
5928     {
5929 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5930         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5931                                                                  for software to add additional configuration capabilities.
5932                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5933 #else /* Word 0 - Little Endian */
5934         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5935                                                                  for software to add additional configuration capabilities.
5936                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5937 #endif /* Word 0 - End */
5938     } s;
5939     /* struct bdk_pciercx_cfg062_s cn; */
5940 };
5941 typedef union bdk_pciercx_cfg062 bdk_pciercx_cfg062_t;
5942 
5943 static inline uint64_t BDK_PCIERCX_CFG062(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG062(unsigned long a)5944 static inline uint64_t BDK_PCIERCX_CFG062(unsigned long a)
5945 {
5946     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5947         return 0x200000000f8ll + 0x100000000ll * ((a) & 0x3);
5948     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5949         return 0x200000000f8ll + 0x100000000ll * ((a) & 0x3);
5950     __bdk_csr_fatal("PCIERCX_CFG062", 1, a, 0, 0, 0);
5951 }
5952 
5953 #define typedef_BDK_PCIERCX_CFG062(a) bdk_pciercx_cfg062_t
5954 #define bustype_BDK_PCIERCX_CFG062(a) BDK_CSR_TYPE_PCICONFIGRC
5955 #define basename_BDK_PCIERCX_CFG062(a) "PCIERCX_CFG062"
5956 #define busnum_BDK_PCIERCX_CFG062(a) (a)
5957 #define arguments_BDK_PCIERCX_CFG062(a) (a),-1,-1,-1
5958 
5959 /**
5960  * Register (PCICONFIGRC) pcierc#_cfg063
5961  *
5962  * PCIe RC Unused Capability Registers
5963  * This register contains 32-bits of PCIe type 1 configuration space.
5964  */
5965 union bdk_pciercx_cfg063
5966 {
5967     uint32_t u;
5968     struct bdk_pciercx_cfg063_s
5969     {
5970 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
5971         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5972                                                                  for software to add additional configuration capabilities.
5973                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5974 #else /* Word 0 - Little Endian */
5975         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC() hardware. It is available
5976                                                                  for software to add additional configuration capabilities.
5977                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
5978 #endif /* Word 0 - End */
5979     } s;
5980     /* struct bdk_pciercx_cfg063_s cn; */
5981 };
5982 typedef union bdk_pciercx_cfg063 bdk_pciercx_cfg063_t;
5983 
5984 static inline uint64_t BDK_PCIERCX_CFG063(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG063(unsigned long a)5985 static inline uint64_t BDK_PCIERCX_CFG063(unsigned long a)
5986 {
5987     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
5988         return 0x200000000fcll + 0x100000000ll * ((a) & 0x3);
5989     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
5990         return 0x200000000fcll + 0x100000000ll * ((a) & 0x3);
5991     __bdk_csr_fatal("PCIERCX_CFG063", 1, a, 0, 0, 0);
5992 }
5993 
5994 #define typedef_BDK_PCIERCX_CFG063(a) bdk_pciercx_cfg063_t
5995 #define bustype_BDK_PCIERCX_CFG063(a) BDK_CSR_TYPE_PCICONFIGRC
5996 #define basename_BDK_PCIERCX_CFG063(a) "PCIERCX_CFG063"
5997 #define busnum_BDK_PCIERCX_CFG063(a) (a)
5998 #define arguments_BDK_PCIERCX_CFG063(a) (a),-1,-1,-1
5999 
6000 /**
6001  * Register (PCICONFIGRC) pcierc#_cfg064
6002  *
6003  * PCIe RC PCI Express Extended Capability Header Register
6004  * This register contains the sixty-fifth 32-bits of PCIe type 1 configuration space.
6005  */
6006 union bdk_pciercx_cfg064
6007 {
6008     uint32_t u;
6009     struct bdk_pciercx_cfg064_s
6010     {
6011 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6012         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset. Points to the secondary PCI Express capabilities by default.
6013                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
6014         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
6015                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
6016         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
6017                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
6018 #else /* Word 0 - Little Endian */
6019         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
6020                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
6021         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
6022                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
6023         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset. Points to the secondary PCI Express capabilities by default.
6024                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
6025 #endif /* Word 0 - End */
6026     } s;
6027     /* struct bdk_pciercx_cfg064_s cn; */
6028 };
6029 typedef union bdk_pciercx_cfg064 bdk_pciercx_cfg064_t;
6030 
6031 static inline uint64_t BDK_PCIERCX_CFG064(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG064(unsigned long a)6032 static inline uint64_t BDK_PCIERCX_CFG064(unsigned long a)
6033 {
6034     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6035         return 0x20000000100ll + 0x100000000ll * ((a) & 0x3);
6036     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6037         return 0x20000000100ll + 0x100000000ll * ((a) & 0x3);
6038     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6039         return 0x20000000100ll + 0x100000000ll * ((a) & 0x7);
6040     __bdk_csr_fatal("PCIERCX_CFG064", 1, a, 0, 0, 0);
6041 }
6042 
6043 #define typedef_BDK_PCIERCX_CFG064(a) bdk_pciercx_cfg064_t
6044 #define bustype_BDK_PCIERCX_CFG064(a) BDK_CSR_TYPE_PCICONFIGRC
6045 #define basename_BDK_PCIERCX_CFG064(a) "PCIERCX_CFG064"
6046 #define busnum_BDK_PCIERCX_CFG064(a) (a)
6047 #define arguments_BDK_PCIERCX_CFG064(a) (a),-1,-1,-1
6048 
6049 /**
6050  * Register (PCICONFIGRC) pcierc#_cfg065
6051  *
6052  * PCIe RC Uncorrectable Error Status Register
6053  * This register contains the sixty-sixth 32-bits of PCIe type 1 configuration space.
6054  */
6055 union bdk_pciercx_cfg065
6056 {
6057     uint32_t u;
6058     struct bdk_pciercx_cfg065_s
6059     {
6060 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6061         uint32_t reserved_26_31        : 6;
6062         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
6063         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
6064         uint32_t reserved_23           : 1;
6065         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
6066         uint32_t reserved_21           : 1;
6067         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
6068         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
6069         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
6070         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
6071         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status */
6072         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
6073         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
6074         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
6075         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
6076         uint32_t reserved_6_11         : 6;
6077         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error status (not supported). */
6078         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
6079         uint32_t reserved_0_3          : 4;
6080 #else /* Word 0 - Little Endian */
6081         uint32_t reserved_0_3          : 4;
6082         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
6083         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error status (not supported). */
6084         uint32_t reserved_6_11         : 6;
6085         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
6086         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
6087         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
6088         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
6089         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status */
6090         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
6091         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
6092         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
6093         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
6094         uint32_t reserved_21           : 1;
6095         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
6096         uint32_t reserved_23           : 1;
6097         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
6098         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
6099         uint32_t reserved_26_31        : 6;
6100 #endif /* Word 0 - End */
6101     } s;
6102     struct bdk_pciercx_cfg065_cn81xx
6103     {
6104 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6105         uint32_t reserved_26_31        : 6;
6106         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
6107         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
6108         uint32_t reserved_23           : 1;
6109         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
6110         uint32_t reserved_21           : 1;
6111         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
6112         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
6113         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
6114         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
6115         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status */
6116         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
6117         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
6118         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
6119         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
6120         uint32_t reserved_6_11         : 6;
6121         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error status (not supported). */
6122         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
6123         uint32_t reserved_1_3          : 3;
6124         uint32_t reserved_0            : 1;
6125 #else /* Word 0 - Little Endian */
6126         uint32_t reserved_0            : 1;
6127         uint32_t reserved_1_3          : 3;
6128         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
6129         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error status (not supported). */
6130         uint32_t reserved_6_11         : 6;
6131         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
6132         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
6133         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
6134         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
6135         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status */
6136         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
6137         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
6138         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
6139         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
6140         uint32_t reserved_21           : 1;
6141         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
6142         uint32_t reserved_23           : 1;
6143         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
6144         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
6145         uint32_t reserved_26_31        : 6;
6146 #endif /* Word 0 - End */
6147     } cn81xx;
6148     /* struct bdk_pciercx_cfg065_cn81xx cn88xx; */
6149     struct bdk_pciercx_cfg065_cn83xx
6150     {
6151 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6152         uint32_t reserved_26_31        : 6;
6153         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
6154         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
6155         uint32_t reserved_23           : 1;
6156         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
6157         uint32_t reserved_21           : 1;
6158         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
6159         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
6160         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
6161         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
6162         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status */
6163         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
6164         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
6165         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
6166         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
6167         uint32_t reserved_6_11         : 6;
6168         uint32_t sdes                  : 1;  /**< [  5:  5](R/W1C/H) Surprise down error status. */
6169         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
6170         uint32_t reserved_1_3          : 3;
6171         uint32_t reserved_0            : 1;
6172 #else /* Word 0 - Little Endian */
6173         uint32_t reserved_0            : 1;
6174         uint32_t reserved_1_3          : 3;
6175         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
6176         uint32_t sdes                  : 1;  /**< [  5:  5](R/W1C/H) Surprise down error status. */
6177         uint32_t reserved_6_11         : 6;
6178         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
6179         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
6180         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
6181         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
6182         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status */
6183         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
6184         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
6185         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
6186         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
6187         uint32_t reserved_21           : 1;
6188         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
6189         uint32_t reserved_23           : 1;
6190         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
6191         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
6192         uint32_t reserved_26_31        : 6;
6193 #endif /* Word 0 - End */
6194     } cn83xx;
6195 };
6196 typedef union bdk_pciercx_cfg065 bdk_pciercx_cfg065_t;
6197 
6198 static inline uint64_t BDK_PCIERCX_CFG065(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG065(unsigned long a)6199 static inline uint64_t BDK_PCIERCX_CFG065(unsigned long a)
6200 {
6201     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6202         return 0x20000000104ll + 0x100000000ll * ((a) & 0x3);
6203     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6204         return 0x20000000104ll + 0x100000000ll * ((a) & 0x3);
6205     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6206         return 0x20000000104ll + 0x100000000ll * ((a) & 0x7);
6207     __bdk_csr_fatal("PCIERCX_CFG065", 1, a, 0, 0, 0);
6208 }
6209 
6210 #define typedef_BDK_PCIERCX_CFG065(a) bdk_pciercx_cfg065_t
6211 #define bustype_BDK_PCIERCX_CFG065(a) BDK_CSR_TYPE_PCICONFIGRC
6212 #define basename_BDK_PCIERCX_CFG065(a) "PCIERCX_CFG065"
6213 #define busnum_BDK_PCIERCX_CFG065(a) (a)
6214 #define arguments_BDK_PCIERCX_CFG065(a) (a),-1,-1,-1
6215 
6216 /**
6217  * Register (PCICONFIGRC) pcierc#_cfg066
6218  *
6219  * PCIe RC Uncorrectable Error Mask Register
6220  * This register contains the sixty-seventh 32-bits of PCIe type 1 configuration space.
6221  */
6222 union bdk_pciercx_cfg066
6223 {
6224     uint32_t u;
6225     struct bdk_pciercx_cfg066_s
6226     {
6227 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6228         uint32_t reserved_26_31        : 6;
6229         uint32_t tpbem                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error mask. */
6230         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked status. */
6231         uint32_t reserved_23           : 1;
6232         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
6233         uint32_t reserved_21           : 1;
6234         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
6235         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
6236         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
6237         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
6238         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
6239         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
6240         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
6241         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
6242         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
6243         uint32_t reserved_6_11         : 6;
6244         uint32_t sdem                  : 1;  /**< [  5:  5](RO) Surprise down error mask (not supported). */
6245         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
6246         uint32_t reserved_0_3          : 4;
6247 #else /* Word 0 - Little Endian */
6248         uint32_t reserved_0_3          : 4;
6249         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
6250         uint32_t sdem                  : 1;  /**< [  5:  5](RO) Surprise down error mask (not supported). */
6251         uint32_t reserved_6_11         : 6;
6252         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
6253         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
6254         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
6255         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
6256         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
6257         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
6258         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
6259         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
6260         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
6261         uint32_t reserved_21           : 1;
6262         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
6263         uint32_t reserved_23           : 1;
6264         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked status. */
6265         uint32_t tpbem                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error mask. */
6266         uint32_t reserved_26_31        : 6;
6267 #endif /* Word 0 - End */
6268     } s;
6269     struct bdk_pciercx_cfg066_cn88xxp1
6270     {
6271 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6272         uint32_t reserved_26_31        : 6;
6273         uint32_t tpbem                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error mask. */
6274         uint32_t uatombm               : 1;  /**< [ 24: 24](RO/H) Unsupported AtomicOp egress blocked status. */
6275         uint32_t reserved_23           : 1;
6276         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
6277         uint32_t reserved_21           : 1;
6278         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
6279         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
6280         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
6281         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
6282         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
6283         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
6284         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
6285         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
6286         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
6287         uint32_t reserved_6_11         : 6;
6288         uint32_t sdem                  : 1;  /**< [  5:  5](RO) Surprise down error mask (not supported). */
6289         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
6290         uint32_t reserved_1_3          : 3;
6291         uint32_t reserved_0            : 1;
6292 #else /* Word 0 - Little Endian */
6293         uint32_t reserved_0            : 1;
6294         uint32_t reserved_1_3          : 3;
6295         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
6296         uint32_t sdem                  : 1;  /**< [  5:  5](RO) Surprise down error mask (not supported). */
6297         uint32_t reserved_6_11         : 6;
6298         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
6299         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
6300         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
6301         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
6302         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
6303         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
6304         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
6305         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
6306         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
6307         uint32_t reserved_21           : 1;
6308         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
6309         uint32_t reserved_23           : 1;
6310         uint32_t uatombm               : 1;  /**< [ 24: 24](RO/H) Unsupported AtomicOp egress blocked status. */
6311         uint32_t tpbem                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error mask. */
6312         uint32_t reserved_26_31        : 6;
6313 #endif /* Word 0 - End */
6314     } cn88xxp1;
6315     struct bdk_pciercx_cfg066_cn81xx
6316     {
6317 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6318         uint32_t reserved_26_31        : 6;
6319         uint32_t tpbem                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error mask. */
6320         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked status. */
6321         uint32_t reserved_23           : 1;
6322         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
6323         uint32_t reserved_21           : 1;
6324         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
6325         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
6326         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
6327         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
6328         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
6329         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
6330         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
6331         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
6332         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
6333         uint32_t reserved_6_11         : 6;
6334         uint32_t sdem                  : 1;  /**< [  5:  5](RO) Surprise down error mask (not supported). */
6335         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
6336         uint32_t reserved_1_3          : 3;
6337         uint32_t reserved_0            : 1;
6338 #else /* Word 0 - Little Endian */
6339         uint32_t reserved_0            : 1;
6340         uint32_t reserved_1_3          : 3;
6341         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
6342         uint32_t sdem                  : 1;  /**< [  5:  5](RO) Surprise down error mask (not supported). */
6343         uint32_t reserved_6_11         : 6;
6344         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
6345         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
6346         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
6347         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
6348         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
6349         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
6350         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
6351         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
6352         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
6353         uint32_t reserved_21           : 1;
6354         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
6355         uint32_t reserved_23           : 1;
6356         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked status. */
6357         uint32_t tpbem                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error mask. */
6358         uint32_t reserved_26_31        : 6;
6359 #endif /* Word 0 - End */
6360     } cn81xx;
6361     struct bdk_pciercx_cfg066_cn83xx
6362     {
6363 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6364         uint32_t reserved_26_31        : 6;
6365         uint32_t tpbem                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error mask. */
6366         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked status. */
6367         uint32_t reserved_23           : 1;
6368         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
6369         uint32_t reserved_21           : 1;
6370         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
6371         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
6372         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
6373         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
6374         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
6375         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
6376         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
6377         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
6378         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
6379         uint32_t reserved_6_11         : 6;
6380         uint32_t sdem                  : 1;  /**< [  5:  5](R/W) Surprise down error mask. Writeable when PCIERC()_CFG031[SDERC] is set.
6381                                                                  When PCIERC()_CFG031[SDERC] is clear, will always read as clear. */
6382         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
6383         uint32_t reserved_1_3          : 3;
6384         uint32_t reserved_0            : 1;
6385 #else /* Word 0 - Little Endian */
6386         uint32_t reserved_0            : 1;
6387         uint32_t reserved_1_3          : 3;
6388         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
6389         uint32_t sdem                  : 1;  /**< [  5:  5](R/W) Surprise down error mask. Writeable when PCIERC()_CFG031[SDERC] is set.
6390                                                                  When PCIERC()_CFG031[SDERC] is clear, will always read as clear. */
6391         uint32_t reserved_6_11         : 6;
6392         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
6393         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
6394         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
6395         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
6396         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
6397         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
6398         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
6399         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
6400         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
6401         uint32_t reserved_21           : 1;
6402         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
6403         uint32_t reserved_23           : 1;
6404         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked status. */
6405         uint32_t tpbem                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error mask. */
6406         uint32_t reserved_26_31        : 6;
6407 #endif /* Word 0 - End */
6408     } cn83xx;
6409     /* struct bdk_pciercx_cfg066_cn81xx cn88xxp2; */
6410 };
6411 typedef union bdk_pciercx_cfg066 bdk_pciercx_cfg066_t;
6412 
6413 static inline uint64_t BDK_PCIERCX_CFG066(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG066(unsigned long a)6414 static inline uint64_t BDK_PCIERCX_CFG066(unsigned long a)
6415 {
6416     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6417         return 0x20000000108ll + 0x100000000ll * ((a) & 0x3);
6418     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6419         return 0x20000000108ll + 0x100000000ll * ((a) & 0x3);
6420     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6421         return 0x20000000108ll + 0x100000000ll * ((a) & 0x7);
6422     __bdk_csr_fatal("PCIERCX_CFG066", 1, a, 0, 0, 0);
6423 }
6424 
6425 #define typedef_BDK_PCIERCX_CFG066(a) bdk_pciercx_cfg066_t
6426 #define bustype_BDK_PCIERCX_CFG066(a) BDK_CSR_TYPE_PCICONFIGRC
6427 #define basename_BDK_PCIERCX_CFG066(a) "PCIERCX_CFG066"
6428 #define busnum_BDK_PCIERCX_CFG066(a) (a)
6429 #define arguments_BDK_PCIERCX_CFG066(a) (a),-1,-1,-1
6430 
6431 /**
6432  * Register (PCICONFIGRC) pcierc#_cfg067
6433  *
6434  * PCIe RC Uncorrectable Error Severity Register
6435  * This register contains the sixty-eighth 32-bits of PCIe type 1 configuration space.
6436  */
6437 union bdk_pciercx_cfg067
6438 {
6439     uint32_t u;
6440     struct bdk_pciercx_cfg067_s
6441     {
6442 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6443         uint32_t reserved_26_31        : 6;
6444         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error severity. */
6445         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
6446         uint32_t unsuperr              : 3;  /**< [ 23: 21](RO/H) Reserved. */
6447         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
6448         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
6449         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
6450         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
6451         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
6452         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
6453         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
6454         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
6455         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
6456         uint32_t reserved_6_11         : 6;
6457         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error severity (not supported). */
6458         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
6459         uint32_t reserved_0_3          : 4;
6460 #else /* Word 0 - Little Endian */
6461         uint32_t reserved_0_3          : 4;
6462         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
6463         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error severity (not supported). */
6464         uint32_t reserved_6_11         : 6;
6465         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
6466         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
6467         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
6468         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
6469         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
6470         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
6471         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
6472         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
6473         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
6474         uint32_t unsuperr              : 3;  /**< [ 23: 21](RO/H) Reserved. */
6475         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
6476         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error severity. */
6477         uint32_t reserved_26_31        : 6;
6478 #endif /* Word 0 - End */
6479     } s;
6480     struct bdk_pciercx_cfg067_cn88xxp1
6481     {
6482 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6483         uint32_t reserved_26_31        : 6;
6484         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error severity. */
6485         uint32_t uatombs               : 1;  /**< [ 24: 24](RO/H) Unsupported AtomicOp egress blocked severity. */
6486         uint32_t unsuperr              : 3;  /**< [ 23: 21](RO/H) Reserved. */
6487         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
6488         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
6489         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
6490         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
6491         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
6492         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
6493         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
6494         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
6495         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
6496         uint32_t reserved_6_11         : 6;
6497         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error severity (not supported). */
6498         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
6499         uint32_t reserved_1_3          : 3;
6500         uint32_t reserved_0            : 1;
6501 #else /* Word 0 - Little Endian */
6502         uint32_t reserved_0            : 1;
6503         uint32_t reserved_1_3          : 3;
6504         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
6505         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error severity (not supported). */
6506         uint32_t reserved_6_11         : 6;
6507         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
6508         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
6509         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
6510         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
6511         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
6512         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
6513         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
6514         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
6515         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
6516         uint32_t unsuperr              : 3;  /**< [ 23: 21](RO/H) Reserved. */
6517         uint32_t uatombs               : 1;  /**< [ 24: 24](RO/H) Unsupported AtomicOp egress blocked severity. */
6518         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error severity. */
6519         uint32_t reserved_26_31        : 6;
6520 #endif /* Word 0 - End */
6521     } cn88xxp1;
6522     struct bdk_pciercx_cfg067_cn81xx
6523     {
6524 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6525         uint32_t reserved_26_31        : 6;
6526         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error severity. */
6527         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
6528         uint32_t unsuperr              : 3;  /**< [ 23: 21](RO/H) Reserved. */
6529         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
6530         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
6531         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
6532         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
6533         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
6534         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
6535         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
6536         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
6537         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
6538         uint32_t reserved_6_11         : 6;
6539         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error severity (not supported). */
6540         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
6541         uint32_t reserved_1_3          : 3;
6542         uint32_t reserved_0            : 1;
6543 #else /* Word 0 - Little Endian */
6544         uint32_t reserved_0            : 1;
6545         uint32_t reserved_1_3          : 3;
6546         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
6547         uint32_t sdes                  : 1;  /**< [  5:  5](RO) Surprise down error severity (not supported). */
6548         uint32_t reserved_6_11         : 6;
6549         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
6550         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
6551         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
6552         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
6553         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
6554         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
6555         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
6556         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
6557         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
6558         uint32_t unsuperr              : 3;  /**< [ 23: 21](RO/H) Reserved. */
6559         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
6560         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error severity. */
6561         uint32_t reserved_26_31        : 6;
6562 #endif /* Word 0 - End */
6563     } cn81xx;
6564     struct bdk_pciercx_cfg067_cn83xx
6565     {
6566 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6567         uint32_t reserved_26_31        : 6;
6568         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error severity. */
6569         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
6570         uint32_t unsuperr              : 3;  /**< [ 23: 21](RO/H) Reserved. */
6571         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
6572         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
6573         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
6574         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
6575         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
6576         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
6577         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
6578         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
6579         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
6580         uint32_t reserved_6_11         : 6;
6581         uint32_t sdes                  : 1;  /**< [  5:  5](R/W) Surprise down error severity.  Writeable when PCIERC()_CFG031[SDERC] is set.
6582                                                                  When PCIERC()_CFG031[SDERC] is clear, will always read as set. */
6583         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
6584         uint32_t reserved_1_3          : 3;
6585         uint32_t reserved_0            : 1;
6586 #else /* Word 0 - Little Endian */
6587         uint32_t reserved_0            : 1;
6588         uint32_t reserved_1_3          : 3;
6589         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
6590         uint32_t sdes                  : 1;  /**< [  5:  5](R/W) Surprise down error severity.  Writeable when PCIERC()_CFG031[SDERC] is set.
6591                                                                  When PCIERC()_CFG031[SDERC] is clear, will always read as set. */
6592         uint32_t reserved_6_11         : 6;
6593         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
6594         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
6595         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
6596         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
6597         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
6598         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
6599         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
6600         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
6601         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
6602         uint32_t unsuperr              : 3;  /**< [ 23: 21](RO/H) Reserved. */
6603         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
6604         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error severity. */
6605         uint32_t reserved_26_31        : 6;
6606 #endif /* Word 0 - End */
6607     } cn83xx;
6608     /* struct bdk_pciercx_cfg067_cn81xx cn88xxp2; */
6609 };
6610 typedef union bdk_pciercx_cfg067 bdk_pciercx_cfg067_t;
6611 
6612 static inline uint64_t BDK_PCIERCX_CFG067(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG067(unsigned long a)6613 static inline uint64_t BDK_PCIERCX_CFG067(unsigned long a)
6614 {
6615     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6616         return 0x2000000010cll + 0x100000000ll * ((a) & 0x3);
6617     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6618         return 0x2000000010cll + 0x100000000ll * ((a) & 0x3);
6619     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6620         return 0x2000000010cll + 0x100000000ll * ((a) & 0x7);
6621     __bdk_csr_fatal("PCIERCX_CFG067", 1, a, 0, 0, 0);
6622 }
6623 
6624 #define typedef_BDK_PCIERCX_CFG067(a) bdk_pciercx_cfg067_t
6625 #define bustype_BDK_PCIERCX_CFG067(a) BDK_CSR_TYPE_PCICONFIGRC
6626 #define basename_BDK_PCIERCX_CFG067(a) "PCIERCX_CFG067"
6627 #define busnum_BDK_PCIERCX_CFG067(a) (a)
6628 #define arguments_BDK_PCIERCX_CFG067(a) (a),-1,-1,-1
6629 
6630 /**
6631  * Register (PCICONFIGRC) pcierc#_cfg068
6632  *
6633  * PCIe RC Correctable Error Status Register
6634  * This register contains the sixty-ninth 32-bits of PCIe type 1 configuration space.
6635  */
6636 union bdk_pciercx_cfg068
6637 {
6638     uint32_t u;
6639     struct bdk_pciercx_cfg068_s
6640     {
6641 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6642         uint32_t reserved_16_31        : 16;
6643         uint32_t chlo                  : 1;  /**< [ 15: 15](R/W1C/H) Corrected header log overflow status. */
6644         uint32_t cies                  : 1;  /**< [ 14: 14](R/W1C) Corrected internal error status. */
6645         uint32_t anfes                 : 1;  /**< [ 13: 13](R/W1C/H) Advisory nonfatal error status. */
6646         uint32_t rtts                  : 1;  /**< [ 12: 12](R/W1C/H) Replay timer timeout status. */
6647         uint32_t reserved_9_11         : 3;
6648         uint32_t rnrs                  : 1;  /**< [  8:  8](R/W1C/H) REPLAY_NUM rollover status. */
6649         uint32_t bdllps                : 1;  /**< [  7:  7](R/W1C/H) Bad DLLP status. */
6650         uint32_t btlps                 : 1;  /**< [  6:  6](R/W1C/H) Bad TLP status. */
6651         uint32_t reserved_1_5          : 5;
6652         uint32_t res                   : 1;  /**< [  0:  0](R/W1C/H) Receiver error status. */
6653 #else /* Word 0 - Little Endian */
6654         uint32_t res                   : 1;  /**< [  0:  0](R/W1C/H) Receiver error status. */
6655         uint32_t reserved_1_5          : 5;
6656         uint32_t btlps                 : 1;  /**< [  6:  6](R/W1C/H) Bad TLP status. */
6657         uint32_t bdllps                : 1;  /**< [  7:  7](R/W1C/H) Bad DLLP status. */
6658         uint32_t rnrs                  : 1;  /**< [  8:  8](R/W1C/H) REPLAY_NUM rollover status. */
6659         uint32_t reserved_9_11         : 3;
6660         uint32_t rtts                  : 1;  /**< [ 12: 12](R/W1C/H) Replay timer timeout status. */
6661         uint32_t anfes                 : 1;  /**< [ 13: 13](R/W1C/H) Advisory nonfatal error status. */
6662         uint32_t cies                  : 1;  /**< [ 14: 14](R/W1C) Corrected internal error status. */
6663         uint32_t chlo                  : 1;  /**< [ 15: 15](R/W1C/H) Corrected header log overflow status. */
6664         uint32_t reserved_16_31        : 16;
6665 #endif /* Word 0 - End */
6666     } s;
6667     struct bdk_pciercx_cfg068_cn81xx
6668     {
6669 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6670         uint32_t reserved_15_31        : 17;
6671         uint32_t cies                  : 1;  /**< [ 14: 14](R/W1C) Corrected internal error status. */
6672         uint32_t anfes                 : 1;  /**< [ 13: 13](R/W1C/H) Advisory nonfatal error status. */
6673         uint32_t rtts                  : 1;  /**< [ 12: 12](R/W1C/H) Replay timer timeout status. */
6674         uint32_t reserved_9_11         : 3;
6675         uint32_t rnrs                  : 1;  /**< [  8:  8](R/W1C/H) REPLAY_NUM rollover status. */
6676         uint32_t bdllps                : 1;  /**< [  7:  7](R/W1C/H) Bad DLLP status. */
6677         uint32_t btlps                 : 1;  /**< [  6:  6](R/W1C/H) Bad TLP status. */
6678         uint32_t reserved_1_5          : 5;
6679         uint32_t res                   : 1;  /**< [  0:  0](R/W1C/H) Receiver error status. */
6680 #else /* Word 0 - Little Endian */
6681         uint32_t res                   : 1;  /**< [  0:  0](R/W1C/H) Receiver error status. */
6682         uint32_t reserved_1_5          : 5;
6683         uint32_t btlps                 : 1;  /**< [  6:  6](R/W1C/H) Bad TLP status. */
6684         uint32_t bdllps                : 1;  /**< [  7:  7](R/W1C/H) Bad DLLP status. */
6685         uint32_t rnrs                  : 1;  /**< [  8:  8](R/W1C/H) REPLAY_NUM rollover status. */
6686         uint32_t reserved_9_11         : 3;
6687         uint32_t rtts                  : 1;  /**< [ 12: 12](R/W1C/H) Replay timer timeout status. */
6688         uint32_t anfes                 : 1;  /**< [ 13: 13](R/W1C/H) Advisory nonfatal error status. */
6689         uint32_t cies                  : 1;  /**< [ 14: 14](R/W1C) Corrected internal error status. */
6690         uint32_t reserved_15_31        : 17;
6691 #endif /* Word 0 - End */
6692     } cn81xx;
6693     /* struct bdk_pciercx_cfg068_cn81xx cn88xx; */
6694     struct bdk_pciercx_cfg068_cn83xx
6695     {
6696 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6697         uint32_t reserved_16_31        : 16;
6698         uint32_t chlo                  : 1;  /**< [ 15: 15](R/W1C/H) Corrected header log overflow status. */
6699         uint32_t cies                  : 1;  /**< [ 14: 14](R/W1C/H) Corrected internal error status. */
6700         uint32_t anfes                 : 1;  /**< [ 13: 13](R/W1C/H) Advisory nonfatal error status. */
6701         uint32_t rtts                  : 1;  /**< [ 12: 12](R/W1C/H) Replay timer timeout status. */
6702         uint32_t reserved_9_11         : 3;
6703         uint32_t rnrs                  : 1;  /**< [  8:  8](R/W1C/H) REPLAY_NUM rollover status. */
6704         uint32_t bdllps                : 1;  /**< [  7:  7](R/W1C/H) Bad DLLP status. */
6705         uint32_t btlps                 : 1;  /**< [  6:  6](R/W1C/H) Bad TLP status. */
6706         uint32_t reserved_1_5          : 5;
6707         uint32_t res                   : 1;  /**< [  0:  0](R/W1C/H) Receiver error status. */
6708 #else /* Word 0 - Little Endian */
6709         uint32_t res                   : 1;  /**< [  0:  0](R/W1C/H) Receiver error status. */
6710         uint32_t reserved_1_5          : 5;
6711         uint32_t btlps                 : 1;  /**< [  6:  6](R/W1C/H) Bad TLP status. */
6712         uint32_t bdllps                : 1;  /**< [  7:  7](R/W1C/H) Bad DLLP status. */
6713         uint32_t rnrs                  : 1;  /**< [  8:  8](R/W1C/H) REPLAY_NUM rollover status. */
6714         uint32_t reserved_9_11         : 3;
6715         uint32_t rtts                  : 1;  /**< [ 12: 12](R/W1C/H) Replay timer timeout status. */
6716         uint32_t anfes                 : 1;  /**< [ 13: 13](R/W1C/H) Advisory nonfatal error status. */
6717         uint32_t cies                  : 1;  /**< [ 14: 14](R/W1C/H) Corrected internal error status. */
6718         uint32_t chlo                  : 1;  /**< [ 15: 15](R/W1C/H) Corrected header log overflow status. */
6719         uint32_t reserved_16_31        : 16;
6720 #endif /* Word 0 - End */
6721     } cn83xx;
6722 };
6723 typedef union bdk_pciercx_cfg068 bdk_pciercx_cfg068_t;
6724 
6725 static inline uint64_t BDK_PCIERCX_CFG068(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG068(unsigned long a)6726 static inline uint64_t BDK_PCIERCX_CFG068(unsigned long a)
6727 {
6728     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6729         return 0x20000000110ll + 0x100000000ll * ((a) & 0x3);
6730     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6731         return 0x20000000110ll + 0x100000000ll * ((a) & 0x3);
6732     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6733         return 0x20000000110ll + 0x100000000ll * ((a) & 0x7);
6734     __bdk_csr_fatal("PCIERCX_CFG068", 1, a, 0, 0, 0);
6735 }
6736 
6737 #define typedef_BDK_PCIERCX_CFG068(a) bdk_pciercx_cfg068_t
6738 #define bustype_BDK_PCIERCX_CFG068(a) BDK_CSR_TYPE_PCICONFIGRC
6739 #define basename_BDK_PCIERCX_CFG068(a) "PCIERCX_CFG068"
6740 #define busnum_BDK_PCIERCX_CFG068(a) (a)
6741 #define arguments_BDK_PCIERCX_CFG068(a) (a),-1,-1,-1
6742 
6743 /**
6744  * Register (PCICONFIGRC) pcierc#_cfg069
6745  *
6746  * PCIe RC Correctable Error Mask Register
6747  * This register contains the seventieth 32-bits of PCIe type 1 configuration space.
6748  */
6749 union bdk_pciercx_cfg069
6750 {
6751     uint32_t u;
6752     struct bdk_pciercx_cfg069_s
6753     {
6754 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6755         uint32_t reserved_16_31        : 16;
6756         uint32_t chlom                 : 1;  /**< [ 15: 15](R/W) Corrected header log overflow error mask. */
6757         uint32_t ciem                  : 1;  /**< [ 14: 14](R/W) Corrected internal error mask. */
6758         uint32_t anfem                 : 1;  /**< [ 13: 13](R/W) Advisory nonfatal error mask. */
6759         uint32_t rttm                  : 1;  /**< [ 12: 12](R/W) Replay timer timeout mask. */
6760         uint32_t reserved_9_11         : 3;
6761         uint32_t rnrm                  : 1;  /**< [  8:  8](R/W) REPLAY_NUM rollover mask. */
6762         uint32_t bdllpm                : 1;  /**< [  7:  7](R/W) Bad DLLP mask. */
6763         uint32_t btlpm                 : 1;  /**< [  6:  6](R/W) Bad TLP mask. */
6764         uint32_t reserved_1_5          : 5;
6765         uint32_t rem                   : 1;  /**< [  0:  0](R/W) Receiver error mask. */
6766 #else /* Word 0 - Little Endian */
6767         uint32_t rem                   : 1;  /**< [  0:  0](R/W) Receiver error mask. */
6768         uint32_t reserved_1_5          : 5;
6769         uint32_t btlpm                 : 1;  /**< [  6:  6](R/W) Bad TLP mask. */
6770         uint32_t bdllpm                : 1;  /**< [  7:  7](R/W) Bad DLLP mask. */
6771         uint32_t rnrm                  : 1;  /**< [  8:  8](R/W) REPLAY_NUM rollover mask. */
6772         uint32_t reserved_9_11         : 3;
6773         uint32_t rttm                  : 1;  /**< [ 12: 12](R/W) Replay timer timeout mask. */
6774         uint32_t anfem                 : 1;  /**< [ 13: 13](R/W) Advisory nonfatal error mask. */
6775         uint32_t ciem                  : 1;  /**< [ 14: 14](R/W) Corrected internal error mask. */
6776         uint32_t chlom                 : 1;  /**< [ 15: 15](R/W) Corrected header log overflow error mask. */
6777         uint32_t reserved_16_31        : 16;
6778 #endif /* Word 0 - End */
6779     } s;
6780     struct bdk_pciercx_cfg069_cn81xx
6781     {
6782 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6783         uint32_t reserved_15_31        : 17;
6784         uint32_t ciem                  : 1;  /**< [ 14: 14](R/W) Corrected internal error mask. */
6785         uint32_t anfem                 : 1;  /**< [ 13: 13](R/W) Advisory nonfatal error mask. */
6786         uint32_t rttm                  : 1;  /**< [ 12: 12](R/W) Replay timer timeout mask. */
6787         uint32_t reserved_9_11         : 3;
6788         uint32_t rnrm                  : 1;  /**< [  8:  8](R/W) REPLAY_NUM rollover mask. */
6789         uint32_t bdllpm                : 1;  /**< [  7:  7](R/W) Bad DLLP mask. */
6790         uint32_t btlpm                 : 1;  /**< [  6:  6](R/W) Bad TLP mask. */
6791         uint32_t reserved_1_5          : 5;
6792         uint32_t rem                   : 1;  /**< [  0:  0](R/W) Receiver error mask. */
6793 #else /* Word 0 - Little Endian */
6794         uint32_t rem                   : 1;  /**< [  0:  0](R/W) Receiver error mask. */
6795         uint32_t reserved_1_5          : 5;
6796         uint32_t btlpm                 : 1;  /**< [  6:  6](R/W) Bad TLP mask. */
6797         uint32_t bdllpm                : 1;  /**< [  7:  7](R/W) Bad DLLP mask. */
6798         uint32_t rnrm                  : 1;  /**< [  8:  8](R/W) REPLAY_NUM rollover mask. */
6799         uint32_t reserved_9_11         : 3;
6800         uint32_t rttm                  : 1;  /**< [ 12: 12](R/W) Replay timer timeout mask. */
6801         uint32_t anfem                 : 1;  /**< [ 13: 13](R/W) Advisory nonfatal error mask. */
6802         uint32_t ciem                  : 1;  /**< [ 14: 14](R/W) Corrected internal error mask. */
6803         uint32_t reserved_15_31        : 17;
6804 #endif /* Word 0 - End */
6805     } cn81xx;
6806     /* struct bdk_pciercx_cfg069_cn81xx cn88xx; */
6807     /* struct bdk_pciercx_cfg069_s cn83xx; */
6808 };
6809 typedef union bdk_pciercx_cfg069 bdk_pciercx_cfg069_t;
6810 
6811 static inline uint64_t BDK_PCIERCX_CFG069(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG069(unsigned long a)6812 static inline uint64_t BDK_PCIERCX_CFG069(unsigned long a)
6813 {
6814     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6815         return 0x20000000114ll + 0x100000000ll * ((a) & 0x3);
6816     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6817         return 0x20000000114ll + 0x100000000ll * ((a) & 0x3);
6818     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6819         return 0x20000000114ll + 0x100000000ll * ((a) & 0x7);
6820     __bdk_csr_fatal("PCIERCX_CFG069", 1, a, 0, 0, 0);
6821 }
6822 
6823 #define typedef_BDK_PCIERCX_CFG069(a) bdk_pciercx_cfg069_t
6824 #define bustype_BDK_PCIERCX_CFG069(a) BDK_CSR_TYPE_PCICONFIGRC
6825 #define basename_BDK_PCIERCX_CFG069(a) "PCIERCX_CFG069"
6826 #define busnum_BDK_PCIERCX_CFG069(a) (a)
6827 #define arguments_BDK_PCIERCX_CFG069(a) (a),-1,-1,-1
6828 
6829 /**
6830  * Register (PCICONFIGRC) pcierc#_cfg070
6831  *
6832  * PCIe RC Advanced Capabilities and Control Register
6833  * This register contains the seventy-first 32-bits of PCIe type 1 configuration space.
6834  */
6835 union bdk_pciercx_cfg070
6836 {
6837     uint32_t u;
6838     struct bdk_pciercx_cfg070_s
6839     {
6840 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6841         uint32_t reserved_11_31        : 21;
6842         uint32_t mult_hdr_en           : 1;  /**< [ 10: 10](RO) Multiple header recording enable (not supported). */
6843         uint32_t mult_hdr_cap          : 1;  /**< [  9:  9](RO) Multiple header recording capability (not supported). */
6844         uint32_t ce                    : 1;  /**< [  8:  8](R/W) ECRC check enable. */
6845         uint32_t cc                    : 1;  /**< [  7:  7](RO) ECRC check capable. */
6846         uint32_t ge                    : 1;  /**< [  6:  6](R/W) ECRC generation enable. */
6847         uint32_t gc                    : 1;  /**< [  5:  5](RO) ECRC generation capability. */
6848         uint32_t fep                   : 5;  /**< [  4:  0](RO) First error pointer. */
6849 #else /* Word 0 - Little Endian */
6850         uint32_t fep                   : 5;  /**< [  4:  0](RO) First error pointer. */
6851         uint32_t gc                    : 1;  /**< [  5:  5](RO) ECRC generation capability. */
6852         uint32_t ge                    : 1;  /**< [  6:  6](R/W) ECRC generation enable. */
6853         uint32_t cc                    : 1;  /**< [  7:  7](RO) ECRC check capable. */
6854         uint32_t ce                    : 1;  /**< [  8:  8](R/W) ECRC check enable. */
6855         uint32_t mult_hdr_cap          : 1;  /**< [  9:  9](RO) Multiple header recording capability (not supported). */
6856         uint32_t mult_hdr_en           : 1;  /**< [ 10: 10](RO) Multiple header recording enable (not supported). */
6857         uint32_t reserved_11_31        : 21;
6858 #endif /* Word 0 - End */
6859     } s;
6860     struct bdk_pciercx_cfg070_cn81xx
6861     {
6862 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6863         uint32_t reserved_12_31        : 20;
6864         uint32_t tplp                  : 1;  /**< [ 11: 11](RO) TLP prefix log present. */
6865         uint32_t reserved_9_10         : 2;
6866         uint32_t ce                    : 1;  /**< [  8:  8](R/W) ECRC check enable. */
6867         uint32_t cc                    : 1;  /**< [  7:  7](RO) ECRC check capable. */
6868         uint32_t ge                    : 1;  /**< [  6:  6](R/W) ECRC generation enable. */
6869         uint32_t gc                    : 1;  /**< [  5:  5](RO) ECRC generation capability. */
6870         uint32_t fep                   : 5;  /**< [  4:  0](RO) First error pointer. */
6871 #else /* Word 0 - Little Endian */
6872         uint32_t fep                   : 5;  /**< [  4:  0](RO) First error pointer. */
6873         uint32_t gc                    : 1;  /**< [  5:  5](RO) ECRC generation capability. */
6874         uint32_t ge                    : 1;  /**< [  6:  6](R/W) ECRC generation enable. */
6875         uint32_t cc                    : 1;  /**< [  7:  7](RO) ECRC check capable. */
6876         uint32_t ce                    : 1;  /**< [  8:  8](R/W) ECRC check enable. */
6877         uint32_t reserved_9_10         : 2;
6878         uint32_t tplp                  : 1;  /**< [ 11: 11](RO) TLP prefix log present. */
6879         uint32_t reserved_12_31        : 20;
6880 #endif /* Word 0 - End */
6881     } cn81xx;
6882     /* struct bdk_pciercx_cfg070_cn81xx cn88xx; */
6883     struct bdk_pciercx_cfg070_cn83xx
6884     {
6885 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6886         uint32_t reserved_12_31        : 20;
6887         uint32_t tlp_plp               : 1;  /**< [ 11: 11](RO) TLP prefix log present. */
6888         uint32_t mult_hdr_en           : 1;  /**< [ 10: 10](RO) Multiple header recording enable (not supported). */
6889         uint32_t mult_hdr_cap          : 1;  /**< [  9:  9](RO) Multiple header recording capability (not supported). */
6890         uint32_t ce                    : 1;  /**< [  8:  8](R/W) ECRC check enable. */
6891         uint32_t cc                    : 1;  /**< [  7:  7](RO) ECRC check capable. */
6892         uint32_t ge                    : 1;  /**< [  6:  6](R/W) ECRC generation enable. */
6893         uint32_t gc                    : 1;  /**< [  5:  5](RO) ECRC generation capability. */
6894         uint32_t fep                   : 5;  /**< [  4:  0](RO) First error pointer. */
6895 #else /* Word 0 - Little Endian */
6896         uint32_t fep                   : 5;  /**< [  4:  0](RO) First error pointer. */
6897         uint32_t gc                    : 1;  /**< [  5:  5](RO) ECRC generation capability. */
6898         uint32_t ge                    : 1;  /**< [  6:  6](R/W) ECRC generation enable. */
6899         uint32_t cc                    : 1;  /**< [  7:  7](RO) ECRC check capable. */
6900         uint32_t ce                    : 1;  /**< [  8:  8](R/W) ECRC check enable. */
6901         uint32_t mult_hdr_cap          : 1;  /**< [  9:  9](RO) Multiple header recording capability (not supported). */
6902         uint32_t mult_hdr_en           : 1;  /**< [ 10: 10](RO) Multiple header recording enable (not supported). */
6903         uint32_t tlp_plp               : 1;  /**< [ 11: 11](RO) TLP prefix log present. */
6904         uint32_t reserved_12_31        : 20;
6905 #endif /* Word 0 - End */
6906     } cn83xx;
6907 };
6908 typedef union bdk_pciercx_cfg070 bdk_pciercx_cfg070_t;
6909 
6910 static inline uint64_t BDK_PCIERCX_CFG070(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG070(unsigned long a)6911 static inline uint64_t BDK_PCIERCX_CFG070(unsigned long a)
6912 {
6913     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6914         return 0x20000000118ll + 0x100000000ll * ((a) & 0x3);
6915     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6916         return 0x20000000118ll + 0x100000000ll * ((a) & 0x3);
6917     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6918         return 0x20000000118ll + 0x100000000ll * ((a) & 0x7);
6919     __bdk_csr_fatal("PCIERCX_CFG070", 1, a, 0, 0, 0);
6920 }
6921 
6922 #define typedef_BDK_PCIERCX_CFG070(a) bdk_pciercx_cfg070_t
6923 #define bustype_BDK_PCIERCX_CFG070(a) BDK_CSR_TYPE_PCICONFIGRC
6924 #define basename_BDK_PCIERCX_CFG070(a) "PCIERCX_CFG070"
6925 #define busnum_BDK_PCIERCX_CFG070(a) (a)
6926 #define arguments_BDK_PCIERCX_CFG070(a) (a),-1,-1,-1
6927 
6928 /**
6929  * Register (PCICONFIGRC) pcierc#_cfg071
6930  *
6931  * PCIe RC Header Log Register 1
6932  * This register contains the seventy-second 32-bits of PCIe type 1 configuration space.  The
6933  * header log registers collect the header for the TLP corresponding to a detected error.
6934  */
6935 union bdk_pciercx_cfg071
6936 {
6937     uint32_t u;
6938     struct bdk_pciercx_cfg071_s
6939     {
6940 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6941         uint32_t dword1                : 32; /**< [ 31:  0](RO) Header log register (first DWORD). */
6942 #else /* Word 0 - Little Endian */
6943         uint32_t dword1                : 32; /**< [ 31:  0](RO) Header log register (first DWORD). */
6944 #endif /* Word 0 - End */
6945     } s;
6946     /* struct bdk_pciercx_cfg071_s cn; */
6947 };
6948 typedef union bdk_pciercx_cfg071 bdk_pciercx_cfg071_t;
6949 
6950 static inline uint64_t BDK_PCIERCX_CFG071(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG071(unsigned long a)6951 static inline uint64_t BDK_PCIERCX_CFG071(unsigned long a)
6952 {
6953     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6954         return 0x2000000011cll + 0x100000000ll * ((a) & 0x3);
6955     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6956         return 0x2000000011cll + 0x100000000ll * ((a) & 0x3);
6957     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6958         return 0x2000000011cll + 0x100000000ll * ((a) & 0x7);
6959     __bdk_csr_fatal("PCIERCX_CFG071", 1, a, 0, 0, 0);
6960 }
6961 
6962 #define typedef_BDK_PCIERCX_CFG071(a) bdk_pciercx_cfg071_t
6963 #define bustype_BDK_PCIERCX_CFG071(a) BDK_CSR_TYPE_PCICONFIGRC
6964 #define basename_BDK_PCIERCX_CFG071(a) "PCIERCX_CFG071"
6965 #define busnum_BDK_PCIERCX_CFG071(a) (a)
6966 #define arguments_BDK_PCIERCX_CFG071(a) (a),-1,-1,-1
6967 
6968 /**
6969  * Register (PCICONFIGRC) pcierc#_cfg072
6970  *
6971  * PCIe RC Header Log Register 2
6972  * This register contains the seventy-third 32-bits of PCIe type 1 configuration space.  The
6973  * header log registers collect the header for the TLP corresponding to a detected error.
6974  */
6975 union bdk_pciercx_cfg072
6976 {
6977     uint32_t u;
6978     struct bdk_pciercx_cfg072_s
6979     {
6980 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
6981         uint32_t dword2                : 32; /**< [ 31:  0](RO) Header log register (second DWORD). */
6982 #else /* Word 0 - Little Endian */
6983         uint32_t dword2                : 32; /**< [ 31:  0](RO) Header log register (second DWORD). */
6984 #endif /* Word 0 - End */
6985     } s;
6986     /* struct bdk_pciercx_cfg072_s cn; */
6987 };
6988 typedef union bdk_pciercx_cfg072 bdk_pciercx_cfg072_t;
6989 
6990 static inline uint64_t BDK_PCIERCX_CFG072(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG072(unsigned long a)6991 static inline uint64_t BDK_PCIERCX_CFG072(unsigned long a)
6992 {
6993     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
6994         return 0x20000000120ll + 0x100000000ll * ((a) & 0x3);
6995     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
6996         return 0x20000000120ll + 0x100000000ll * ((a) & 0x3);
6997     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
6998         return 0x20000000120ll + 0x100000000ll * ((a) & 0x7);
6999     __bdk_csr_fatal("PCIERCX_CFG072", 1, a, 0, 0, 0);
7000 }
7001 
7002 #define typedef_BDK_PCIERCX_CFG072(a) bdk_pciercx_cfg072_t
7003 #define bustype_BDK_PCIERCX_CFG072(a) BDK_CSR_TYPE_PCICONFIGRC
7004 #define basename_BDK_PCIERCX_CFG072(a) "PCIERCX_CFG072"
7005 #define busnum_BDK_PCIERCX_CFG072(a) (a)
7006 #define arguments_BDK_PCIERCX_CFG072(a) (a),-1,-1,-1
7007 
7008 /**
7009  * Register (PCICONFIGRC) pcierc#_cfg073
7010  *
7011  * PCIe RC Header Log Register 3
7012  * This register contains the seventy-fourth 32-bits of PCIe type 1 configuration space.  The
7013  * header log registers collect the header for the TLP corresponding to a detected error.
7014  */
7015 union bdk_pciercx_cfg073
7016 {
7017     uint32_t u;
7018     struct bdk_pciercx_cfg073_s
7019     {
7020 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7021         uint32_t dword3                : 32; /**< [ 31:  0](RO) Header log register (third DWORD). */
7022 #else /* Word 0 - Little Endian */
7023         uint32_t dword3                : 32; /**< [ 31:  0](RO) Header log register (third DWORD). */
7024 #endif /* Word 0 - End */
7025     } s;
7026     /* struct bdk_pciercx_cfg073_s cn; */
7027 };
7028 typedef union bdk_pciercx_cfg073 bdk_pciercx_cfg073_t;
7029 
7030 static inline uint64_t BDK_PCIERCX_CFG073(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG073(unsigned long a)7031 static inline uint64_t BDK_PCIERCX_CFG073(unsigned long a)
7032 {
7033     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7034         return 0x20000000124ll + 0x100000000ll * ((a) & 0x3);
7035     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7036         return 0x20000000124ll + 0x100000000ll * ((a) & 0x3);
7037     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7038         return 0x20000000124ll + 0x100000000ll * ((a) & 0x7);
7039     __bdk_csr_fatal("PCIERCX_CFG073", 1, a, 0, 0, 0);
7040 }
7041 
7042 #define typedef_BDK_PCIERCX_CFG073(a) bdk_pciercx_cfg073_t
7043 #define bustype_BDK_PCIERCX_CFG073(a) BDK_CSR_TYPE_PCICONFIGRC
7044 #define basename_BDK_PCIERCX_CFG073(a) "PCIERCX_CFG073"
7045 #define busnum_BDK_PCIERCX_CFG073(a) (a)
7046 #define arguments_BDK_PCIERCX_CFG073(a) (a),-1,-1,-1
7047 
7048 /**
7049  * Register (PCICONFIGRC) pcierc#_cfg074
7050  *
7051  * PCIe RC Header Log Register 4
7052  * This register contains the seventy-fifth 32-bits of PCIe type 1 configuration space.  The
7053  * header log registers collect the header for the TLP corresponding to a detected error.
7054  */
7055 union bdk_pciercx_cfg074
7056 {
7057     uint32_t u;
7058     struct bdk_pciercx_cfg074_s
7059     {
7060 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7061         uint32_t dword4                : 32; /**< [ 31:  0](RO) Header log register (fourth DWORD). */
7062 #else /* Word 0 - Little Endian */
7063         uint32_t dword4                : 32; /**< [ 31:  0](RO) Header log register (fourth DWORD). */
7064 #endif /* Word 0 - End */
7065     } s;
7066     /* struct bdk_pciercx_cfg074_s cn; */
7067 };
7068 typedef union bdk_pciercx_cfg074 bdk_pciercx_cfg074_t;
7069 
7070 static inline uint64_t BDK_PCIERCX_CFG074(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG074(unsigned long a)7071 static inline uint64_t BDK_PCIERCX_CFG074(unsigned long a)
7072 {
7073     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7074         return 0x20000000128ll + 0x100000000ll * ((a) & 0x3);
7075     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7076         return 0x20000000128ll + 0x100000000ll * ((a) & 0x3);
7077     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7078         return 0x20000000128ll + 0x100000000ll * ((a) & 0x7);
7079     __bdk_csr_fatal("PCIERCX_CFG074", 1, a, 0, 0, 0);
7080 }
7081 
7082 #define typedef_BDK_PCIERCX_CFG074(a) bdk_pciercx_cfg074_t
7083 #define bustype_BDK_PCIERCX_CFG074(a) BDK_CSR_TYPE_PCICONFIGRC
7084 #define basename_BDK_PCIERCX_CFG074(a) "PCIERCX_CFG074"
7085 #define busnum_BDK_PCIERCX_CFG074(a) (a)
7086 #define arguments_BDK_PCIERCX_CFG074(a) (a),-1,-1,-1
7087 
7088 /**
7089  * Register (PCICONFIGRC) pcierc#_cfg075
7090  *
7091  * PCIe RC Root Error Command Register
7092  * This register contains the seventy-sixth 32-bits of PCIe type 1 configuration space.
7093  */
7094 union bdk_pciercx_cfg075
7095 {
7096     uint32_t u;
7097     struct bdk_pciercx_cfg075_s
7098     {
7099 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7100         uint32_t reserved_3_31         : 29;
7101         uint32_t fere                  : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
7102         uint32_t nfere                 : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
7103         uint32_t cere                  : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
7104 #else /* Word 0 - Little Endian */
7105         uint32_t cere                  : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
7106         uint32_t nfere                 : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
7107         uint32_t fere                  : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
7108         uint32_t reserved_3_31         : 29;
7109 #endif /* Word 0 - End */
7110     } s;
7111     /* struct bdk_pciercx_cfg075_s cn; */
7112 };
7113 typedef union bdk_pciercx_cfg075 bdk_pciercx_cfg075_t;
7114 
7115 static inline uint64_t BDK_PCIERCX_CFG075(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG075(unsigned long a)7116 static inline uint64_t BDK_PCIERCX_CFG075(unsigned long a)
7117 {
7118     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7119         return 0x2000000012cll + 0x100000000ll * ((a) & 0x3);
7120     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7121         return 0x2000000012cll + 0x100000000ll * ((a) & 0x3);
7122     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7123         return 0x2000000012cll + 0x100000000ll * ((a) & 0x7);
7124     __bdk_csr_fatal("PCIERCX_CFG075", 1, a, 0, 0, 0);
7125 }
7126 
7127 #define typedef_BDK_PCIERCX_CFG075(a) bdk_pciercx_cfg075_t
7128 #define bustype_BDK_PCIERCX_CFG075(a) BDK_CSR_TYPE_PCICONFIGRC
7129 #define basename_BDK_PCIERCX_CFG075(a) "PCIERCX_CFG075"
7130 #define busnum_BDK_PCIERCX_CFG075(a) (a)
7131 #define arguments_BDK_PCIERCX_CFG075(a) (a),-1,-1,-1
7132 
7133 /**
7134  * Register (PCICONFIGRC) pcierc#_cfg076
7135  *
7136  * PCIe RC Root Error Status Register
7137  * This register contains the seventy-seventh 32-bits of PCIe type 1 configuration space.
7138  */
7139 union bdk_pciercx_cfg076
7140 {
7141     uint32_t u;
7142     struct bdk_pciercx_cfg076_s
7143     {
7144 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7145         uint32_t aeimn                 : 5;  /**< [ 31: 27](RO/WRSL) Advanced error interrupt message number, writable through
7146                                                                  PEM()_CFG_WR. */
7147         uint32_t reserved_7_26         : 20;
7148         uint32_t femr                  : 1;  /**< [  6:  6](R/W1C/H) Fatal error messages received. */
7149         uint32_t nfemr                 : 1;  /**< [  5:  5](R/W1C/H) Nonfatal error messages received. */
7150         uint32_t fuf                   : 1;  /**< [  4:  4](R/W1C/H) First uncorrectable fatal. */
7151         uint32_t multi_efnfr           : 1;  /**< [  3:  3](R/W1C/H) Multiple ERR_FATAL/NONFATAL received. */
7152         uint32_t efnfr                 : 1;  /**< [  2:  2](R/W1C/H) ERR_FATAL/NONFATAL received. */
7153         uint32_t multi_ecr             : 1;  /**< [  1:  1](R/W1C/H) Multiple ERR_COR received. */
7154         uint32_t ecr                   : 1;  /**< [  0:  0](R/W1C/H) ERR_COR received. */
7155 #else /* Word 0 - Little Endian */
7156         uint32_t ecr                   : 1;  /**< [  0:  0](R/W1C/H) ERR_COR received. */
7157         uint32_t multi_ecr             : 1;  /**< [  1:  1](R/W1C/H) Multiple ERR_COR received. */
7158         uint32_t efnfr                 : 1;  /**< [  2:  2](R/W1C/H) ERR_FATAL/NONFATAL received. */
7159         uint32_t multi_efnfr           : 1;  /**< [  3:  3](R/W1C/H) Multiple ERR_FATAL/NONFATAL received. */
7160         uint32_t fuf                   : 1;  /**< [  4:  4](R/W1C/H) First uncorrectable fatal. */
7161         uint32_t nfemr                 : 1;  /**< [  5:  5](R/W1C/H) Nonfatal error messages received. */
7162         uint32_t femr                  : 1;  /**< [  6:  6](R/W1C/H) Fatal error messages received. */
7163         uint32_t reserved_7_26         : 20;
7164         uint32_t aeimn                 : 5;  /**< [ 31: 27](RO/WRSL) Advanced error interrupt message number, writable through
7165                                                                  PEM()_CFG_WR. */
7166 #endif /* Word 0 - End */
7167     } s;
7168     /* struct bdk_pciercx_cfg076_s cn; */
7169 };
7170 typedef union bdk_pciercx_cfg076 bdk_pciercx_cfg076_t;
7171 
7172 static inline uint64_t BDK_PCIERCX_CFG076(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG076(unsigned long a)7173 static inline uint64_t BDK_PCIERCX_CFG076(unsigned long a)
7174 {
7175     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7176         return 0x20000000130ll + 0x100000000ll * ((a) & 0x3);
7177     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7178         return 0x20000000130ll + 0x100000000ll * ((a) & 0x3);
7179     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7180         return 0x20000000130ll + 0x100000000ll * ((a) & 0x7);
7181     __bdk_csr_fatal("PCIERCX_CFG076", 1, a, 0, 0, 0);
7182 }
7183 
7184 #define typedef_BDK_PCIERCX_CFG076(a) bdk_pciercx_cfg076_t
7185 #define bustype_BDK_PCIERCX_CFG076(a) BDK_CSR_TYPE_PCICONFIGRC
7186 #define basename_BDK_PCIERCX_CFG076(a) "PCIERCX_CFG076"
7187 #define busnum_BDK_PCIERCX_CFG076(a) (a)
7188 #define arguments_BDK_PCIERCX_CFG076(a) (a),-1,-1,-1
7189 
7190 /**
7191  * Register (PCICONFIGRC) pcierc#_cfg077
7192  *
7193  * PCIe RC Error Source Identification Register
7194  * This register contains the seventy-eighth 32-bits of PCIe type 1 configuration space.
7195  */
7196 union bdk_pciercx_cfg077
7197 {
7198     uint32_t u;
7199     struct bdk_pciercx_cfg077_s
7200     {
7201 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7202         uint32_t efnfsi                : 16; /**< [ 31: 16](RO/H) ERR_FATAL/NONFATAL source identification. */
7203         uint32_t ecsi                  : 16; /**< [ 15:  0](RO/H) ERR_COR source identification. */
7204 #else /* Word 0 - Little Endian */
7205         uint32_t ecsi                  : 16; /**< [ 15:  0](RO/H) ERR_COR source identification. */
7206         uint32_t efnfsi                : 16; /**< [ 31: 16](RO/H) ERR_FATAL/NONFATAL source identification. */
7207 #endif /* Word 0 - End */
7208     } s;
7209     /* struct bdk_pciercx_cfg077_s cn81xx; */
7210     struct bdk_pciercx_cfg077_cn88xx
7211     {
7212 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7213         uint32_t efnfsi                : 16; /**< [ 31: 16](RO) ERR_FATAL/NONFATAL source identification. */
7214         uint32_t ecsi                  : 16; /**< [ 15:  0](RO) ERR_COR source identification. */
7215 #else /* Word 0 - Little Endian */
7216         uint32_t ecsi                  : 16; /**< [ 15:  0](RO) ERR_COR source identification. */
7217         uint32_t efnfsi                : 16; /**< [ 31: 16](RO) ERR_FATAL/NONFATAL source identification. */
7218 #endif /* Word 0 - End */
7219     } cn88xx;
7220     /* struct bdk_pciercx_cfg077_s cn83xx; */
7221 };
7222 typedef union bdk_pciercx_cfg077 bdk_pciercx_cfg077_t;
7223 
7224 static inline uint64_t BDK_PCIERCX_CFG077(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG077(unsigned long a)7225 static inline uint64_t BDK_PCIERCX_CFG077(unsigned long a)
7226 {
7227     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7228         return 0x20000000134ll + 0x100000000ll * ((a) & 0x3);
7229     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7230         return 0x20000000134ll + 0x100000000ll * ((a) & 0x3);
7231     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7232         return 0x20000000134ll + 0x100000000ll * ((a) & 0x7);
7233     __bdk_csr_fatal("PCIERCX_CFG077", 1, a, 0, 0, 0);
7234 }
7235 
7236 #define typedef_BDK_PCIERCX_CFG077(a) bdk_pciercx_cfg077_t
7237 #define bustype_BDK_PCIERCX_CFG077(a) BDK_CSR_TYPE_PCICONFIGRC
7238 #define basename_BDK_PCIERCX_CFG077(a) "PCIERCX_CFG077"
7239 #define busnum_BDK_PCIERCX_CFG077(a) (a)
7240 #define arguments_BDK_PCIERCX_CFG077(a) (a),-1,-1,-1
7241 
7242 /**
7243  * Register (PCICONFIGRC) pcierc#_cfg086
7244  *
7245  * PCIe RC PCI Express Secondary Capability (Gen3) Header Register
7246  * This register contains the eighty-ninth 32-bits of type 0 PCIe configuration space.
7247  */
7248 union bdk_pciercx_cfg086
7249 {
7250     uint32_t u;
7251     struct bdk_pciercx_cfg086_s
7252     {
7253 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7254         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
7255                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7256         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
7257                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7258         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCIE Express extended capability.
7259                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7260 #else /* Word 0 - Little Endian */
7261         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCIE Express extended capability.
7262                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7263         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
7264                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7265         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
7266                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7267 #endif /* Word 0 - End */
7268     } s;
7269     /* struct bdk_pciercx_cfg086_s cn81xx; */
7270     struct bdk_pciercx_cfg086_cn88xx
7271     {
7272 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7273         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL/H) Next capability offset.
7274                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7275         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
7276                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7277         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCIE Express extended capability.
7278                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7279 #else /* Word 0 - Little Endian */
7280         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCIE Express extended capability.
7281                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7282         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
7283                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7284         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL/H) Next capability offset.
7285                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7286 #endif /* Word 0 - End */
7287     } cn88xx;
7288     struct bdk_pciercx_cfg086_cn83xx
7289     {
7290 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7291         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset. Points to the Vendor Specific capabilities.
7292                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7293         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
7294                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7295         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCIE Express extended capability.
7296                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7297 #else /* Word 0 - Little Endian */
7298         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCIE Express extended capability.
7299                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7300         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
7301                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7302         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset. Points to the Vendor Specific capabilities.
7303                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7304 #endif /* Word 0 - End */
7305     } cn83xx;
7306 };
7307 typedef union bdk_pciercx_cfg086 bdk_pciercx_cfg086_t;
7308 
7309 static inline uint64_t BDK_PCIERCX_CFG086(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG086(unsigned long a)7310 static inline uint64_t BDK_PCIERCX_CFG086(unsigned long a)
7311 {
7312     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7313         return 0x20000000158ll + 0x100000000ll * ((a) & 0x3);
7314     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7315         return 0x20000000158ll + 0x100000000ll * ((a) & 0x3);
7316     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7317         return 0x20000000158ll + 0x100000000ll * ((a) & 0x7);
7318     __bdk_csr_fatal("PCIERCX_CFG086", 1, a, 0, 0, 0);
7319 }
7320 
7321 #define typedef_BDK_PCIERCX_CFG086(a) bdk_pciercx_cfg086_t
7322 #define bustype_BDK_PCIERCX_CFG086(a) BDK_CSR_TYPE_PCICONFIGRC
7323 #define basename_BDK_PCIERCX_CFG086(a) "PCIERCX_CFG086"
7324 #define busnum_BDK_PCIERCX_CFG086(a) (a)
7325 #define arguments_BDK_PCIERCX_CFG086(a) (a),-1,-1,-1
7326 
7327 /**
7328  * Register (PCICONFIGRC) pcierc#_cfg087
7329  *
7330  * PCIe RC Link Control 3 Register
7331  * This register contains the eighty-eighth 32-bits of type 0 PCIe configuration space.
7332  */
7333 union bdk_pciercx_cfg087
7334 {
7335     uint32_t u;
7336     struct bdk_pciercx_cfg087_s
7337     {
7338 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7339         uint32_t reserved_2_31         : 30;
7340         uint32_t ler                   : 1;  /**< [  1:  1](RO/WRSL) Link equalization request interrupt enable. */
7341         uint32_t pe                    : 1;  /**< [  0:  0](RO/WRSL) Perform equalization. */
7342 #else /* Word 0 - Little Endian */
7343         uint32_t pe                    : 1;  /**< [  0:  0](RO/WRSL) Perform equalization. */
7344         uint32_t ler                   : 1;  /**< [  1:  1](RO/WRSL) Link equalization request interrupt enable. */
7345         uint32_t reserved_2_31         : 30;
7346 #endif /* Word 0 - End */
7347     } s;
7348     /* struct bdk_pciercx_cfg087_s cn; */
7349 };
7350 typedef union bdk_pciercx_cfg087 bdk_pciercx_cfg087_t;
7351 
7352 static inline uint64_t BDK_PCIERCX_CFG087(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG087(unsigned long a)7353 static inline uint64_t BDK_PCIERCX_CFG087(unsigned long a)
7354 {
7355     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7356         return 0x2000000015cll + 0x100000000ll * ((a) & 0x3);
7357     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7358         return 0x2000000015cll + 0x100000000ll * ((a) & 0x3);
7359     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7360         return 0x2000000015cll + 0x100000000ll * ((a) & 0x7);
7361     __bdk_csr_fatal("PCIERCX_CFG087", 1, a, 0, 0, 0);
7362 }
7363 
7364 #define typedef_BDK_PCIERCX_CFG087(a) bdk_pciercx_cfg087_t
7365 #define bustype_BDK_PCIERCX_CFG087(a) BDK_CSR_TYPE_PCICONFIGRC
7366 #define basename_BDK_PCIERCX_CFG087(a) "PCIERCX_CFG087"
7367 #define busnum_BDK_PCIERCX_CFG087(a) (a)
7368 #define arguments_BDK_PCIERCX_CFG087(a) (a),-1,-1,-1
7369 
7370 /**
7371  * Register (PCICONFIGRC) pcierc#_cfg088
7372  *
7373  * PCIe RC Link Control 4 Register
7374  * This register contains the eighty-ninth 32-bits of type 0 PCIe configuration space.
7375  */
7376 union bdk_pciercx_cfg088
7377 {
7378     uint32_t u;
7379     struct bdk_pciercx_cfg088_s
7380     {
7381 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7382         uint32_t reserved_8_31         : 24;
7383         uint32_t les                   : 8;  /**< [  7:  0](R/W1C) Lane error status bits. */
7384 #else /* Word 0 - Little Endian */
7385         uint32_t les                   : 8;  /**< [  7:  0](R/W1C) Lane error status bits. */
7386         uint32_t reserved_8_31         : 24;
7387 #endif /* Word 0 - End */
7388     } s;
7389     /* struct bdk_pciercx_cfg088_s cn; */
7390 };
7391 typedef union bdk_pciercx_cfg088 bdk_pciercx_cfg088_t;
7392 
7393 static inline uint64_t BDK_PCIERCX_CFG088(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG088(unsigned long a)7394 static inline uint64_t BDK_PCIERCX_CFG088(unsigned long a)
7395 {
7396     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7397         return 0x20000000160ll + 0x100000000ll * ((a) & 0x3);
7398     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7399         return 0x20000000160ll + 0x100000000ll * ((a) & 0x3);
7400     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7401         return 0x20000000160ll + 0x100000000ll * ((a) & 0x7);
7402     __bdk_csr_fatal("PCIERCX_CFG088", 1, a, 0, 0, 0);
7403 }
7404 
7405 #define typedef_BDK_PCIERCX_CFG088(a) bdk_pciercx_cfg088_t
7406 #define bustype_BDK_PCIERCX_CFG088(a) BDK_CSR_TYPE_PCICONFIGRC
7407 #define basename_BDK_PCIERCX_CFG088(a) "PCIERCX_CFG088"
7408 #define busnum_BDK_PCIERCX_CFG088(a) (a)
7409 #define arguments_BDK_PCIERCX_CFG088(a) (a),-1,-1,-1
7410 
7411 /**
7412  * Register (PCICONFIGRC) pcierc#_cfg089
7413  *
7414  * PCIe RC Equalization Control Lane 0/1 Register
7415  * This register contains the ninetieth 32-bits of type 0 PCIe configuration space.
7416  */
7417 union bdk_pciercx_cfg089
7418 {
7419     uint32_t u;
7420     struct bdk_pciercx_cfg089_s
7421     {
7422 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7423         uint32_t reserved_31           : 1;
7424         uint32_t l1urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 1 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7425                                                                  However, the application must not change this field. */
7426         uint32_t l1utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 1 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7427                                                                  the application must not change this field. */
7428         uint32_t reserved_23           : 1;
7429         uint32_t l1drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 1 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7430                                                                  However, the application must not change this field. */
7431         uint32_t reserved_15_19        : 5;
7432         uint32_t l0urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 0 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7433                                                                  However, the application must not change this field. */
7434         uint32_t l0utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 0 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7435                                                                  the application must not change this field. */
7436         uint32_t reserved_7            : 1;
7437         uint32_t l0drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 0 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7438                                                                  However, the application must not change this field. */
7439         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 0 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7440                                                                  However, the application must not change this field. */
7441 #else /* Word 0 - Little Endian */
7442         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 0 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7443                                                                  However, the application must not change this field. */
7444         uint32_t l0drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 0 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7445                                                                  However, the application must not change this field. */
7446         uint32_t reserved_7            : 1;
7447         uint32_t l0utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 0 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7448                                                                  the application must not change this field. */
7449         uint32_t l0urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 0 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7450                                                                  However, the application must not change this field. */
7451         uint32_t reserved_15_19        : 5;
7452         uint32_t l1drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 1 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7453                                                                  However, the application must not change this field. */
7454         uint32_t reserved_23           : 1;
7455         uint32_t l1utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 1 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7456                                                                  the application must not change this field. */
7457         uint32_t l1urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 1 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7458                                                                  However, the application must not change this field. */
7459         uint32_t reserved_31           : 1;
7460 #endif /* Word 0 - End */
7461     } s;
7462     struct bdk_pciercx_cfg089_cn81xx
7463     {
7464 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7465         uint32_t reserved_31           : 1;
7466         uint32_t l1urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 1 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7467                                                                  However, the application must not change this field. */
7468         uint32_t l1utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 1 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7469                                                                  the application must not change this field. */
7470         uint32_t reserved_23           : 1;
7471         uint32_t l1drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 1 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7472                                                                  However, the application must not change this field. */
7473         uint32_t l1ddtp                : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 1 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7474                                                                  However, the application must not change this field. */
7475         uint32_t reserved_15           : 1;
7476         uint32_t l0urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 0 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7477                                                                  However, the application must not change this field. */
7478         uint32_t l0utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 0 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7479                                                                  the application must not change this field. */
7480         uint32_t reserved_7            : 1;
7481         uint32_t l0drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 0 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7482                                                                  However, the application must not change this field. */
7483         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 0 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7484                                                                  However, the application must not change this field. */
7485 #else /* Word 0 - Little Endian */
7486         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 0 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7487                                                                  However, the application must not change this field. */
7488         uint32_t l0drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 0 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7489                                                                  However, the application must not change this field. */
7490         uint32_t reserved_7            : 1;
7491         uint32_t l0utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 0 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7492                                                                  the application must not change this field. */
7493         uint32_t l0urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 0 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7494                                                                  However, the application must not change this field. */
7495         uint32_t reserved_15           : 1;
7496         uint32_t l1ddtp                : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 1 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7497                                                                  However, the application must not change this field. */
7498         uint32_t l1drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 1 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7499                                                                  However, the application must not change this field. */
7500         uint32_t reserved_23           : 1;
7501         uint32_t l1utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 1 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7502                                                                  the application must not change this field. */
7503         uint32_t l1urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 1 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7504                                                                  However, the application must not change this field. */
7505         uint32_t reserved_31           : 1;
7506 #endif /* Word 0 - End */
7507     } cn81xx;
7508     /* struct bdk_pciercx_cfg089_cn81xx cn88xx; */
7509     struct bdk_pciercx_cfg089_cn83xx
7510     {
7511 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7512         uint32_t reserved_31           : 1;
7513         uint32_t l1urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 1 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7514         uint32_t l1utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 1 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7515         uint32_t reserved_23           : 1;
7516         uint32_t l1drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 1 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7517         uint32_t l1dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 1 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7518         uint32_t reserved_15           : 1;
7519         uint32_t l0urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 0 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7520         uint32_t l0utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 0 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7521         uint32_t reserved_7            : 1;
7522         uint32_t l0drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 0 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7523         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 0 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7524 #else /* Word 0 - Little Endian */
7525         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 0 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7526         uint32_t l0drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 0 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7527         uint32_t reserved_7            : 1;
7528         uint32_t l0utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 0 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7529         uint32_t l0urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 0 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7530         uint32_t reserved_15           : 1;
7531         uint32_t l1dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 1 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7532         uint32_t l1drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 1 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7533         uint32_t reserved_23           : 1;
7534         uint32_t l1utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 1 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7535         uint32_t l1urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 1 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7536         uint32_t reserved_31           : 1;
7537 #endif /* Word 0 - End */
7538     } cn83xx;
7539 };
7540 typedef union bdk_pciercx_cfg089 bdk_pciercx_cfg089_t;
7541 
7542 static inline uint64_t BDK_PCIERCX_CFG089(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG089(unsigned long a)7543 static inline uint64_t BDK_PCIERCX_CFG089(unsigned long a)
7544 {
7545     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7546         return 0x20000000164ll + 0x100000000ll * ((a) & 0x3);
7547     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7548         return 0x20000000164ll + 0x100000000ll * ((a) & 0x3);
7549     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7550         return 0x20000000164ll + 0x100000000ll * ((a) & 0x7);
7551     __bdk_csr_fatal("PCIERCX_CFG089", 1, a, 0, 0, 0);
7552 }
7553 
7554 #define typedef_BDK_PCIERCX_CFG089(a) bdk_pciercx_cfg089_t
7555 #define bustype_BDK_PCIERCX_CFG089(a) BDK_CSR_TYPE_PCICONFIGRC
7556 #define basename_BDK_PCIERCX_CFG089(a) "PCIERCX_CFG089"
7557 #define busnum_BDK_PCIERCX_CFG089(a) (a)
7558 #define arguments_BDK_PCIERCX_CFG089(a) (a),-1,-1,-1
7559 
7560 /**
7561  * Register (PCICONFIGRC) pcierc#_cfg090
7562  *
7563  * PCIe RC Equalization Control Lane 2/3 Register
7564  * This register contains the ninety-first 32-bits of type 0 PCIe configuration space.
7565  */
7566 union bdk_pciercx_cfg090
7567 {
7568     uint32_t u;
7569     struct bdk_pciercx_cfg090_s
7570     {
7571 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7572         uint32_t reserved_31           : 1;
7573         uint32_t l3urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 3 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7574                                                                  However, the application must not change this field. */
7575         uint32_t l3utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 3 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7576                                                                  the application must not change this field. */
7577         uint32_t reserved_23           : 1;
7578         uint32_t l3drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 3 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7579                                                                  However, the application must not change this field. */
7580         uint32_t l3dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 3 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7581                                                                  However, the application must not change this field. */
7582         uint32_t reserved_15           : 1;
7583         uint32_t l2urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 2 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7584                                                                  However, the application must not change this field. */
7585         uint32_t l2utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 2 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7586                                                                  the application must not change this field. */
7587         uint32_t reserved_7            : 1;
7588         uint32_t l2drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 2 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7589                                                                  However, the application must not change this field. */
7590         uint32_t l2dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 2 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7591                                                                  However, the application must not change this field. */
7592 #else /* Word 0 - Little Endian */
7593         uint32_t l2dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 2 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7594                                                                  However, the application must not change this field. */
7595         uint32_t l2drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 2 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7596                                                                  However, the application must not change this field. */
7597         uint32_t reserved_7            : 1;
7598         uint32_t l2utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 2 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7599                                                                  the application must not change this field. */
7600         uint32_t l2urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 2 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7601                                                                  However, the application must not change this field. */
7602         uint32_t reserved_15           : 1;
7603         uint32_t l3dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 3 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7604                                                                  However, the application must not change this field. */
7605         uint32_t l3drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 3 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7606                                                                  However, the application must not change this field. */
7607         uint32_t reserved_23           : 1;
7608         uint32_t l3utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 3 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7609                                                                  the application must not change this field. */
7610         uint32_t l3urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 3 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7611                                                                  However, the application must not change this field. */
7612         uint32_t reserved_31           : 1;
7613 #endif /* Word 0 - End */
7614     } s;
7615     /* struct bdk_pciercx_cfg090_s cn81xx; */
7616     /* struct bdk_pciercx_cfg090_s cn88xx; */
7617     struct bdk_pciercx_cfg090_cn83xx
7618     {
7619 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7620         uint32_t reserved_31           : 1;
7621         uint32_t l3urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 3 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7622         uint32_t l3utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 3 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7623         uint32_t reserved_23           : 1;
7624         uint32_t l3drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 3 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7625         uint32_t l3dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 3 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7626         uint32_t reserved_15           : 1;
7627         uint32_t l2urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 2 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7628         uint32_t l2utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 2 upstream component transmitter preset. Writable through PEM()_CFG_WR. How */
7629         uint32_t reserved_7            : 1;
7630         uint32_t l2drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 2 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7631         uint32_t l2dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 2 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7632 #else /* Word 0 - Little Endian */
7633         uint32_t l2dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 2 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7634         uint32_t l2drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 2 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7635         uint32_t reserved_7            : 1;
7636         uint32_t l2utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 2 upstream component transmitter preset. Writable through PEM()_CFG_WR. How */
7637         uint32_t l2urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 2 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7638         uint32_t reserved_15           : 1;
7639         uint32_t l3dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 3 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7640         uint32_t l3drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 3 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7641         uint32_t reserved_23           : 1;
7642         uint32_t l3utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 3 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7643         uint32_t l3urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 3 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7644         uint32_t reserved_31           : 1;
7645 #endif /* Word 0 - End */
7646     } cn83xx;
7647 };
7648 typedef union bdk_pciercx_cfg090 bdk_pciercx_cfg090_t;
7649 
7650 static inline uint64_t BDK_PCIERCX_CFG090(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG090(unsigned long a)7651 static inline uint64_t BDK_PCIERCX_CFG090(unsigned long a)
7652 {
7653     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7654         return 0x20000000168ll + 0x100000000ll * ((a) & 0x3);
7655     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7656         return 0x20000000168ll + 0x100000000ll * ((a) & 0x3);
7657     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7658         return 0x20000000168ll + 0x100000000ll * ((a) & 0x7);
7659     __bdk_csr_fatal("PCIERCX_CFG090", 1, a, 0, 0, 0);
7660 }
7661 
7662 #define typedef_BDK_PCIERCX_CFG090(a) bdk_pciercx_cfg090_t
7663 #define bustype_BDK_PCIERCX_CFG090(a) BDK_CSR_TYPE_PCICONFIGRC
7664 #define basename_BDK_PCIERCX_CFG090(a) "PCIERCX_CFG090"
7665 #define busnum_BDK_PCIERCX_CFG090(a) (a)
7666 #define arguments_BDK_PCIERCX_CFG090(a) (a),-1,-1,-1
7667 
7668 /**
7669  * Register (PCICONFIGRC) pcierc#_cfg091
7670  *
7671  * PCIe RC Equalization Control Lane 4/5 Register
7672  * This register contains the ninety-second 32-bits of type 0 PCIe configuration space.
7673  */
7674 union bdk_pciercx_cfg091
7675 {
7676     uint32_t u;
7677     struct bdk_pciercx_cfg091_s
7678     {
7679 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7680         uint32_t reserved_31           : 1;
7681         uint32_t l5urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 5 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7682                                                                  However, the application must not change this field. */
7683         uint32_t l5utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 5 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7684                                                                  the application must not change this field. */
7685         uint32_t reserved_23           : 1;
7686         uint32_t l5drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 5 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7687                                                                  However, the application must not change this field. */
7688         uint32_t l5dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 5 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7689                                                                  However, the application must not change this field. */
7690         uint32_t reserved_15           : 1;
7691         uint32_t l4urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 4 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7692                                                                  However, the application must not change this field. */
7693         uint32_t l4utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 4 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7694                                                                  the application must not change this field. */
7695         uint32_t reserved_7            : 1;
7696         uint32_t l4drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 4 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7697                                                                  However, the application must not change this field. */
7698         uint32_t l4dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 4 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7699                                                                  However, the application must not change this field. */
7700 #else /* Word 0 - Little Endian */
7701         uint32_t l4dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 4 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7702                                                                  However, the application must not change this field. */
7703         uint32_t l4drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 4 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7704                                                                  However, the application must not change this field. */
7705         uint32_t reserved_7            : 1;
7706         uint32_t l4utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 4 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7707                                                                  the application must not change this field. */
7708         uint32_t l4urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 4 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7709                                                                  However, the application must not change this field. */
7710         uint32_t reserved_15           : 1;
7711         uint32_t l5dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 5 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7712                                                                  However, the application must not change this field. */
7713         uint32_t l5drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 5 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7714                                                                  However, the application must not change this field. */
7715         uint32_t reserved_23           : 1;
7716         uint32_t l5utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 5 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7717                                                                  the application must not change this field. */
7718         uint32_t l5urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 5 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7719                                                                  However, the application must not change this field. */
7720         uint32_t reserved_31           : 1;
7721 #endif /* Word 0 - End */
7722     } s;
7723     /* struct bdk_pciercx_cfg091_s cn81xx; */
7724     /* struct bdk_pciercx_cfg091_s cn88xx; */
7725     struct bdk_pciercx_cfg091_cn83xx
7726     {
7727 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7728         uint32_t reserved_31           : 1;
7729         uint32_t l5urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 5 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7730         uint32_t l5utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 5 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7731         uint32_t reserved_23           : 1;
7732         uint32_t l5drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 5 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7733         uint32_t l5dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 5 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7734         uint32_t reserved_15           : 1;
7735         uint32_t l4urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 4 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7736         uint32_t l4utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 4 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7737         uint32_t reserved_7            : 1;
7738         uint32_t l4drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 4 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7739         uint32_t l4dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 4 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7740 #else /* Word 0 - Little Endian */
7741         uint32_t l4dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 4 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7742         uint32_t l4drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 4 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7743         uint32_t reserved_7            : 1;
7744         uint32_t l4utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 4 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7745         uint32_t l4urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 4 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7746         uint32_t reserved_15           : 1;
7747         uint32_t l5dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 5 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7748         uint32_t l5drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 5 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7749         uint32_t reserved_23           : 1;
7750         uint32_t l5utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 5 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7751         uint32_t l5urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 5 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7752         uint32_t reserved_31           : 1;
7753 #endif /* Word 0 - End */
7754     } cn83xx;
7755 };
7756 typedef union bdk_pciercx_cfg091 bdk_pciercx_cfg091_t;
7757 
7758 static inline uint64_t BDK_PCIERCX_CFG091(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG091(unsigned long a)7759 static inline uint64_t BDK_PCIERCX_CFG091(unsigned long a)
7760 {
7761     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7762         return 0x2000000016cll + 0x100000000ll * ((a) & 0x3);
7763     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7764         return 0x2000000016cll + 0x100000000ll * ((a) & 0x3);
7765     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7766         return 0x2000000016cll + 0x100000000ll * ((a) & 0x7);
7767     __bdk_csr_fatal("PCIERCX_CFG091", 1, a, 0, 0, 0);
7768 }
7769 
7770 #define typedef_BDK_PCIERCX_CFG091(a) bdk_pciercx_cfg091_t
7771 #define bustype_BDK_PCIERCX_CFG091(a) BDK_CSR_TYPE_PCICONFIGRC
7772 #define basename_BDK_PCIERCX_CFG091(a) "PCIERCX_CFG091"
7773 #define busnum_BDK_PCIERCX_CFG091(a) (a)
7774 #define arguments_BDK_PCIERCX_CFG091(a) (a),-1,-1,-1
7775 
7776 /**
7777  * Register (PCICONFIGRC) pcierc#_cfg092
7778  *
7779  * PCIe RC Equalization Control Lane 6/7 Register
7780  * This register contains the ninety-third 32-bits of type 0 PCIe configuration space.
7781  */
7782 union bdk_pciercx_cfg092
7783 {
7784     uint32_t u;
7785     struct bdk_pciercx_cfg092_s
7786     {
7787 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7788         uint32_t reserved_31           : 1;
7789         uint32_t l7urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 7 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7790                                                                  However, the application must not change this field. */
7791         uint32_t l7utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 7 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7792                                                                  the application must not change this field. */
7793         uint32_t reserved_23           : 1;
7794         uint32_t l7drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 7 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7795                                                                  However, the application must not change this field. */
7796         uint32_t l7dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 7 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7797                                                                  However, the application must not change this field. */
7798         uint32_t reserved_15           : 1;
7799         uint32_t l6urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 6 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7800                                                                  However, the application must not change this field. */
7801         uint32_t l6utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 6 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7802                                                                  the application must not change this field. */
7803         uint32_t reserved_7            : 1;
7804         uint32_t l6drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 6 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7805                                                                  However, the application must not change this field. */
7806         uint32_t l6dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 6 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7807                                                                  However, the application must not change this field. */
7808 #else /* Word 0 - Little Endian */
7809         uint32_t l6dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 6 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7810                                                                  However, the application must not change this field. */
7811         uint32_t l6drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 6 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7812                                                                  However, the application must not change this field. */
7813         uint32_t reserved_7            : 1;
7814         uint32_t l6utp                 : 4;  /**< [ 11:  8](RO/WRSL/H) Lane 6 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7815                                                                  the application must not change this field. */
7816         uint32_t l6urph                : 3;  /**< [ 14: 12](RO/WRSL/H) Lane 6 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7817                                                                  However, the application must not change this field. */
7818         uint32_t reserved_15           : 1;
7819         uint32_t l7dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 7 downstream component transmitter preset. Writable through PEM()_CFG_WR.
7820                                                                  However, the application must not change this field. */
7821         uint32_t l7drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 7 downstream component receiver preset hint. Writable through PEM()_CFG_WR.
7822                                                                  However, the application must not change this field. */
7823         uint32_t reserved_23           : 1;
7824         uint32_t l7utp                 : 4;  /**< [ 27: 24](RO/WRSL/H) Lane 7 upstream component transmitter preset. Writable through PEM()_CFG_WR. However,
7825                                                                  the application must not change this field. */
7826         uint32_t l7urph                : 3;  /**< [ 30: 28](RO/WRSL/H) Lane 7 upstream component receiver preset hint. Writable through PEM()_CFG_WR.
7827                                                                  However, the application must not change this field. */
7828         uint32_t reserved_31           : 1;
7829 #endif /* Word 0 - End */
7830     } s;
7831     /* struct bdk_pciercx_cfg092_s cn81xx; */
7832     /* struct bdk_pciercx_cfg092_s cn88xx; */
7833     struct bdk_pciercx_cfg092_cn83xx
7834     {
7835 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7836         uint32_t reserved_31           : 1;
7837         uint32_t l7urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 7 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7838         uint32_t l7utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 7 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7839         uint32_t reserved_23           : 1;
7840         uint32_t l7drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 7 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7841         uint32_t l7dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 7 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7842         uint32_t reserved_15           : 1;
7843         uint32_t l6urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 6 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7844         uint32_t l6utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 6 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7845         uint32_t reserved_7            : 1;
7846         uint32_t l6drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 6 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7847         uint32_t l6dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 6 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7848 #else /* Word 0 - Little Endian */
7849         uint32_t l6dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 6 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7850         uint32_t l6drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 6 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7851         uint32_t reserved_7            : 1;
7852         uint32_t l6utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 6 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7853         uint32_t l6urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 6 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7854         uint32_t reserved_15           : 1;
7855         uint32_t l7dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 7 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
7856         uint32_t l7drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 7 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7857         uint32_t reserved_23           : 1;
7858         uint32_t l7utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 7 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
7859         uint32_t l7urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 7 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
7860         uint32_t reserved_31           : 1;
7861 #endif /* Word 0 - End */
7862     } cn83xx;
7863 };
7864 typedef union bdk_pciercx_cfg092 bdk_pciercx_cfg092_t;
7865 
7866 static inline uint64_t BDK_PCIERCX_CFG092(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG092(unsigned long a)7867 static inline uint64_t BDK_PCIERCX_CFG092(unsigned long a)
7868 {
7869     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
7870         return 0x20000000170ll + 0x100000000ll * ((a) & 0x3);
7871     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7872         return 0x20000000170ll + 0x100000000ll * ((a) & 0x3);
7873     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
7874         return 0x20000000170ll + 0x100000000ll * ((a) & 0x7);
7875     __bdk_csr_fatal("PCIERCX_CFG092", 1, a, 0, 0, 0);
7876 }
7877 
7878 #define typedef_BDK_PCIERCX_CFG092(a) bdk_pciercx_cfg092_t
7879 #define bustype_BDK_PCIERCX_CFG092(a) BDK_CSR_TYPE_PCICONFIGRC
7880 #define basename_BDK_PCIERCX_CFG092(a) "PCIERCX_CFG092"
7881 #define busnum_BDK_PCIERCX_CFG092(a) (a)
7882 #define arguments_BDK_PCIERCX_CFG092(a) (a),-1,-1,-1
7883 
7884 /**
7885  * Register (PCICONFIGRC) pcierc#_cfg110
7886  *
7887  * PCIe RC Vendor Specific RAS DES Capability Header Register
7888  * This register contains the one hundred eleventh 32-bits of PCIe type 0 configuration space.
7889  */
7890 union bdk_pciercx_cfg110
7891 {
7892     uint32_t u;
7893     struct bdk_pciercx_cfg110_s
7894     {
7895 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7896         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset. Points to the Vendor Specific RAS Data Path Protection
7897                                                                  capabilities.
7898                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7899         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
7900                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7901         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
7902                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7903 #else /* Word 0 - Little Endian */
7904         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
7905                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7906         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
7907                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7908         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset. Points to the Vendor Specific RAS Data Path Protection
7909                                                                  capabilities.
7910                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
7911 #endif /* Word 0 - End */
7912     } s;
7913     /* struct bdk_pciercx_cfg110_s cn; */
7914 };
7915 typedef union bdk_pciercx_cfg110 bdk_pciercx_cfg110_t;
7916 
7917 static inline uint64_t BDK_PCIERCX_CFG110(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG110(unsigned long a)7918 static inline uint64_t BDK_PCIERCX_CFG110(unsigned long a)
7919 {
7920     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7921         return 0x200000001b8ll + 0x100000000ll * ((a) & 0x3);
7922     __bdk_csr_fatal("PCIERCX_CFG110", 1, a, 0, 0, 0);
7923 }
7924 
7925 #define typedef_BDK_PCIERCX_CFG110(a) bdk_pciercx_cfg110_t
7926 #define bustype_BDK_PCIERCX_CFG110(a) BDK_CSR_TYPE_PCICONFIGRC
7927 #define basename_BDK_PCIERCX_CFG110(a) "PCIERCX_CFG110"
7928 #define busnum_BDK_PCIERCX_CFG110(a) (a)
7929 #define arguments_BDK_PCIERCX_CFG110(a) (a),-1,-1,-1
7930 
7931 /**
7932  * Register (PCICONFIGRC) pcierc#_cfg111
7933  *
7934  * PCIe RC Vendor RAS DES Header Register
7935  * This register contains the one hundred twelfth 32-bits of PCIe type 0 configuration space.
7936  */
7937 union bdk_pciercx_cfg111
7938 {
7939     uint32_t u;
7940     struct bdk_pciercx_cfg111_s
7941     {
7942 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7943         uint32_t vsec_length           : 12; /**< [ 31: 20](RO) VSEC length. */
7944         uint32_t vsec_rev              : 4;  /**< [ 19: 16](RO) Capability version. */
7945         uint32_t vsec_id               : 16; /**< [ 15:  0](RO) PCI Express extended capability. */
7946 #else /* Word 0 - Little Endian */
7947         uint32_t vsec_id               : 16; /**< [ 15:  0](RO) PCI Express extended capability. */
7948         uint32_t vsec_rev              : 4;  /**< [ 19: 16](RO) Capability version. */
7949         uint32_t vsec_length           : 12; /**< [ 31: 20](RO) VSEC length. */
7950 #endif /* Word 0 - End */
7951     } s;
7952     /* struct bdk_pciercx_cfg111_s cn; */
7953 };
7954 typedef union bdk_pciercx_cfg111 bdk_pciercx_cfg111_t;
7955 
7956 static inline uint64_t BDK_PCIERCX_CFG111(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG111(unsigned long a)7957 static inline uint64_t BDK_PCIERCX_CFG111(unsigned long a)
7958 {
7959     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
7960         return 0x200000001bcll + 0x100000000ll * ((a) & 0x3);
7961     __bdk_csr_fatal("PCIERCX_CFG111", 1, a, 0, 0, 0);
7962 }
7963 
7964 #define typedef_BDK_PCIERCX_CFG111(a) bdk_pciercx_cfg111_t
7965 #define bustype_BDK_PCIERCX_CFG111(a) BDK_CSR_TYPE_PCICONFIGRC
7966 #define basename_BDK_PCIERCX_CFG111(a) "PCIERCX_CFG111"
7967 #define busnum_BDK_PCIERCX_CFG111(a) (a)
7968 #define arguments_BDK_PCIERCX_CFG111(a) (a),-1,-1,-1
7969 
7970 /**
7971  * Register (PCICONFIGRC) pcierc#_cfg112
7972  *
7973  * PCIe RC Vendor RAS DES Event Counter Control Register
7974  * This register contains the one hundred thirteenth 32-bits of PCIe type 0 configuration space.
7975  */
7976 union bdk_pciercx_cfg112
7977 {
7978     uint32_t u;
7979     struct bdk_pciercx_cfg112_s
7980     {
7981 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
7982         uint32_t reserved_28_31        : 4;
7983         uint32_t ev_cntr_data_sel      : 12; /**< [ 27: 16](R/W) Event counter data select.  This field in conjunction with [EV_CNTR_LANE_SEL]
7984                                                                  selects PCIERC()_CFG113[EV_CNTR_DATA].
7985                                                                  _ \<27:24\> = Group number (0..0x7).
7986                                                                  _ \<23:16\> = Event number (0..0x13). */
7987         uint32_t reserved_12_15        : 4;
7988         uint32_t ev_cntr_lane_sel      : 4;  /**< [ 11:  8](R/W) Event counter lane select.  This field in conjunction with [EV_CNTR_DATA_SEL]
7989                                                                  indexes the event counter data returned in the PCIERC()_CFG113[EV_CNTR_DATA].
7990 
7991                                                                  0x0-0x7 = Lane number.
7992                                                                  0x8-0xF = Reserved. */
7993         uint32_t ev_cntr_stat          : 1;  /**< [  7:  7](RO/H) Event counter status.  Returns the Enable status of the event counter
7994                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL]. */
7995         uint32_t reserved_5_6          : 2;
7996         uint32_t ev_cntr_en            : 3;  /**< [  4:  2](WO) Event counter enable.  Enables/disables the event counter
7997                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL].
7998                                                                  By default, all event counters are disabled.  This field
7999                                                                  always reads zeros.
8000 
8001                                                                  0x0 = No change.
8002                                                                  0x1 = Per event off.
8003                                                                  0x2 = No change.
8004                                                                  0x3 = Per event on.
8005                                                                  0x4 = No change.
8006                                                                  0x5 = All off.
8007                                                                  0x6 = No change.
8008                                                                  0x7 = All on. */
8009         uint32_t ev_cntr_clr           : 2;  /**< [  1:  0](WO) Event counter clear. Clears the event counters
8010                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL].
8011                                                                  By default, all event counters are disabled.  This field
8012                                                                  always reads zeros.
8013 
8014                                                                  0x0 = No change.
8015                                                                  0x1 = Per clear.
8016                                                                  0x2 = No change.
8017                                                                  0x3 = All clear. */
8018 #else /* Word 0 - Little Endian */
8019         uint32_t ev_cntr_clr           : 2;  /**< [  1:  0](WO) Event counter clear. Clears the event counters
8020                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL].
8021                                                                  By default, all event counters are disabled.  This field
8022                                                                  always reads zeros.
8023 
8024                                                                  0x0 = No change.
8025                                                                  0x1 = Per clear.
8026                                                                  0x2 = No change.
8027                                                                  0x3 = All clear. */
8028         uint32_t ev_cntr_en            : 3;  /**< [  4:  2](WO) Event counter enable.  Enables/disables the event counter
8029                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL].
8030                                                                  By default, all event counters are disabled.  This field
8031                                                                  always reads zeros.
8032 
8033                                                                  0x0 = No change.
8034                                                                  0x1 = Per event off.
8035                                                                  0x2 = No change.
8036                                                                  0x3 = Per event on.
8037                                                                  0x4 = No change.
8038                                                                  0x5 = All off.
8039                                                                  0x6 = No change.
8040                                                                  0x7 = All on. */
8041         uint32_t reserved_5_6          : 2;
8042         uint32_t ev_cntr_stat          : 1;  /**< [  7:  7](RO/H) Event counter status.  Returns the Enable status of the event counter
8043                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL]. */
8044         uint32_t ev_cntr_lane_sel      : 4;  /**< [ 11:  8](R/W) Event counter lane select.  This field in conjunction with [EV_CNTR_DATA_SEL]
8045                                                                  indexes the event counter data returned in the PCIERC()_CFG113[EV_CNTR_DATA].
8046 
8047                                                                  0x0-0x7 = Lane number.
8048                                                                  0x8-0xF = Reserved. */
8049         uint32_t reserved_12_15        : 4;
8050         uint32_t ev_cntr_data_sel      : 12; /**< [ 27: 16](R/W) Event counter data select.  This field in conjunction with [EV_CNTR_LANE_SEL]
8051                                                                  selects PCIERC()_CFG113[EV_CNTR_DATA].
8052                                                                  _ \<27:24\> = Group number (0..0x7).
8053                                                                  _ \<23:16\> = Event number (0..0x13). */
8054         uint32_t reserved_28_31        : 4;
8055 #endif /* Word 0 - End */
8056     } s;
8057     /* struct bdk_pciercx_cfg112_s cn; */
8058 };
8059 typedef union bdk_pciercx_cfg112 bdk_pciercx_cfg112_t;
8060 
8061 static inline uint64_t BDK_PCIERCX_CFG112(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG112(unsigned long a)8062 static inline uint64_t BDK_PCIERCX_CFG112(unsigned long a)
8063 {
8064     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8065         return 0x200000001c0ll + 0x100000000ll * ((a) & 0x3);
8066     __bdk_csr_fatal("PCIERCX_CFG112", 1, a, 0, 0, 0);
8067 }
8068 
8069 #define typedef_BDK_PCIERCX_CFG112(a) bdk_pciercx_cfg112_t
8070 #define bustype_BDK_PCIERCX_CFG112(a) BDK_CSR_TYPE_PCICONFIGRC
8071 #define basename_BDK_PCIERCX_CFG112(a) "PCIERCX_CFG112"
8072 #define busnum_BDK_PCIERCX_CFG112(a) (a)
8073 #define arguments_BDK_PCIERCX_CFG112(a) (a),-1,-1,-1
8074 
8075 /**
8076  * Register (PCICONFIGRC) pcierc#_cfg113
8077  *
8078  * PCIe RC Vendor RAS DES Data Register
8079  * This register contains the one hundred fourteenth 32-bits of PCIe type 0 configuration space.
8080  */
8081 union bdk_pciercx_cfg113
8082 {
8083     uint32_t u;
8084     struct bdk_pciercx_cfg113_s
8085     {
8086 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8087         uint32_t ev_cntr_data          : 32; /**< [ 31:  0](RO) Event counter data.  This field returns data selected by PCIERC()_CFG113[EV_CNTR_DATA_SEL]
8088                                                                  and PCIERC()_CFG113[EV_CNTR_LANE_SEL]. */
8089 #else /* Word 0 - Little Endian */
8090         uint32_t ev_cntr_data          : 32; /**< [ 31:  0](RO) Event counter data.  This field returns data selected by PCIERC()_CFG113[EV_CNTR_DATA_SEL]
8091                                                                  and PCIERC()_CFG113[EV_CNTR_LANE_SEL]. */
8092 #endif /* Word 0 - End */
8093     } s;
8094     /* struct bdk_pciercx_cfg113_s cn; */
8095 };
8096 typedef union bdk_pciercx_cfg113 bdk_pciercx_cfg113_t;
8097 
8098 static inline uint64_t BDK_PCIERCX_CFG113(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG113(unsigned long a)8099 static inline uint64_t BDK_PCIERCX_CFG113(unsigned long a)
8100 {
8101     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8102         return 0x200000001c4ll + 0x100000000ll * ((a) & 0x3);
8103     __bdk_csr_fatal("PCIERCX_CFG113", 1, a, 0, 0, 0);
8104 }
8105 
8106 #define typedef_BDK_PCIERCX_CFG113(a) bdk_pciercx_cfg113_t
8107 #define bustype_BDK_PCIERCX_CFG113(a) BDK_CSR_TYPE_PCICONFIGRC
8108 #define basename_BDK_PCIERCX_CFG113(a) "PCIERCX_CFG113"
8109 #define busnum_BDK_PCIERCX_CFG113(a) (a)
8110 #define arguments_BDK_PCIERCX_CFG113(a) (a),-1,-1,-1
8111 
8112 /**
8113  * Register (PCICONFIGRC) pcierc#_cfg114
8114  *
8115  * PCIe RC Vendor RAS DES Time Based Analysis Control Register
8116  * This register contains the one hundred fifteenth 32-bits of PCIe type 0 configuration space.
8117  */
8118 union bdk_pciercx_cfg114
8119 {
8120     uint32_t u;
8121     struct bdk_pciercx_cfg114_s
8122     {
8123 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8124         uint32_t tbase_rpt_sel         : 8;  /**< [ 31: 24](R/W) Time-based report select.  Selects what type of data is measured for the selected
8125                                                                  duration.
8126                                                                  TBASE_DUR_SEL.  Data is returned in PCIERC()_CFG115[TBASE_DATA].
8127 
8128                                                                  Each type of data is measured using one of three types of units.
8129 
8130                                                                  Core clock cycles.
8131                                                                  0x0 = Duration of 1 cycle.
8132                                                                  0x1 = TxL0s.
8133                                                                  0x2 = RxL0s.
8134                                                                  0x3 = L0.
8135                                                                  0x4 = L1.
8136                                                                  0x7 = Configuration/recovery.
8137 
8138                                                                  Aux_clk cycles.
8139                                                                  0x5 = L1.1.
8140                                                                  0x6 = L1.2.
8141 
8142                                                                  Data bytes.  Actual amount is 16x value.
8143                                                                  0x20 = TX TLP Bytes.
8144                                                                  0x21 = RX TLP Bytes. */
8145         uint32_t reserved_16_23        : 8;
8146         uint32_t tbase_dur_sel         : 8;  /**< [ 15:  8](R/W) Time-based duration select.  Selects the duration of time-based
8147                                                                  analysis.
8148 
8149                                                                  0x0 = Manual control.  Analysis controlled by [TIMER_START].
8150                                                                  0x1 = 1ms.
8151                                                                  0x2 = 10ms.
8152                                                                  0x3 = 100ms.
8153                                                                  0x4 = 1s.
8154                                                                  0x5 = 2s.
8155                                                                  0x6 = 4s.
8156                                                                  0x7 - 0xF = Reserved. */
8157         uint32_t reserved_1_7          : 7;
8158         uint32_t timer_start           : 1;  /**< [  0:  0](R/W) Timer start.
8159 
8160                                                                  0x0 = Start/Restart
8161                                                                  0x1 = Stop.
8162 
8163                                                                  This bit will be cleared automatically when the measurement is finished. */
8164 #else /* Word 0 - Little Endian */
8165         uint32_t timer_start           : 1;  /**< [  0:  0](R/W) Timer start.
8166 
8167                                                                  0x0 = Start/Restart
8168                                                                  0x1 = Stop.
8169 
8170                                                                  This bit will be cleared automatically when the measurement is finished. */
8171         uint32_t reserved_1_7          : 7;
8172         uint32_t tbase_dur_sel         : 8;  /**< [ 15:  8](R/W) Time-based duration select.  Selects the duration of time-based
8173                                                                  analysis.
8174 
8175                                                                  0x0 = Manual control.  Analysis controlled by [TIMER_START].
8176                                                                  0x1 = 1ms.
8177                                                                  0x2 = 10ms.
8178                                                                  0x3 = 100ms.
8179                                                                  0x4 = 1s.
8180                                                                  0x5 = 2s.
8181                                                                  0x6 = 4s.
8182                                                                  0x7 - 0xF = Reserved. */
8183         uint32_t reserved_16_23        : 8;
8184         uint32_t tbase_rpt_sel         : 8;  /**< [ 31: 24](R/W) Time-based report select.  Selects what type of data is measured for the selected
8185                                                                  duration.
8186                                                                  TBASE_DUR_SEL.  Data is returned in PCIERC()_CFG115[TBASE_DATA].
8187 
8188                                                                  Each type of data is measured using one of three types of units.
8189 
8190                                                                  Core clock cycles.
8191                                                                  0x0 = Duration of 1 cycle.
8192                                                                  0x1 = TxL0s.
8193                                                                  0x2 = RxL0s.
8194                                                                  0x3 = L0.
8195                                                                  0x4 = L1.
8196                                                                  0x7 = Configuration/recovery.
8197 
8198                                                                  Aux_clk cycles.
8199                                                                  0x5 = L1.1.
8200                                                                  0x6 = L1.2.
8201 
8202                                                                  Data bytes.  Actual amount is 16x value.
8203                                                                  0x20 = TX TLP Bytes.
8204                                                                  0x21 = RX TLP Bytes. */
8205 #endif /* Word 0 - End */
8206     } s;
8207     /* struct bdk_pciercx_cfg114_s cn; */
8208 };
8209 typedef union bdk_pciercx_cfg114 bdk_pciercx_cfg114_t;
8210 
8211 static inline uint64_t BDK_PCIERCX_CFG114(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG114(unsigned long a)8212 static inline uint64_t BDK_PCIERCX_CFG114(unsigned long a)
8213 {
8214     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8215         return 0x200000001c8ll + 0x100000000ll * ((a) & 0x3);
8216     __bdk_csr_fatal("PCIERCX_CFG114", 1, a, 0, 0, 0);
8217 }
8218 
8219 #define typedef_BDK_PCIERCX_CFG114(a) bdk_pciercx_cfg114_t
8220 #define bustype_BDK_PCIERCX_CFG114(a) BDK_CSR_TYPE_PCICONFIGRC
8221 #define basename_BDK_PCIERCX_CFG114(a) "PCIERCX_CFG114"
8222 #define busnum_BDK_PCIERCX_CFG114(a) (a)
8223 #define arguments_BDK_PCIERCX_CFG114(a) (a),-1,-1,-1
8224 
8225 /**
8226  * Register (PCICONFIGRC) pcierc#_cfg115
8227  *
8228  * PCIe RC Vendor RAS DES Time Based Analysis Data Register
8229  * This register contains the one hundred sixteenth 32-bits of PCIe type 0 configuration space.
8230  */
8231 union bdk_pciercx_cfg115
8232 {
8233     uint32_t u;
8234     struct bdk_pciercx_cfg115_s
8235     {
8236 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8237         uint32_t tbase_data            : 32; /**< [ 31:  0](RO/H) Time-based analysis data.  This register returns data selected in the
8238                                                                  PCIERC()_CFG114[TBASE_RPT_SEL] field.  The results are cleared when
8239                                                                  the next measurement starts. */
8240 #else /* Word 0 - Little Endian */
8241         uint32_t tbase_data            : 32; /**< [ 31:  0](RO/H) Time-based analysis data.  This register returns data selected in the
8242                                                                  PCIERC()_CFG114[TBASE_RPT_SEL] field.  The results are cleared when
8243                                                                  the next measurement starts. */
8244 #endif /* Word 0 - End */
8245     } s;
8246     /* struct bdk_pciercx_cfg115_s cn; */
8247 };
8248 typedef union bdk_pciercx_cfg115 bdk_pciercx_cfg115_t;
8249 
8250 static inline uint64_t BDK_PCIERCX_CFG115(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG115(unsigned long a)8251 static inline uint64_t BDK_PCIERCX_CFG115(unsigned long a)
8252 {
8253     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8254         return 0x200000001ccll + 0x100000000ll * ((a) & 0x3);
8255     __bdk_csr_fatal("PCIERCX_CFG115", 1, a, 0, 0, 0);
8256 }
8257 
8258 #define typedef_BDK_PCIERCX_CFG115(a) bdk_pciercx_cfg115_t
8259 #define bustype_BDK_PCIERCX_CFG115(a) BDK_CSR_TYPE_PCICONFIGRC
8260 #define basename_BDK_PCIERCX_CFG115(a) "PCIERCX_CFG115"
8261 #define busnum_BDK_PCIERCX_CFG115(a) (a)
8262 #define arguments_BDK_PCIERCX_CFG115(a) (a),-1,-1,-1
8263 
8264 /**
8265  * Register (PCICONFIGRC) pcierc#_cfg121
8266  *
8267  * PCIe RC Vendor RAS DES Error Injection Enable Register
8268  * This register contains the one hundred twenty-first 32-bits of PCIe type 0 configuration space.
8269  */
8270 union bdk_pciercx_cfg121
8271 {
8272     uint32_t u;
8273     struct bdk_pciercx_cfg121_s
8274     {
8275 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8276         uint32_t reserved_7_31         : 25;
8277         uint32_t einj6_en              : 1;  /**< [  6:  6](R/W) Specific TLP error injection enable.  Enables insertion of errors into the
8278                                                                  packet selected.  For more details, refer to PCIERC()_CFG128. */
8279         uint32_t einj5_en              : 1;  /**< [  5:  5](R/W) TLP duplicate/nullify error injection enable.  Enables insertion of duplicate/nullified
8280                                                                  TLPs.  For more details, refer to PCIERC()_CFG127. */
8281         uint32_t einj4_en              : 1;  /**< [  4:  4](R/W) FC credit update error injection enable.  Enables insertion of errors into
8282                                                                  Updated FCs. See PCIERC()_CFG126. */
8283         uint32_t einj3_en              : 1;  /**< [  3:  3](R/W) Symbol datak mask or sync header error enable.  Enables data masking of special
8284                                                                  symbols or the breaking of the sync header.  See PCIERC()_CFG125. */
8285         uint32_t einj2_en              : 1;  /**< [  2:  2](R/W) DLLP error injection enable.  enables insertion of DLLP errors.
8286                                                                  See PCIERC()_CFG124. */
8287         uint32_t einj1_en              : 1;  /**< [  1:  1](R/W) Sequence number error injection enable.  Enables insertion of errors into
8288                                                                  sequence numbers.
8289                                                                  See PCIERC()_CFG123. */
8290         uint32_t einj0_en              : 1;  /**< [  0:  0](R/W) CRC error injection enable.  Enables insertion of errors into various CRC.
8291                                                                  See PCIERC()_CFG122. */
8292 #else /* Word 0 - Little Endian */
8293         uint32_t einj0_en              : 1;  /**< [  0:  0](R/W) CRC error injection enable.  Enables insertion of errors into various CRC.
8294                                                                  See PCIERC()_CFG122. */
8295         uint32_t einj1_en              : 1;  /**< [  1:  1](R/W) Sequence number error injection enable.  Enables insertion of errors into
8296                                                                  sequence numbers.
8297                                                                  See PCIERC()_CFG123. */
8298         uint32_t einj2_en              : 1;  /**< [  2:  2](R/W) DLLP error injection enable.  enables insertion of DLLP errors.
8299                                                                  See PCIERC()_CFG124. */
8300         uint32_t einj3_en              : 1;  /**< [  3:  3](R/W) Symbol datak mask or sync header error enable.  Enables data masking of special
8301                                                                  symbols or the breaking of the sync header.  See PCIERC()_CFG125. */
8302         uint32_t einj4_en              : 1;  /**< [  4:  4](R/W) FC credit update error injection enable.  Enables insertion of errors into
8303                                                                  Updated FCs. See PCIERC()_CFG126. */
8304         uint32_t einj5_en              : 1;  /**< [  5:  5](R/W) TLP duplicate/nullify error injection enable.  Enables insertion of duplicate/nullified
8305                                                                  TLPs.  For more details, refer to PCIERC()_CFG127. */
8306         uint32_t einj6_en              : 1;  /**< [  6:  6](R/W) Specific TLP error injection enable.  Enables insertion of errors into the
8307                                                                  packet selected.  For more details, refer to PCIERC()_CFG128. */
8308         uint32_t reserved_7_31         : 25;
8309 #endif /* Word 0 - End */
8310     } s;
8311     /* struct bdk_pciercx_cfg121_s cn; */
8312 };
8313 typedef union bdk_pciercx_cfg121 bdk_pciercx_cfg121_t;
8314 
8315 static inline uint64_t BDK_PCIERCX_CFG121(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG121(unsigned long a)8316 static inline uint64_t BDK_PCIERCX_CFG121(unsigned long a)
8317 {
8318     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8319         return 0x200000001e8ll + 0x100000000ll * ((a) & 0x3);
8320     __bdk_csr_fatal("PCIERCX_CFG121", 1, a, 0, 0, 0);
8321 }
8322 
8323 #define typedef_BDK_PCIERCX_CFG121(a) bdk_pciercx_cfg121_t
8324 #define bustype_BDK_PCIERCX_CFG121(a) BDK_CSR_TYPE_PCICONFIGRC
8325 #define basename_BDK_PCIERCX_CFG121(a) "PCIERCX_CFG121"
8326 #define busnum_BDK_PCIERCX_CFG121(a) (a)
8327 #define arguments_BDK_PCIERCX_CFG121(a) (a),-1,-1,-1
8328 
8329 /**
8330  * Register (PCICONFIGRC) pcierc#_cfg122
8331  *
8332  * PCIe RC Vendor RAS DES Error Injection Control 0 (CRC) Register
8333  * This register contains the one hundred twenty-third 32-bits of PCIe type 0 configuration space.
8334  */
8335 union bdk_pciercx_cfg122
8336 {
8337     uint32_t u;
8338     struct bdk_pciercx_cfg122_s
8339     {
8340 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8341         uint32_t reserved_12_31        : 20;
8342         uint32_t einj0_crc_type        : 4;  /**< [ 11:  8](R/W) Error injection type.  Selects the type of CRC error tp in inserted.
8343 
8344                                                                  TX path:
8345                                                                  0x0 = New TLP's LCRC error injection.
8346                                                                  0x1 = 16bCRC error injection of ACK/NAK DLLP.
8347                                                                  0x2 = 16bCRC error injection of Update-FC DLLP.
8348                                                                  0x3 = New TLP's ECRC error injection.
8349                                                                  0x4 = TLP's FCRC error injection (128b/130b).
8350                                                                  0x5 = Parity error of TSOS (128b/130b).
8351                                                                  0x6 = Parity error of SKPOS (128b/130b).
8352                                                                  0x7 = Reserved.
8353 
8354                                                                  RX Path:
8355                                                                  0x8 = LCRC error injection.
8356                                                                  0x9 = ECRC error injection.
8357                                                                  0xA - 0xF = Reserved. */
8358         uint32_t einj0_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8359                                                                  This register is decremented when errors are inserted.
8360 
8361                                                                  If the counter value is 0x1 and error is inserted,
8362                                                                  PCIERC()_CFG116[EINJ0_EN] returns zero.
8363 
8364                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ0_EN] is set,
8365                                                                  errors are inserted until PCIERC()_CFG121[EINJ0_EN] is cleared. */
8366 #else /* Word 0 - Little Endian */
8367         uint32_t einj0_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8368                                                                  This register is decremented when errors are inserted.
8369 
8370                                                                  If the counter value is 0x1 and error is inserted,
8371                                                                  PCIERC()_CFG116[EINJ0_EN] returns zero.
8372 
8373                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ0_EN] is set,
8374                                                                  errors are inserted until PCIERC()_CFG121[EINJ0_EN] is cleared. */
8375         uint32_t einj0_crc_type        : 4;  /**< [ 11:  8](R/W) Error injection type.  Selects the type of CRC error tp in inserted.
8376 
8377                                                                  TX path:
8378                                                                  0x0 = New TLP's LCRC error injection.
8379                                                                  0x1 = 16bCRC error injection of ACK/NAK DLLP.
8380                                                                  0x2 = 16bCRC error injection of Update-FC DLLP.
8381                                                                  0x3 = New TLP's ECRC error injection.
8382                                                                  0x4 = TLP's FCRC error injection (128b/130b).
8383                                                                  0x5 = Parity error of TSOS (128b/130b).
8384                                                                  0x6 = Parity error of SKPOS (128b/130b).
8385                                                                  0x7 = Reserved.
8386 
8387                                                                  RX Path:
8388                                                                  0x8 = LCRC error injection.
8389                                                                  0x9 = ECRC error injection.
8390                                                                  0xA - 0xF = Reserved. */
8391         uint32_t reserved_12_31        : 20;
8392 #endif /* Word 0 - End */
8393     } s;
8394     /* struct bdk_pciercx_cfg122_s cn; */
8395 };
8396 typedef union bdk_pciercx_cfg122 bdk_pciercx_cfg122_t;
8397 
8398 static inline uint64_t BDK_PCIERCX_CFG122(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG122(unsigned long a)8399 static inline uint64_t BDK_PCIERCX_CFG122(unsigned long a)
8400 {
8401     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8402         return 0x200000001ecll + 0x100000000ll * ((a) & 0x3);
8403     __bdk_csr_fatal("PCIERCX_CFG122", 1, a, 0, 0, 0);
8404 }
8405 
8406 #define typedef_BDK_PCIERCX_CFG122(a) bdk_pciercx_cfg122_t
8407 #define bustype_BDK_PCIERCX_CFG122(a) BDK_CSR_TYPE_PCICONFIGRC
8408 #define basename_BDK_PCIERCX_CFG122(a) "PCIERCX_CFG122"
8409 #define busnum_BDK_PCIERCX_CFG122(a) (a)
8410 #define arguments_BDK_PCIERCX_CFG122(a) (a),-1,-1,-1
8411 
8412 /**
8413  * Register (PCICONFIGRC) pcierc#_cfg123
8414  *
8415  * PCIe RC Vendor RAS DES Error Injection Control 1 (SEQNUM) Register
8416  * This register contains the one hundred twenty-fourth 32-bits of PCIe type 0 configuration space.
8417  */
8418 union bdk_pciercx_cfg123
8419 {
8420     uint32_t u;
8421     struct bdk_pciercx_cfg123_s
8422     {
8423 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8424         uint32_t reserved_29_31        : 3;
8425         uint32_t einj1_bad_seqnum      : 13; /**< [ 28: 16](R/W) Bad sequence number. Indicates the value to add/subtract
8426                                                                  from the naturally-assigned sequence numbers. This value is
8427                                                                  represented by two's complement.
8428 
8429                                                                  0x0FFF = +4095.
8430 
8431                                                                  0x0002 = +2.
8432                                                                  0x0001 = +1.
8433                                                                  0x0000 = 0.
8434                                                                  0x1FFF = -1.
8435                                                                  0x1FFE = -2.
8436 
8437                                                                  0x1001 = -4095. */
8438         uint32_t reserved_9_15         : 7;
8439         uint32_t einj1_seqnum_type     : 1;  /**< [  8:  8](R/W) Sequence number type.  Selects the type of sequence number.
8440 
8441                                                                  0x0 = Insertion of New TLP's SEQ error.
8442                                                                  0x1 = Insertion of ACK/NAK DLLP's SEQ error. */
8443         uint32_t einj1_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8444                                                                  This register is decremented when errors are inserted.
8445 
8446                                                                  If the counter value is 0x1 and error is inserted,
8447                                                                  PCIERC()_CFG121[EINJ1_EN] returns zero.
8448 
8449                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ1_EN] is set,
8450                                                                  errors are inserted until PCIERC()_CFG121[EINJ1_EN] is cleared. */
8451 #else /* Word 0 - Little Endian */
8452         uint32_t einj1_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8453                                                                  This register is decremented when errors are inserted.
8454 
8455                                                                  If the counter value is 0x1 and error is inserted,
8456                                                                  PCIERC()_CFG121[EINJ1_EN] returns zero.
8457 
8458                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ1_EN] is set,
8459                                                                  errors are inserted until PCIERC()_CFG121[EINJ1_EN] is cleared. */
8460         uint32_t einj1_seqnum_type     : 1;  /**< [  8:  8](R/W) Sequence number type.  Selects the type of sequence number.
8461 
8462                                                                  0x0 = Insertion of New TLP's SEQ error.
8463                                                                  0x1 = Insertion of ACK/NAK DLLP's SEQ error. */
8464         uint32_t reserved_9_15         : 7;
8465         uint32_t einj1_bad_seqnum      : 13; /**< [ 28: 16](R/W) Bad sequence number. Indicates the value to add/subtract
8466                                                                  from the naturally-assigned sequence numbers. This value is
8467                                                                  represented by two's complement.
8468 
8469                                                                  0x0FFF = +4095.
8470 
8471                                                                  0x0002 = +2.
8472                                                                  0x0001 = +1.
8473                                                                  0x0000 = 0.
8474                                                                  0x1FFF = -1.
8475                                                                  0x1FFE = -2.
8476 
8477                                                                  0x1001 = -4095. */
8478         uint32_t reserved_29_31        : 3;
8479 #endif /* Word 0 - End */
8480     } s;
8481     /* struct bdk_pciercx_cfg123_s cn; */
8482 };
8483 typedef union bdk_pciercx_cfg123 bdk_pciercx_cfg123_t;
8484 
8485 static inline uint64_t BDK_PCIERCX_CFG123(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG123(unsigned long a)8486 static inline uint64_t BDK_PCIERCX_CFG123(unsigned long a)
8487 {
8488     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8489         return 0x200000001f0ll + 0x100000000ll * ((a) & 0x3);
8490     __bdk_csr_fatal("PCIERCX_CFG123", 1, a, 0, 0, 0);
8491 }
8492 
8493 #define typedef_BDK_PCIERCX_CFG123(a) bdk_pciercx_cfg123_t
8494 #define bustype_BDK_PCIERCX_CFG123(a) BDK_CSR_TYPE_PCICONFIGRC
8495 #define basename_BDK_PCIERCX_CFG123(a) "PCIERCX_CFG123"
8496 #define busnum_BDK_PCIERCX_CFG123(a) (a)
8497 #define arguments_BDK_PCIERCX_CFG123(a) (a),-1,-1,-1
8498 
8499 /**
8500  * Register (PCICONFIGRC) pcierc#_cfg124
8501  *
8502  * PCIe RC Vendor RAS DES Error Injection Control 2 (DLLP) Register
8503  * This register contains the one hundred twenty-fifth 32-bits of PCIe type 0 configuration space.
8504  */
8505 union bdk_pciercx_cfg124
8506 {
8507     uint32_t u;
8508     struct bdk_pciercx_cfg124_s
8509     {
8510 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8511         uint32_t reserved_10_31        : 22;
8512         uint32_t einj2_dllp_type       : 2;  /**< [  9:  8](R/W) DLLP type.  Selects the type of DLLP errors to be inserted.
8513 
8514                                                                  0x0 = ACK/NAK DLLP transmission block.
8515                                                                  0x1 = Update FC DLLP's transmission block.
8516                                                                  0x2 = Always transmission for NAK DLLP.
8517                                                                  0x3 = Reserved. */
8518         uint32_t einj2_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8519                                                                  This register is decremented when errors are inserted.
8520 
8521                                                                  If the counter value is 0x1 and error is inserted,
8522                                                                  PCIERC()_CFG121[EINJ2_EN] returns zero.
8523 
8524                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ2_EN] is set,
8525                                                                  errors are inserted until PCIERC()_CFG121[EINJ2_EN] is cleared. */
8526 #else /* Word 0 - Little Endian */
8527         uint32_t einj2_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8528                                                                  This register is decremented when errors are inserted.
8529 
8530                                                                  If the counter value is 0x1 and error is inserted,
8531                                                                  PCIERC()_CFG121[EINJ2_EN] returns zero.
8532 
8533                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ2_EN] is set,
8534                                                                  errors are inserted until PCIERC()_CFG121[EINJ2_EN] is cleared. */
8535         uint32_t einj2_dllp_type       : 2;  /**< [  9:  8](R/W) DLLP type.  Selects the type of DLLP errors to be inserted.
8536 
8537                                                                  0x0 = ACK/NAK DLLP transmission block.
8538                                                                  0x1 = Update FC DLLP's transmission block.
8539                                                                  0x2 = Always transmission for NAK DLLP.
8540                                                                  0x3 = Reserved. */
8541         uint32_t reserved_10_31        : 22;
8542 #endif /* Word 0 - End */
8543     } s;
8544     /* struct bdk_pciercx_cfg124_s cn; */
8545 };
8546 typedef union bdk_pciercx_cfg124 bdk_pciercx_cfg124_t;
8547 
8548 static inline uint64_t BDK_PCIERCX_CFG124(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG124(unsigned long a)8549 static inline uint64_t BDK_PCIERCX_CFG124(unsigned long a)
8550 {
8551     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8552         return 0x200000001f4ll + 0x100000000ll * ((a) & 0x3);
8553     __bdk_csr_fatal("PCIERCX_CFG124", 1, a, 0, 0, 0);
8554 }
8555 
8556 #define typedef_BDK_PCIERCX_CFG124(a) bdk_pciercx_cfg124_t
8557 #define bustype_BDK_PCIERCX_CFG124(a) BDK_CSR_TYPE_PCICONFIGRC
8558 #define basename_BDK_PCIERCX_CFG124(a) "PCIERCX_CFG124"
8559 #define busnum_BDK_PCIERCX_CFG124(a) (a)
8560 #define arguments_BDK_PCIERCX_CFG124(a) (a),-1,-1,-1
8561 
8562 /**
8563  * Register (PCICONFIGRC) pcierc#_cfg125
8564  *
8565  * PCIe RC Vendor RAS DES Error Injection Control 3 (Symbol) Register
8566  * This register contains the one hundred twenty-sixth 32-bits of PCIe type 0 configuration space.
8567  */
8568 union bdk_pciercx_cfg125
8569 {
8570     uint32_t u;
8571     struct bdk_pciercx_cfg125_s
8572     {
8573 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8574         uint32_t reserved_11_31        : 21;
8575         uint32_t einj3_symbol_type     : 3;  /**< [ 10:  8](R/W) Error type, 8 b/10 b encoding - Mask K symbol.
8576 
8577                                                                  0x0 = Reserved.
8578                                                                  0x1 = COM/PAD(TS1 Order Set).
8579                                                                  0x2 = COM/PAD(TS2 Order Set).
8580                                                                  0x3 = COM/FTS(FTS Order Set).
8581                                                                  0x4 = COM/IDLE(E-Idle Order Set).
8582                                                                  0x5 = END/EDB Symbol.
8583                                                                  0x6 = STP/SDP Symbol.
8584                                                                  0x7 = COM/SKP(SKP Order set). */
8585         uint32_t einj3_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8586                                                                  This register is decremented when errors are inserted.
8587 
8588                                                                  If the counter value is 0x1 and error is inserted,
8589                                                                  PCIERC()_CFG121[EINJ3_EN] returns zero.
8590 
8591                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ3_EN] is set,
8592                                                                  errors are inserted until PCIERC()_CFG121[EINJ3_EN] is cleared. */
8593 #else /* Word 0 - Little Endian */
8594         uint32_t einj3_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8595                                                                  This register is decremented when errors are inserted.
8596 
8597                                                                  If the counter value is 0x1 and error is inserted,
8598                                                                  PCIERC()_CFG121[EINJ3_EN] returns zero.
8599 
8600                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ3_EN] is set,
8601                                                                  errors are inserted until PCIERC()_CFG121[EINJ3_EN] is cleared. */
8602         uint32_t einj3_symbol_type     : 3;  /**< [ 10:  8](R/W) Error type, 8 b/10 b encoding - Mask K symbol.
8603 
8604                                                                  0x0 = Reserved.
8605                                                                  0x1 = COM/PAD(TS1 Order Set).
8606                                                                  0x2 = COM/PAD(TS2 Order Set).
8607                                                                  0x3 = COM/FTS(FTS Order Set).
8608                                                                  0x4 = COM/IDLE(E-Idle Order Set).
8609                                                                  0x5 = END/EDB Symbol.
8610                                                                  0x6 = STP/SDP Symbol.
8611                                                                  0x7 = COM/SKP(SKP Order set). */
8612         uint32_t reserved_11_31        : 21;
8613 #endif /* Word 0 - End */
8614     } s;
8615     /* struct bdk_pciercx_cfg125_s cn; */
8616 };
8617 typedef union bdk_pciercx_cfg125 bdk_pciercx_cfg125_t;
8618 
8619 static inline uint64_t BDK_PCIERCX_CFG125(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG125(unsigned long a)8620 static inline uint64_t BDK_PCIERCX_CFG125(unsigned long a)
8621 {
8622     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8623         return 0x200000001f8ll + 0x100000000ll * ((a) & 0x3);
8624     __bdk_csr_fatal("PCIERCX_CFG125", 1, a, 0, 0, 0);
8625 }
8626 
8627 #define typedef_BDK_PCIERCX_CFG125(a) bdk_pciercx_cfg125_t
8628 #define bustype_BDK_PCIERCX_CFG125(a) BDK_CSR_TYPE_PCICONFIGRC
8629 #define basename_BDK_PCIERCX_CFG125(a) "PCIERCX_CFG125"
8630 #define busnum_BDK_PCIERCX_CFG125(a) (a)
8631 #define arguments_BDK_PCIERCX_CFG125(a) (a),-1,-1,-1
8632 
8633 /**
8634  * Register (PCICONFIGRC) pcierc#_cfg126
8635  *
8636  * PCIe RC Vendor RAS DES Error Injection Control 4 (FC Credit) Register
8637  * This register contains the one hundred twenty-seventh 32-bits of PCIe type 0 configuration space.
8638  */
8639 union bdk_pciercx_cfg126
8640 {
8641     uint32_t u;
8642     struct bdk_pciercx_cfg126_s
8643     {
8644 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8645         uint32_t reserved_29_31        : 3;
8646         uint32_t einj4_bad_updfc_val   : 13; /**< [ 28: 16](R/W) Bad update-FC credit value.  Indicates the value to add/subtract
8647                                                                  from the UpdateFC credit.  The value is represented by two's
8648                                                                  compliment.
8649 
8650                                                                  0x0FFF = +4095.
8651 
8652                                                                  0x0002 = +2.
8653                                                                  0x0001 = +1.
8654                                                                  0x0000 = 0.
8655                                                                  0x1FFF = -1.
8656                                                                  0x1FFE = -2.
8657 
8658                                                                  0x1001 = -4095. */
8659         uint32_t reserved_15           : 1;
8660         uint32_t einj4_vc_num          : 3;  /**< [ 14: 12](R/W) VC number.  Indicates the target VC Number. */
8661         uint32_t reserved_11           : 1;
8662         uint32_t einj4_vc_type         : 3;  /**< [ 10:  8](R/W) Update-FC type.  Selects the credit type.
8663 
8664                                                                  0x0 = Posted TLP header credit value control.
8665                                                                  0x1 = Non-Posted TLP header credit value control.
8666                                                                  0x2 = Completion TLP header credit value control.
8667                                                                  0x3 = Reserved.
8668                                                                  0x4 = Posted TLP data credit value control.
8669                                                                  0x5 = Non-Posted TLP data credit value control.
8670                                                                  0x6 = Completion TLP data credit value control.
8671                                                                  0x7 = Reserved. */
8672         uint32_t einj4_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8673                                                                  This register is decremented when errors are inserted.
8674 
8675                                                                  If the counter value is 0x1 and error is inserted,
8676                                                                  PCIERC()_CFG121[EINJ4_EN] returns zero.
8677 
8678                                                                  If the counter value is 0x0 and PCIERC()_CFG116[EINJ4_EN] is set,
8679                                                                  errors are inserted until PCIERC()_CFG121[EINJ4_EN] is cleared. */
8680 #else /* Word 0 - Little Endian */
8681         uint32_t einj4_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8682                                                                  This register is decremented when errors are inserted.
8683 
8684                                                                  If the counter value is 0x1 and error is inserted,
8685                                                                  PCIERC()_CFG121[EINJ4_EN] returns zero.
8686 
8687                                                                  If the counter value is 0x0 and PCIERC()_CFG116[EINJ4_EN] is set,
8688                                                                  errors are inserted until PCIERC()_CFG121[EINJ4_EN] is cleared. */
8689         uint32_t einj4_vc_type         : 3;  /**< [ 10:  8](R/W) Update-FC type.  Selects the credit type.
8690 
8691                                                                  0x0 = Posted TLP header credit value control.
8692                                                                  0x1 = Non-Posted TLP header credit value control.
8693                                                                  0x2 = Completion TLP header credit value control.
8694                                                                  0x3 = Reserved.
8695                                                                  0x4 = Posted TLP data credit value control.
8696                                                                  0x5 = Non-Posted TLP data credit value control.
8697                                                                  0x6 = Completion TLP data credit value control.
8698                                                                  0x7 = Reserved. */
8699         uint32_t reserved_11           : 1;
8700         uint32_t einj4_vc_num          : 3;  /**< [ 14: 12](R/W) VC number.  Indicates the target VC Number. */
8701         uint32_t reserved_15           : 1;
8702         uint32_t einj4_bad_updfc_val   : 13; /**< [ 28: 16](R/W) Bad update-FC credit value.  Indicates the value to add/subtract
8703                                                                  from the UpdateFC credit.  The value is represented by two's
8704                                                                  compliment.
8705 
8706                                                                  0x0FFF = +4095.
8707 
8708                                                                  0x0002 = +2.
8709                                                                  0x0001 = +1.
8710                                                                  0x0000 = 0.
8711                                                                  0x1FFF = -1.
8712                                                                  0x1FFE = -2.
8713 
8714                                                                  0x1001 = -4095. */
8715         uint32_t reserved_29_31        : 3;
8716 #endif /* Word 0 - End */
8717     } s;
8718     /* struct bdk_pciercx_cfg126_s cn; */
8719 };
8720 typedef union bdk_pciercx_cfg126 bdk_pciercx_cfg126_t;
8721 
8722 static inline uint64_t BDK_PCIERCX_CFG126(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG126(unsigned long a)8723 static inline uint64_t BDK_PCIERCX_CFG126(unsigned long a)
8724 {
8725     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8726         return 0x200000001fcll + 0x100000000ll * ((a) & 0x3);
8727     __bdk_csr_fatal("PCIERCX_CFG126", 1, a, 0, 0, 0);
8728 }
8729 
8730 #define typedef_BDK_PCIERCX_CFG126(a) bdk_pciercx_cfg126_t
8731 #define bustype_BDK_PCIERCX_CFG126(a) BDK_CSR_TYPE_PCICONFIGRC
8732 #define basename_BDK_PCIERCX_CFG126(a) "PCIERCX_CFG126"
8733 #define busnum_BDK_PCIERCX_CFG126(a) (a)
8734 #define arguments_BDK_PCIERCX_CFG126(a) (a),-1,-1,-1
8735 
8736 /**
8737  * Register (PCICONFIGRC) pcierc#_cfg127
8738  *
8739  * PCIe RC Vendor RAS DES Error Injection Control 5 (Specific TLP) Register
8740  * This register contains the one hundred twenty-eighth 32-bits of PCIe type 0 configuration space.
8741  */
8742 union bdk_pciercx_cfg127
8743 {
8744     uint32_t u;
8745     struct bdk_pciercx_cfg127_s
8746     {
8747 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8748         uint32_t reserved_9_31         : 23;
8749         uint32_t einj5_sp_tlp          : 1;  /**< [  8:  8](R/W) Specified TLP.  Selects the specified TLP to be inserted.
8750 
8751                                                                  0x0 = Generates duplicate TLPs by handling ACK DLLP as NAK DLLP.
8752                                                                  0x1 = Generates nullified TLP (Original TLP will be stored in retry buffer). */
8753         uint32_t einj5_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8754                                                                  This register is decremented when errors are inserted.
8755 
8756                                                                  If the counter value is 0x1 and error is inserted,
8757                                                                  PCIERC()_CFG121[EINJ5_EN] returns zero.
8758 
8759                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ5_EN] is set,
8760                                                                  errors are inserted until PCIERC()_CFG121[EINJ5_EN] is cleared. */
8761 #else /* Word 0 - Little Endian */
8762         uint32_t einj5_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
8763                                                                  This register is decremented when errors are inserted.
8764 
8765                                                                  If the counter value is 0x1 and error is inserted,
8766                                                                  PCIERC()_CFG121[EINJ5_EN] returns zero.
8767 
8768                                                                  If the counter value is 0x0 and PCIERC()_CFG121[EINJ5_EN] is set,
8769                                                                  errors are inserted until PCIERC()_CFG121[EINJ5_EN] is cleared. */
8770         uint32_t einj5_sp_tlp          : 1;  /**< [  8:  8](R/W) Specified TLP.  Selects the specified TLP to be inserted.
8771 
8772                                                                  0x0 = Generates duplicate TLPs by handling ACK DLLP as NAK DLLP.
8773                                                                  0x1 = Generates nullified TLP (Original TLP will be stored in retry buffer). */
8774         uint32_t reserved_9_31         : 23;
8775 #endif /* Word 0 - End */
8776     } s;
8777     /* struct bdk_pciercx_cfg127_s cn; */
8778 };
8779 typedef union bdk_pciercx_cfg127 bdk_pciercx_cfg127_t;
8780 
8781 static inline uint64_t BDK_PCIERCX_CFG127(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG127(unsigned long a)8782 static inline uint64_t BDK_PCIERCX_CFG127(unsigned long a)
8783 {
8784     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8785         return 0x20000000200ll + 0x100000000ll * ((a) & 0x3);
8786     __bdk_csr_fatal("PCIERCX_CFG127", 1, a, 0, 0, 0);
8787 }
8788 
8789 #define typedef_BDK_PCIERCX_CFG127(a) bdk_pciercx_cfg127_t
8790 #define bustype_BDK_PCIERCX_CFG127(a) BDK_CSR_TYPE_PCICONFIGRC
8791 #define basename_BDK_PCIERCX_CFG127(a) "PCIERCX_CFG127"
8792 #define busnum_BDK_PCIERCX_CFG127(a) (a)
8793 #define arguments_BDK_PCIERCX_CFG127(a) (a),-1,-1,-1
8794 
8795 /**
8796  * Register (PCICONFIGRC) pcierc#_cfg128
8797  *
8798  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Point H0) Register
8799  * This register contains the one hundred twenty-ninth 32-bits of PCIe type 0 configuration space.
8800  */
8801 union bdk_pciercx_cfg128
8802 {
8803     uint32_t u;
8804     struct bdk_pciercx_cfg128_s
8805     {
8806 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8807         uint32_t reserved_0_31         : 32;
8808 #else /* Word 0 - Little Endian */
8809         uint32_t reserved_0_31         : 32;
8810 #endif /* Word 0 - End */
8811     } s;
8812     struct bdk_pciercx_cfg128_cn81xx
8813     {
8814 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8815         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset. Points to the secondary PCI Express capabilities by default.
8816                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8817         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
8818                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8819         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
8820                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8821 #else /* Word 0 - Little Endian */
8822         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
8823                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8824         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
8825                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8826         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset. Points to the secondary PCI Express capabilities by default.
8827                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8828 #endif /* Word 0 - End */
8829     } cn81xx;
8830     struct bdk_pciercx_cfg128_cn83xx
8831     {
8832 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8833         uint32_t einj6_com_pt_h0       : 32; /**< [ 31:  0](R/W) Packet compare point first DWORD.
8834                                                                  Specifies which TX TLP header DWORD0 bits to compare
8835                                                                  with the corresponding bits in PCIERC()_CFG127[EIN6_COM_VAL_H0].
8836                                                                  When all specified bits (in the TX TLP header and
8837                                                                  PCIERC()_CFG127[EIN6_COM_VAL_H0] match, an error is inserted into the TLP. */
8838 #else /* Word 0 - Little Endian */
8839         uint32_t einj6_com_pt_h0       : 32; /**< [ 31:  0](R/W) Packet compare point first DWORD.
8840                                                                  Specifies which TX TLP header DWORD0 bits to compare
8841                                                                  with the corresponding bits in PCIERC()_CFG127[EIN6_COM_VAL_H0].
8842                                                                  When all specified bits (in the TX TLP header and
8843                                                                  PCIERC()_CFG127[EIN6_COM_VAL_H0] match, an error is inserted into the TLP. */
8844 #endif /* Word 0 - End */
8845     } cn83xx;
8846 };
8847 typedef union bdk_pciercx_cfg128 bdk_pciercx_cfg128_t;
8848 
8849 static inline uint64_t BDK_PCIERCX_CFG128(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG128(unsigned long a)8850 static inline uint64_t BDK_PCIERCX_CFG128(unsigned long a)
8851 {
8852     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
8853         return 0x20000000200ll + 0x100000000ll * ((a) & 0x3);
8854     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8855         return 0x20000000204ll + 0x100000000ll * ((a) & 0x3);
8856     __bdk_csr_fatal("PCIERCX_CFG128", 1, a, 0, 0, 0);
8857 }
8858 
8859 #define typedef_BDK_PCIERCX_CFG128(a) bdk_pciercx_cfg128_t
8860 #define bustype_BDK_PCIERCX_CFG128(a) BDK_CSR_TYPE_PCICONFIGRC
8861 #define basename_BDK_PCIERCX_CFG128(a) "PCIERCX_CFG128"
8862 #define busnum_BDK_PCIERCX_CFG128(a) (a)
8863 #define arguments_BDK_PCIERCX_CFG128(a) (a),-1,-1,-1
8864 
8865 /**
8866  * Register (PCICONFIGRC) pcierc#_cfg129
8867  *
8868  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Point H1) Register
8869  * This register contains the one hundred thirtyith 32-bits of PCIe type 0 configuration space.
8870  */
8871 union bdk_pciercx_cfg129
8872 {
8873     uint32_t u;
8874     struct bdk_pciercx_cfg129_s
8875     {
8876 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8877         uint32_t reserved_0_31         : 32;
8878 #else /* Word 0 - Little Endian */
8879         uint32_t reserved_0_31         : 32;
8880 #endif /* Word 0 - End */
8881     } s;
8882     struct bdk_pciercx_cfg129_cn81xx
8883     {
8884 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8885         uint32_t reserved_23_31        : 9;
8886         uint32_t dte                   : 1;  /**< [ 22: 22](R/W) ACS direct translated P2P enable. */
8887         uint32_t ece                   : 1;  /**< [ 21: 21](R/W) ACS P2P egress control enable. */
8888         uint32_t ufe                   : 1;  /**< [ 20: 20](R/W) ACS upstream forwarding enable. */
8889         uint32_t cre                   : 1;  /**< [ 19: 19](R/W) ACS P2P completion redirect enable. */
8890         uint32_t rre                   : 1;  /**< [ 18: 18](R/W) ACS P2P request redirect enable. */
8891         uint32_t tbe                   : 1;  /**< [ 17: 17](R/W) ACS translation blocking enable. */
8892         uint32_t sve                   : 1;  /**< [ 16: 16](R/W) ACS source validation enable. */
8893         uint32_t ecvs                  : 8;  /**< [ 15:  8](RO/WRSL) Egress control vector size.
8894                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8895         uint32_t reserved_7            : 1;
8896         uint32_t dt                    : 1;  /**< [  6:  6](RO/WRSL) ACS direct translated P2P.
8897                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8898         uint32_t ec                    : 1;  /**< [  5:  5](RO/WRSL) ACS P2P egress control.
8899                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8900         uint32_t uf                    : 1;  /**< [  4:  4](RO/WRSL) ACS upstream forwarding.
8901                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8902         uint32_t cr                    : 1;  /**< [  3:  3](RO/WRSL) ACS P2P completion redirect.
8903                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8904         uint32_t rr                    : 1;  /**< [  2:  2](RO/WRSL) ACS P2P request redirect.
8905                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8906         uint32_t tb                    : 1;  /**< [  1:  1](RO/WRSL) ACS translation blocking.
8907                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8908         uint32_t sv                    : 1;  /**< [  0:  0](RO/WRSL) ACS source validation.
8909                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8910 #else /* Word 0 - Little Endian */
8911         uint32_t sv                    : 1;  /**< [  0:  0](RO/WRSL) ACS source validation.
8912                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8913         uint32_t tb                    : 1;  /**< [  1:  1](RO/WRSL) ACS translation blocking.
8914                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8915         uint32_t rr                    : 1;  /**< [  2:  2](RO/WRSL) ACS P2P request redirect.
8916                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8917         uint32_t cr                    : 1;  /**< [  3:  3](RO/WRSL) ACS P2P completion redirect.
8918                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8919         uint32_t uf                    : 1;  /**< [  4:  4](RO/WRSL) ACS upstream forwarding.
8920                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8921         uint32_t ec                    : 1;  /**< [  5:  5](RO/WRSL) ACS P2P egress control.
8922                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8923         uint32_t dt                    : 1;  /**< [  6:  6](RO/WRSL) ACS direct translated P2P.
8924                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8925         uint32_t reserved_7            : 1;
8926         uint32_t ecvs                  : 8;  /**< [ 15:  8](RO/WRSL) Egress control vector size.
8927                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
8928         uint32_t sve                   : 1;  /**< [ 16: 16](R/W) ACS source validation enable. */
8929         uint32_t tbe                   : 1;  /**< [ 17: 17](R/W) ACS translation blocking enable. */
8930         uint32_t rre                   : 1;  /**< [ 18: 18](R/W) ACS P2P request redirect enable. */
8931         uint32_t cre                   : 1;  /**< [ 19: 19](R/W) ACS P2P completion redirect enable. */
8932         uint32_t ufe                   : 1;  /**< [ 20: 20](R/W) ACS upstream forwarding enable. */
8933         uint32_t ece                   : 1;  /**< [ 21: 21](R/W) ACS P2P egress control enable. */
8934         uint32_t dte                   : 1;  /**< [ 22: 22](R/W) ACS direct translated P2P enable. */
8935         uint32_t reserved_23_31        : 9;
8936 #endif /* Word 0 - End */
8937     } cn81xx;
8938     struct bdk_pciercx_cfg129_cn83xx
8939     {
8940 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8941         uint32_t einj6_com_pt_h1       : 32; /**< [ 31:  0](R/W) Packet compare point second DWORD.
8942                                                                  Specifies which TX TLP header DWORD1 bits to compare
8943                                                                  with the corresponding bits in PCIERC()_CFG134[EIN6_COM_VAL_H1].
8944                                                                  When all specified bits (in the TX TLP header and
8945                                                                  PCIERC()_CFG134[EIN6_COM_VAL_H1] match, an error is inserted into the TLP. */
8946 #else /* Word 0 - Little Endian */
8947         uint32_t einj6_com_pt_h1       : 32; /**< [ 31:  0](R/W) Packet compare point second DWORD.
8948                                                                  Specifies which TX TLP header DWORD1 bits to compare
8949                                                                  with the corresponding bits in PCIERC()_CFG134[EIN6_COM_VAL_H1].
8950                                                                  When all specified bits (in the TX TLP header and
8951                                                                  PCIERC()_CFG134[EIN6_COM_VAL_H1] match, an error is inserted into the TLP. */
8952 #endif /* Word 0 - End */
8953     } cn83xx;
8954 };
8955 typedef union bdk_pciercx_cfg129 bdk_pciercx_cfg129_t;
8956 
8957 static inline uint64_t BDK_PCIERCX_CFG129(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG129(unsigned long a)8958 static inline uint64_t BDK_PCIERCX_CFG129(unsigned long a)
8959 {
8960     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
8961         return 0x20000000204ll + 0x100000000ll * ((a) & 0x3);
8962     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
8963         return 0x20000000208ll + 0x100000000ll * ((a) & 0x3);
8964     __bdk_csr_fatal("PCIERCX_CFG129", 1, a, 0, 0, 0);
8965 }
8966 
8967 #define typedef_BDK_PCIERCX_CFG129(a) bdk_pciercx_cfg129_t
8968 #define bustype_BDK_PCIERCX_CFG129(a) BDK_CSR_TYPE_PCICONFIGRC
8969 #define basename_BDK_PCIERCX_CFG129(a) "PCIERCX_CFG129"
8970 #define busnum_BDK_PCIERCX_CFG129(a) (a)
8971 #define arguments_BDK_PCIERCX_CFG129(a) (a),-1,-1,-1
8972 
8973 /**
8974  * Register (PCICONFIGRC) pcierc#_cfg130
8975  *
8976  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Point H2) Register
8977  * This register contains the one hundred thirty-first 32-bits of PCIe type 0 configuration space.
8978  */
8979 union bdk_pciercx_cfg130
8980 {
8981     uint32_t u;
8982     struct bdk_pciercx_cfg130_s
8983     {
8984 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8985         uint32_t reserved_0_31         : 32;
8986 #else /* Word 0 - Little Endian */
8987         uint32_t reserved_0_31         : 32;
8988 #endif /* Word 0 - End */
8989     } s;
8990     struct bdk_pciercx_cfg130_cn81xx
8991     {
8992 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
8993         uint32_t ecv                   : 32; /**< [ 31:  0](R/W) Egress control vector. */
8994 #else /* Word 0 - Little Endian */
8995         uint32_t ecv                   : 32; /**< [ 31:  0](R/W) Egress control vector. */
8996 #endif /* Word 0 - End */
8997     } cn81xx;
8998     struct bdk_pciercx_cfg130_cn83xx
8999     {
9000 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9001         uint32_t einj6_com_pt_h2       : 32; /**< [ 31:  0](R/W) Packet compare point third DWORD.
9002                                                                  Specifies which TX TLP header DWORD2 bits to compare
9003                                                                  with the corresponding bits in PCIERC()_CFG134[EIN6_COM_VAL_H2].
9004                                                                  When all specified bits (in the TX TLP header and
9005                                                                  PCIERC()_CFG134[EIN6_COM_VAL_H2] match, an error is inserted into the TLP. */
9006 #else /* Word 0 - Little Endian */
9007         uint32_t einj6_com_pt_h2       : 32; /**< [ 31:  0](R/W) Packet compare point third DWORD.
9008                                                                  Specifies which TX TLP header DWORD2 bits to compare
9009                                                                  with the corresponding bits in PCIERC()_CFG134[EIN6_COM_VAL_H2].
9010                                                                  When all specified bits (in the TX TLP header and
9011                                                                  PCIERC()_CFG134[EIN6_COM_VAL_H2] match, an error is inserted into the TLP. */
9012 #endif /* Word 0 - End */
9013     } cn83xx;
9014 };
9015 typedef union bdk_pciercx_cfg130 bdk_pciercx_cfg130_t;
9016 
9017 static inline uint64_t BDK_PCIERCX_CFG130(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG130(unsigned long a)9018 static inline uint64_t BDK_PCIERCX_CFG130(unsigned long a)
9019 {
9020     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
9021         return 0x20000000208ll + 0x100000000ll * ((a) & 0x3);
9022     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9023         return 0x2000000020cll + 0x100000000ll * ((a) & 0x3);
9024     __bdk_csr_fatal("PCIERCX_CFG130", 1, a, 0, 0, 0);
9025 }
9026 
9027 #define typedef_BDK_PCIERCX_CFG130(a) bdk_pciercx_cfg130_t
9028 #define bustype_BDK_PCIERCX_CFG130(a) BDK_CSR_TYPE_PCICONFIGRC
9029 #define basename_BDK_PCIERCX_CFG130(a) "PCIERCX_CFG130"
9030 #define busnum_BDK_PCIERCX_CFG130(a) (a)
9031 #define arguments_BDK_PCIERCX_CFG130(a) (a),-1,-1,-1
9032 
9033 /**
9034  * Register (PCICONFIGRC) pcierc#_cfg131
9035  *
9036  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Point H3) Register
9037  * This register contains the one hundred thirty-second 32-bits of PCIe type 0 configuration space.
9038  */
9039 union bdk_pciercx_cfg131
9040 {
9041     uint32_t u;
9042     struct bdk_pciercx_cfg131_s
9043     {
9044 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9045         uint32_t einj6_com_pt_h3       : 32; /**< [ 31:  0](R/W) Packet compare point fourth DWORD.
9046                                                                  Specifies which TX TLP header DWORD3 bits to compare
9047                                                                  with the corresponding bits in PCIERC()_CFG135[EIN6_COM_VAL_H3].
9048                                                                  When all specified bits (in the TX TLP header and
9049                                                                  PCIERC()_CFG135[EIN6_COM_VAL_H3] match, an error is inserted into the TLP. */
9050 #else /* Word 0 - Little Endian */
9051         uint32_t einj6_com_pt_h3       : 32; /**< [ 31:  0](R/W) Packet compare point fourth DWORD.
9052                                                                  Specifies which TX TLP header DWORD3 bits to compare
9053                                                                  with the corresponding bits in PCIERC()_CFG135[EIN6_COM_VAL_H3].
9054                                                                  When all specified bits (in the TX TLP header and
9055                                                                  PCIERC()_CFG135[EIN6_COM_VAL_H3] match, an error is inserted into the TLP. */
9056 #endif /* Word 0 - End */
9057     } s;
9058     /* struct bdk_pciercx_cfg131_s cn; */
9059 };
9060 typedef union bdk_pciercx_cfg131 bdk_pciercx_cfg131_t;
9061 
9062 static inline uint64_t BDK_PCIERCX_CFG131(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG131(unsigned long a)9063 static inline uint64_t BDK_PCIERCX_CFG131(unsigned long a)
9064 {
9065     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9066         return 0x20000000210ll + 0x100000000ll * ((a) & 0x3);
9067     __bdk_csr_fatal("PCIERCX_CFG131", 1, a, 0, 0, 0);
9068 }
9069 
9070 #define typedef_BDK_PCIERCX_CFG131(a) bdk_pciercx_cfg131_t
9071 #define bustype_BDK_PCIERCX_CFG131(a) BDK_CSR_TYPE_PCICONFIGRC
9072 #define basename_BDK_PCIERCX_CFG131(a) "PCIERCX_CFG131"
9073 #define busnum_BDK_PCIERCX_CFG131(a) (a)
9074 #define arguments_BDK_PCIERCX_CFG131(a) (a),-1,-1,-1
9075 
9076 /**
9077  * Register (PCICONFIGRC) pcierc#_cfg132
9078  *
9079  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Value H0) Register
9080  * This register contains the one hundred thirty-third 32-bits of PCIe type 0 configuration space.
9081  */
9082 union bdk_pciercx_cfg132
9083 {
9084     uint32_t u;
9085     struct bdk_pciercx_cfg132_s
9086     {
9087 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9088         uint32_t einj6_com_val_h0      : 32; /**< [ 31:  0](R/W) Packet compare value first DWORD.
9089                                                                  Specifies the value to compare against TX the TLP header
9090                                                                  DWORD0 bits specified in PCIERC()_CFG128[EINJ_COM_PT_H0]. */
9091 #else /* Word 0 - Little Endian */
9092         uint32_t einj6_com_val_h0      : 32; /**< [ 31:  0](R/W) Packet compare value first DWORD.
9093                                                                  Specifies the value to compare against TX the TLP header
9094                                                                  DWORD0 bits specified in PCIERC()_CFG128[EINJ_COM_PT_H0]. */
9095 #endif /* Word 0 - End */
9096     } s;
9097     /* struct bdk_pciercx_cfg132_s cn; */
9098 };
9099 typedef union bdk_pciercx_cfg132 bdk_pciercx_cfg132_t;
9100 
9101 static inline uint64_t BDK_PCIERCX_CFG132(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG132(unsigned long a)9102 static inline uint64_t BDK_PCIERCX_CFG132(unsigned long a)
9103 {
9104     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9105         return 0x20000000214ll + 0x100000000ll * ((a) & 0x3);
9106     __bdk_csr_fatal("PCIERCX_CFG132", 1, a, 0, 0, 0);
9107 }
9108 
9109 #define typedef_BDK_PCIERCX_CFG132(a) bdk_pciercx_cfg132_t
9110 #define bustype_BDK_PCIERCX_CFG132(a) BDK_CSR_TYPE_PCICONFIGRC
9111 #define basename_BDK_PCIERCX_CFG132(a) "PCIERCX_CFG132"
9112 #define busnum_BDK_PCIERCX_CFG132(a) (a)
9113 #define arguments_BDK_PCIERCX_CFG132(a) (a),-1,-1,-1
9114 
9115 /**
9116  * Register (PCICONFIGRC) pcierc#_cfg133
9117  *
9118  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Value H1) Register
9119  * This register contains the one hundred thirty-forth 32-bits of PCIe type 0 configuration space.
9120  */
9121 union bdk_pciercx_cfg133
9122 {
9123     uint32_t u;
9124     struct bdk_pciercx_cfg133_s
9125     {
9126 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9127         uint32_t einj6_com_val_h1      : 32; /**< [ 31:  0](R/W) Packet compare value second DWORD.
9128                                                                  Specifies the value to compare against TX the TLP header
9129                                                                  DWORD1 bits specified in PCIERC()_CFG129[EINJ_COM_PT_H1]. */
9130 #else /* Word 0 - Little Endian */
9131         uint32_t einj6_com_val_h1      : 32; /**< [ 31:  0](R/W) Packet compare value second DWORD.
9132                                                                  Specifies the value to compare against TX the TLP header
9133                                                                  DWORD1 bits specified in PCIERC()_CFG129[EINJ_COM_PT_H1]. */
9134 #endif /* Word 0 - End */
9135     } s;
9136     /* struct bdk_pciercx_cfg133_s cn; */
9137 };
9138 typedef union bdk_pciercx_cfg133 bdk_pciercx_cfg133_t;
9139 
9140 static inline uint64_t BDK_PCIERCX_CFG133(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG133(unsigned long a)9141 static inline uint64_t BDK_PCIERCX_CFG133(unsigned long a)
9142 {
9143     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9144         return 0x20000000218ll + 0x100000000ll * ((a) & 0x3);
9145     __bdk_csr_fatal("PCIERCX_CFG133", 1, a, 0, 0, 0);
9146 }
9147 
9148 #define typedef_BDK_PCIERCX_CFG133(a) bdk_pciercx_cfg133_t
9149 #define bustype_BDK_PCIERCX_CFG133(a) BDK_CSR_TYPE_PCICONFIGRC
9150 #define basename_BDK_PCIERCX_CFG133(a) "PCIERCX_CFG133"
9151 #define busnum_BDK_PCIERCX_CFG133(a) (a)
9152 #define arguments_BDK_PCIERCX_CFG133(a) (a),-1,-1,-1
9153 
9154 /**
9155  * Register (PCICONFIGRC) pcierc#_cfg134
9156  *
9157  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Value H2) Register
9158  * This register contains the one hundred thirty-fifth 32-bits of PCIe type 0 configuration space.
9159  */
9160 union bdk_pciercx_cfg134
9161 {
9162     uint32_t u;
9163     struct bdk_pciercx_cfg134_s
9164     {
9165 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9166         uint32_t einj6_com_val_h2      : 32; /**< [ 31:  0](R/W) Packet compare value third DWORD.
9167                                                                  Specifies the value to compare against TX the TLP header
9168                                                                  DWORD2 bits specified in the PCIERC()_CFG130[EINJ_COM_PT_H3]. */
9169 #else /* Word 0 - Little Endian */
9170         uint32_t einj6_com_val_h2      : 32; /**< [ 31:  0](R/W) Packet compare value third DWORD.
9171                                                                  Specifies the value to compare against TX the TLP header
9172                                                                  DWORD2 bits specified in the PCIERC()_CFG130[EINJ_COM_PT_H3]. */
9173 #endif /* Word 0 - End */
9174     } s;
9175     /* struct bdk_pciercx_cfg134_s cn; */
9176 };
9177 typedef union bdk_pciercx_cfg134 bdk_pciercx_cfg134_t;
9178 
9179 static inline uint64_t BDK_PCIERCX_CFG134(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG134(unsigned long a)9180 static inline uint64_t BDK_PCIERCX_CFG134(unsigned long a)
9181 {
9182     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9183         return 0x2000000021cll + 0x100000000ll * ((a) & 0x3);
9184     __bdk_csr_fatal("PCIERCX_CFG134", 1, a, 0, 0, 0);
9185 }
9186 
9187 #define typedef_BDK_PCIERCX_CFG134(a) bdk_pciercx_cfg134_t
9188 #define bustype_BDK_PCIERCX_CFG134(a) BDK_CSR_TYPE_PCICONFIGRC
9189 #define basename_BDK_PCIERCX_CFG134(a) "PCIERCX_CFG134"
9190 #define busnum_BDK_PCIERCX_CFG134(a) (a)
9191 #define arguments_BDK_PCIERCX_CFG134(a) (a),-1,-1,-1
9192 
9193 /**
9194  * Register (PCICONFIGRC) pcierc#_cfg135
9195  *
9196  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Value H3) Register
9197  * This register contains the one hundred thirty-ssixth 32-bits of PCIe type 0 configuration space.
9198  */
9199 union bdk_pciercx_cfg135
9200 {
9201     uint32_t u;
9202     struct bdk_pciercx_cfg135_s
9203     {
9204 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9205         uint32_t einj6_com_val_h3      : 32; /**< [ 31:  0](R/W) Packet compare value fourth DWORD.
9206                                                                  Specifies the value to compare against TX the TLP header
9207                                                                  DWORD3 bits specified in the PCIERC()_CFG131[EINJ_COM_PT_H4]. */
9208 #else /* Word 0 - Little Endian */
9209         uint32_t einj6_com_val_h3      : 32; /**< [ 31:  0](R/W) Packet compare value fourth DWORD.
9210                                                                  Specifies the value to compare against TX the TLP header
9211                                                                  DWORD3 bits specified in the PCIERC()_CFG131[EINJ_COM_PT_H4]. */
9212 #endif /* Word 0 - End */
9213     } s;
9214     /* struct bdk_pciercx_cfg135_s cn; */
9215 };
9216 typedef union bdk_pciercx_cfg135 bdk_pciercx_cfg135_t;
9217 
9218 static inline uint64_t BDK_PCIERCX_CFG135(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG135(unsigned long a)9219 static inline uint64_t BDK_PCIERCX_CFG135(unsigned long a)
9220 {
9221     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9222         return 0x20000000220ll + 0x100000000ll * ((a) & 0x3);
9223     __bdk_csr_fatal("PCIERCX_CFG135", 1, a, 0, 0, 0);
9224 }
9225 
9226 #define typedef_BDK_PCIERCX_CFG135(a) bdk_pciercx_cfg135_t
9227 #define bustype_BDK_PCIERCX_CFG135(a) BDK_CSR_TYPE_PCICONFIGRC
9228 #define basename_BDK_PCIERCX_CFG135(a) "PCIERCX_CFG135"
9229 #define busnum_BDK_PCIERCX_CFG135(a) (a)
9230 #define arguments_BDK_PCIERCX_CFG135(a) (a),-1,-1,-1
9231 
9232 /**
9233  * Register (PCICONFIGRC) pcierc#_cfg136
9234  *
9235  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Point H0) Register
9236  * This register contains the one hundred thirty-seventh 32-bits of PCIe type 0 configuration space.
9237  */
9238 union bdk_pciercx_cfg136
9239 {
9240     uint32_t u;
9241     struct bdk_pciercx_cfg136_s
9242     {
9243 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9244         uint32_t einj6_chg_pt_h0       : 32; /**< [ 31:  0](R/W) Packet change point first DWORD.
9245                                                                  Specifies which TX TLP header DWORD0 bits to replace
9246                                                                  with the corresponding bits in PCIERC()_CFG140[EINJ6_CHG_VAL_H0]. */
9247 #else /* Word 0 - Little Endian */
9248         uint32_t einj6_chg_pt_h0       : 32; /**< [ 31:  0](R/W) Packet change point first DWORD.
9249                                                                  Specifies which TX TLP header DWORD0 bits to replace
9250                                                                  with the corresponding bits in PCIERC()_CFG140[EINJ6_CHG_VAL_H0]. */
9251 #endif /* Word 0 - End */
9252     } s;
9253     /* struct bdk_pciercx_cfg136_s cn; */
9254 };
9255 typedef union bdk_pciercx_cfg136 bdk_pciercx_cfg136_t;
9256 
9257 static inline uint64_t BDK_PCIERCX_CFG136(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG136(unsigned long a)9258 static inline uint64_t BDK_PCIERCX_CFG136(unsigned long a)
9259 {
9260     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9261         return 0x20000000224ll + 0x100000000ll * ((a) & 0x3);
9262     __bdk_csr_fatal("PCIERCX_CFG136", 1, a, 0, 0, 0);
9263 }
9264 
9265 #define typedef_BDK_PCIERCX_CFG136(a) bdk_pciercx_cfg136_t
9266 #define bustype_BDK_PCIERCX_CFG136(a) BDK_CSR_TYPE_PCICONFIGRC
9267 #define basename_BDK_PCIERCX_CFG136(a) "PCIERCX_CFG136"
9268 #define busnum_BDK_PCIERCX_CFG136(a) (a)
9269 #define arguments_BDK_PCIERCX_CFG136(a) (a),-1,-1,-1
9270 
9271 /**
9272  * Register (PCICONFIGRC) pcierc#_cfg137
9273  *
9274  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Point H1) Register
9275  * This register contains the one hundred thirty-eighth 32-bits of PCIe type 0 configuration space.
9276  */
9277 union bdk_pciercx_cfg137
9278 {
9279     uint32_t u;
9280     struct bdk_pciercx_cfg137_s
9281     {
9282 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9283         uint32_t einj6_chg_pt_h1       : 32; /**< [ 31:  0](R/W) Packet change point second DWORD.
9284                                                                  Specifies which TX TLP header DWORD0 bits to replace
9285                                                                  with the corresponding bits in PCIERC()_CFG141[EINJ6_CHG_VAL_H1]. */
9286 #else /* Word 0 - Little Endian */
9287         uint32_t einj6_chg_pt_h1       : 32; /**< [ 31:  0](R/W) Packet change point second DWORD.
9288                                                                  Specifies which TX TLP header DWORD0 bits to replace
9289                                                                  with the corresponding bits in PCIERC()_CFG141[EINJ6_CHG_VAL_H1]. */
9290 #endif /* Word 0 - End */
9291     } s;
9292     /* struct bdk_pciercx_cfg137_s cn; */
9293 };
9294 typedef union bdk_pciercx_cfg137 bdk_pciercx_cfg137_t;
9295 
9296 static inline uint64_t BDK_PCIERCX_CFG137(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG137(unsigned long a)9297 static inline uint64_t BDK_PCIERCX_CFG137(unsigned long a)
9298 {
9299     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9300         return 0x20000000228ll + 0x100000000ll * ((a) & 0x3);
9301     __bdk_csr_fatal("PCIERCX_CFG137", 1, a, 0, 0, 0);
9302 }
9303 
9304 #define typedef_BDK_PCIERCX_CFG137(a) bdk_pciercx_cfg137_t
9305 #define bustype_BDK_PCIERCX_CFG137(a) BDK_CSR_TYPE_PCICONFIGRC
9306 #define basename_BDK_PCIERCX_CFG137(a) "PCIERCX_CFG137"
9307 #define busnum_BDK_PCIERCX_CFG137(a) (a)
9308 #define arguments_BDK_PCIERCX_CFG137(a) (a),-1,-1,-1
9309 
9310 /**
9311  * Register (PCICONFIGRC) pcierc#_cfg138
9312  *
9313  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Point H2) Register
9314  * This register contains the one hundred thirty-ninth 32-bits of PCIe type 0 configuration space.
9315  */
9316 union bdk_pciercx_cfg138
9317 {
9318     uint32_t u;
9319     struct bdk_pciercx_cfg138_s
9320     {
9321 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9322         uint32_t einj6_chg_pt_h2       : 32; /**< [ 31:  0](R/W) Packet change point third DWORD.
9323                                                                  Specifies which TX TLP header DWORD2 bits to replace
9324                                                                  with the corresponding bits in PCIERC()_CFG142[EINJ6_CHG_VAL_H2]. */
9325 #else /* Word 0 - Little Endian */
9326         uint32_t einj6_chg_pt_h2       : 32; /**< [ 31:  0](R/W) Packet change point third DWORD.
9327                                                                  Specifies which TX TLP header DWORD2 bits to replace
9328                                                                  with the corresponding bits in PCIERC()_CFG142[EINJ6_CHG_VAL_H2]. */
9329 #endif /* Word 0 - End */
9330     } s;
9331     /* struct bdk_pciercx_cfg138_s cn; */
9332 };
9333 typedef union bdk_pciercx_cfg138 bdk_pciercx_cfg138_t;
9334 
9335 static inline uint64_t BDK_PCIERCX_CFG138(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG138(unsigned long a)9336 static inline uint64_t BDK_PCIERCX_CFG138(unsigned long a)
9337 {
9338     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9339         return 0x2000000022cll + 0x100000000ll * ((a) & 0x3);
9340     __bdk_csr_fatal("PCIERCX_CFG138", 1, a, 0, 0, 0);
9341 }
9342 
9343 #define typedef_BDK_PCIERCX_CFG138(a) bdk_pciercx_cfg138_t
9344 #define bustype_BDK_PCIERCX_CFG138(a) BDK_CSR_TYPE_PCICONFIGRC
9345 #define basename_BDK_PCIERCX_CFG138(a) "PCIERCX_CFG138"
9346 #define busnum_BDK_PCIERCX_CFG138(a) (a)
9347 #define arguments_BDK_PCIERCX_CFG138(a) (a),-1,-1,-1
9348 
9349 /**
9350  * Register (PCICONFIGRC) pcierc#_cfg139
9351  *
9352  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Point H3) Register
9353  * This register contains the one hundred fortieth 32-bits of PCIe type 0 configuration space.
9354  */
9355 union bdk_pciercx_cfg139
9356 {
9357     uint32_t u;
9358     struct bdk_pciercx_cfg139_s
9359     {
9360 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9361         uint32_t einj6_chg_pt_h3       : 32; /**< [ 31:  0](R/W) Packet change point first DWORD.
9362                                                                  Specifies which TX TLP header DWORD3 bits to replace
9363                                                                  with the corresponding bits in PCIERC()_CFG143[EINJ6_CHG_VAL_H3]. */
9364 #else /* Word 0 - Little Endian */
9365         uint32_t einj6_chg_pt_h3       : 32; /**< [ 31:  0](R/W) Packet change point first DWORD.
9366                                                                  Specifies which TX TLP header DWORD3 bits to replace
9367                                                                  with the corresponding bits in PCIERC()_CFG143[EINJ6_CHG_VAL_H3]. */
9368 #endif /* Word 0 - End */
9369     } s;
9370     /* struct bdk_pciercx_cfg139_s cn; */
9371 };
9372 typedef union bdk_pciercx_cfg139 bdk_pciercx_cfg139_t;
9373 
9374 static inline uint64_t BDK_PCIERCX_CFG139(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG139(unsigned long a)9375 static inline uint64_t BDK_PCIERCX_CFG139(unsigned long a)
9376 {
9377     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9378         return 0x20000000230ll + 0x100000000ll * ((a) & 0x3);
9379     __bdk_csr_fatal("PCIERCX_CFG139", 1, a, 0, 0, 0);
9380 }
9381 
9382 #define typedef_BDK_PCIERCX_CFG139(a) bdk_pciercx_cfg139_t
9383 #define bustype_BDK_PCIERCX_CFG139(a) BDK_CSR_TYPE_PCICONFIGRC
9384 #define basename_BDK_PCIERCX_CFG139(a) "PCIERCX_CFG139"
9385 #define busnum_BDK_PCIERCX_CFG139(a) (a)
9386 #define arguments_BDK_PCIERCX_CFG139(a) (a),-1,-1,-1
9387 
9388 /**
9389  * Register (PCICONFIGRC) pcierc#_cfg140
9390  *
9391  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Value H0) Register
9392  * This register contains the one hundred forty-first 32-bits of PCIe type 0 configuration space.
9393  */
9394 union bdk_pciercx_cfg140
9395 {
9396     uint32_t u;
9397     struct bdk_pciercx_cfg140_s
9398     {
9399 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9400         uint32_t einj6_chg_val_h0      : 32; /**< [ 31:  0](R/W) Packet change value first DWORD.
9401                                                                  Specifies replacement values for the TX TLP header
9402                                                                  DWORD0 bits defined in the PCIERC()_CFG136[EINJ6_CHG_PT_H0].
9403                                                                  Only applies when PCIERC()_CFG144[EINJ6_INV_CNTL] is not set. */
9404 #else /* Word 0 - Little Endian */
9405         uint32_t einj6_chg_val_h0      : 32; /**< [ 31:  0](R/W) Packet change value first DWORD.
9406                                                                  Specifies replacement values for the TX TLP header
9407                                                                  DWORD0 bits defined in the PCIERC()_CFG136[EINJ6_CHG_PT_H0].
9408                                                                  Only applies when PCIERC()_CFG144[EINJ6_INV_CNTL] is not set. */
9409 #endif /* Word 0 - End */
9410     } s;
9411     /* struct bdk_pciercx_cfg140_s cn; */
9412 };
9413 typedef union bdk_pciercx_cfg140 bdk_pciercx_cfg140_t;
9414 
9415 static inline uint64_t BDK_PCIERCX_CFG140(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG140(unsigned long a)9416 static inline uint64_t BDK_PCIERCX_CFG140(unsigned long a)
9417 {
9418     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9419         return 0x20000000234ll + 0x100000000ll * ((a) & 0x3);
9420     __bdk_csr_fatal("PCIERCX_CFG140", 1, a, 0, 0, 0);
9421 }
9422 
9423 #define typedef_BDK_PCIERCX_CFG140(a) bdk_pciercx_cfg140_t
9424 #define bustype_BDK_PCIERCX_CFG140(a) BDK_CSR_TYPE_PCICONFIGRC
9425 #define basename_BDK_PCIERCX_CFG140(a) "PCIERCX_CFG140"
9426 #define busnum_BDK_PCIERCX_CFG140(a) (a)
9427 #define arguments_BDK_PCIERCX_CFG140(a) (a),-1,-1,-1
9428 
9429 /**
9430  * Register (PCICONFIGRC) pcierc#_cfg141
9431  *
9432  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Value H1) Register
9433  * This register contains the one hundred forty-second 32-bits of PCIe type 0 configuration space.
9434  */
9435 union bdk_pciercx_cfg141
9436 {
9437     uint32_t u;
9438     struct bdk_pciercx_cfg141_s
9439     {
9440 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9441         uint32_t einj6_chg_val_h1      : 32; /**< [ 31:  0](R/W) Packet change value second DWORD.
9442                                                                  Specifies replacement values for the TX TLP header
9443                                                                  DWORD1 bits defined in the PCIERC()_CFG137[EINJ6_CHG_PT_H1].
9444                                                                  Only applies when PCIERC()_CFG144[EINJ6_INV_CNTL] is not set. */
9445 #else /* Word 0 - Little Endian */
9446         uint32_t einj6_chg_val_h1      : 32; /**< [ 31:  0](R/W) Packet change value second DWORD.
9447                                                                  Specifies replacement values for the TX TLP header
9448                                                                  DWORD1 bits defined in the PCIERC()_CFG137[EINJ6_CHG_PT_H1].
9449                                                                  Only applies when PCIERC()_CFG144[EINJ6_INV_CNTL] is not set. */
9450 #endif /* Word 0 - End */
9451     } s;
9452     /* struct bdk_pciercx_cfg141_s cn; */
9453 };
9454 typedef union bdk_pciercx_cfg141 bdk_pciercx_cfg141_t;
9455 
9456 static inline uint64_t BDK_PCIERCX_CFG141(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG141(unsigned long a)9457 static inline uint64_t BDK_PCIERCX_CFG141(unsigned long a)
9458 {
9459     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9460         return 0x20000000238ll + 0x100000000ll * ((a) & 0x3);
9461     __bdk_csr_fatal("PCIERCX_CFG141", 1, a, 0, 0, 0);
9462 }
9463 
9464 #define typedef_BDK_PCIERCX_CFG141(a) bdk_pciercx_cfg141_t
9465 #define bustype_BDK_PCIERCX_CFG141(a) BDK_CSR_TYPE_PCICONFIGRC
9466 #define basename_BDK_PCIERCX_CFG141(a) "PCIERCX_CFG141"
9467 #define busnum_BDK_PCIERCX_CFG141(a) (a)
9468 #define arguments_BDK_PCIERCX_CFG141(a) (a),-1,-1,-1
9469 
9470 /**
9471  * Register (PCICONFIGRC) pcierc#_cfg142
9472  *
9473  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Value H2) Register
9474  * This register contains the one hundred forty-third 32-bits of PCIe type 0 configuration space.
9475  */
9476 union bdk_pciercx_cfg142
9477 {
9478     uint32_t u;
9479     struct bdk_pciercx_cfg142_s
9480     {
9481 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9482         uint32_t einj6_chg_val_h2      : 32; /**< [ 31:  0](R/W) Packet change value third DWORD.
9483                                                                  Specifies replacement values for the TX TLP header
9484                                                                  DWORD2 bits defined in the PCIERC()_CFG138[EINJ6_CHG_PT_H2].
9485                                                                  Only applies when PCIERC()_CFG144[EINJ6_INV_CNTL] is not set." */
9486 #else /* Word 0 - Little Endian */
9487         uint32_t einj6_chg_val_h2      : 32; /**< [ 31:  0](R/W) Packet change value third DWORD.
9488                                                                  Specifies replacement values for the TX TLP header
9489                                                                  DWORD2 bits defined in the PCIERC()_CFG138[EINJ6_CHG_PT_H2].
9490                                                                  Only applies when PCIERC()_CFG144[EINJ6_INV_CNTL] is not set." */
9491 #endif /* Word 0 - End */
9492     } s;
9493     /* struct bdk_pciercx_cfg142_s cn; */
9494 };
9495 typedef union bdk_pciercx_cfg142 bdk_pciercx_cfg142_t;
9496 
9497 static inline uint64_t BDK_PCIERCX_CFG142(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG142(unsigned long a)9498 static inline uint64_t BDK_PCIERCX_CFG142(unsigned long a)
9499 {
9500     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9501         return 0x2000000023cll + 0x100000000ll * ((a) & 0x3);
9502     __bdk_csr_fatal("PCIERCX_CFG142", 1, a, 0, 0, 0);
9503 }
9504 
9505 #define typedef_BDK_PCIERCX_CFG142(a) bdk_pciercx_cfg142_t
9506 #define bustype_BDK_PCIERCX_CFG142(a) BDK_CSR_TYPE_PCICONFIGRC
9507 #define basename_BDK_PCIERCX_CFG142(a) "PCIERCX_CFG142"
9508 #define busnum_BDK_PCIERCX_CFG142(a) (a)
9509 #define arguments_BDK_PCIERCX_CFG142(a) (a),-1,-1,-1
9510 
9511 /**
9512  * Register (PCICONFIGRC) pcierc#_cfg143
9513  *
9514  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Value H3) Register
9515  * This register contains the one hundred forty-forth 32-bits of PCIe type 0 configuration space.
9516  */
9517 union bdk_pciercx_cfg143
9518 {
9519     uint32_t u;
9520     struct bdk_pciercx_cfg143_s
9521     {
9522 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9523         uint32_t einj6_chg_val_h3      : 32; /**< [ 31:  0](R/W) Packet change value fourth DWORD.
9524                                                                  Specifies replacement values for the TX TLP header
9525                                                                  DWORD3 bits defined in the PCIERC()_CFG139[EINJ6_CHG_PT_H3].
9526                                                                  Only applies when PCIERC()_CFG144[EINJ6_INV_CNTL] is not set. */
9527 #else /* Word 0 - Little Endian */
9528         uint32_t einj6_chg_val_h3      : 32; /**< [ 31:  0](R/W) Packet change value fourth DWORD.
9529                                                                  Specifies replacement values for the TX TLP header
9530                                                                  DWORD3 bits defined in the PCIERC()_CFG139[EINJ6_CHG_PT_H3].
9531                                                                  Only applies when PCIERC()_CFG144[EINJ6_INV_CNTL] is not set. */
9532 #endif /* Word 0 - End */
9533     } s;
9534     /* struct bdk_pciercx_cfg143_s cn; */
9535 };
9536 typedef union bdk_pciercx_cfg143 bdk_pciercx_cfg143_t;
9537 
9538 static inline uint64_t BDK_PCIERCX_CFG143(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG143(unsigned long a)9539 static inline uint64_t BDK_PCIERCX_CFG143(unsigned long a)
9540 {
9541     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9542         return 0x20000000240ll + 0x100000000ll * ((a) & 0x3);
9543     __bdk_csr_fatal("PCIERCX_CFG143", 1, a, 0, 0, 0);
9544 }
9545 
9546 #define typedef_BDK_PCIERCX_CFG143(a) bdk_pciercx_cfg143_t
9547 #define bustype_BDK_PCIERCX_CFG143(a) BDK_CSR_TYPE_PCICONFIGRC
9548 #define basename_BDK_PCIERCX_CFG143(a) "PCIERCX_CFG143"
9549 #define busnum_BDK_PCIERCX_CFG143(a) (a)
9550 #define arguments_BDK_PCIERCX_CFG143(a) (a),-1,-1,-1
9551 
9552 /**
9553  * Register (PCICONFIGRC) pcierc#_cfg144
9554  *
9555  * PCIe RC Vendor RAS DES Error Injection Control 6 (Packet Error) Register
9556  * This register contains the one hundred forty-fifth 32-bits of PCIe type 0 configuration space.
9557  */
9558 union bdk_pciercx_cfg144
9559 {
9560     uint32_t u;
9561     struct bdk_pciercx_cfg144_s
9562     {
9563 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9564         uint32_t reserved_12_31        : 20;
9565         uint32_t einj6_pkt_typ         : 3;  /**< [ 11:  9](R/W) Packet type.  Selects the TLP packets to inject errors into.
9566 
9567                                                                  0x0 = TLP Header.
9568                                                                  0x1 = TLP Prefix 1st 4-DWORDs.
9569                                                                  0x2 = TLP Prefix 2nd 4-DWORDs.
9570                                                                  0x3 - 0x7 = Reserved. */
9571         uint32_t einj6_inv_cntrl       : 1;  /**< [  8:  8](R/W) Inverted error injection control.
9572 
9573                                                                  0x0 = EINJ6_CHG_VAL_H[0/1/2/3] is used to replace bits specified by
9574                                                                  EINJ6_CHG_PT_H[0/1/2/3].
9575                                                                  0x1 = EINJ6_CHG_VAL_H[0/1/2/3] is ignored and inverts bits specified by
9576                                                                  EINJ6_CHG_PT_H[0/1/2/3]. */
9577         uint32_t einj6_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
9578                                                                  This register is decremented when errors are inserted.
9579 
9580                                                                  If the counter value is 0x1 and error is inserted,
9581                                                                  PCIERC()_CFG122[EINJ6_EN] returns zero.
9582 
9583                                                                  If the counter value is 0x0 and PCIERC()_CFG122[EINJ6_EN] is set,
9584                                                                  errors are inserted until PCIERC()_CFG122[EINJ6_EN] is cleared. */
9585 #else /* Word 0 - Little Endian */
9586         uint32_t einj6_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
9587                                                                  This register is decremented when errors are inserted.
9588 
9589                                                                  If the counter value is 0x1 and error is inserted,
9590                                                                  PCIERC()_CFG122[EINJ6_EN] returns zero.
9591 
9592                                                                  If the counter value is 0x0 and PCIERC()_CFG122[EINJ6_EN] is set,
9593                                                                  errors are inserted until PCIERC()_CFG122[EINJ6_EN] is cleared. */
9594         uint32_t einj6_inv_cntrl       : 1;  /**< [  8:  8](R/W) Inverted error injection control.
9595 
9596                                                                  0x0 = EINJ6_CHG_VAL_H[0/1/2/3] is used to replace bits specified by
9597                                                                  EINJ6_CHG_PT_H[0/1/2/3].
9598                                                                  0x1 = EINJ6_CHG_VAL_H[0/1/2/3] is ignored and inverts bits specified by
9599                                                                  EINJ6_CHG_PT_H[0/1/2/3]. */
9600         uint32_t einj6_pkt_typ         : 3;  /**< [ 11:  9](R/W) Packet type.  Selects the TLP packets to inject errors into.
9601 
9602                                                                  0x0 = TLP Header.
9603                                                                  0x1 = TLP Prefix 1st 4-DWORDs.
9604                                                                  0x2 = TLP Prefix 2nd 4-DWORDs.
9605                                                                  0x3 - 0x7 = Reserved. */
9606         uint32_t reserved_12_31        : 20;
9607 #endif /* Word 0 - End */
9608     } s;
9609     /* struct bdk_pciercx_cfg144_s cn; */
9610 };
9611 typedef union bdk_pciercx_cfg144 bdk_pciercx_cfg144_t;
9612 
9613 static inline uint64_t BDK_PCIERCX_CFG144(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG144(unsigned long a)9614 static inline uint64_t BDK_PCIERCX_CFG144(unsigned long a)
9615 {
9616     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9617         return 0x20000000244ll + 0x100000000ll * ((a) & 0x3);
9618     __bdk_csr_fatal("PCIERCX_CFG144", 1, a, 0, 0, 0);
9619 }
9620 
9621 #define typedef_BDK_PCIERCX_CFG144(a) bdk_pciercx_cfg144_t
9622 #define bustype_BDK_PCIERCX_CFG144(a) BDK_CSR_TYPE_PCICONFIGRC
9623 #define basename_BDK_PCIERCX_CFG144(a) "PCIERCX_CFG144"
9624 #define busnum_BDK_PCIERCX_CFG144(a) (a)
9625 #define arguments_BDK_PCIERCX_CFG144(a) (a),-1,-1,-1
9626 
9627 /**
9628  * Register (PCICONFIGRC) pcierc#_cfg149
9629  *
9630  * PCIe RC Vendor RAS DES Silicon Debug Control 1 Register
9631  * This register contains the one hundred fiftyith 32-bits of PCIe type 0 configuration space.
9632  */
9633 union bdk_pciercx_cfg149
9634 {
9635     uint32_t u;
9636     struct bdk_pciercx_cfg149_s
9637     {
9638 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9639         uint32_t reserved_24_31        : 8;
9640         uint32_t lp_intv               : 2;  /**< [ 23: 22](R/W) Low power entry interval time.
9641                                                                  Interval time that the core starts monitoring RXELECIDLE
9642                                                                  signal after L0s/L1/L2 entry. You should set the value
9643                                                                  according to the latency from receiving EIOS to,
9644                                                                  RXELECIDLE assertion at the PHY
9645 
9646                                                                  0x0 = 40ns.
9647                                                                  0x1 = 160ns.
9648                                                                  0x2 = 320ns.
9649                                                                  0x3 - 640ns. */
9650         uint32_t tx_eios_num           : 2;  /**< [ 21: 20](R/W) Number of TX EIOS.
9651                                                                  This register sets the number of transmit EIOS for L0s/L1
9652                                                                  entry and disable/loopback/hot-reset exit. The core selects
9653                                                                  the greater value between this register and the value defined
9654                                                                  by the PCI-SIG specification.
9655 
9656                                                                  Gen1 or Gen3
9657                                                                  0x0 = 1.
9658                                                                  0x1 = 4.
9659                                                                  0x2 = 8.
9660                                                                  0x3 - 16.
9661 
9662                                                                  Gen2
9663                                                                  0x0 = 2.
9664                                                                  0x1 = 8.
9665                                                                  0x2 = 16.
9666                                                                  0x3 - 32. */
9667         uint32_t reserved_17_19        : 3;
9668         uint32_t force_detect_lane_en  : 1;  /**< [ 16: 16](R/W) Force detect lane enable.
9669                                                                  When this bit is set, the core ignores receiver detection from
9670                                                                  PHY during LTSSM detect state and uses
9671                                                                  [FORCE_DETECT_LANE]. */
9672         uint32_t force_detect_lane     : 16; /**< [ 15:  0](R/W) Force detect lane.
9673                                                                  When set, the core
9674                                                                  ignores receiver detection from PHY during LTSSM detect
9675                                                                  state and uses this value instead.
9676                                                                  0x0 = Lane0.
9677                                                                  0x1 = Lane1.
9678                                                                  0x2 = Lane2.
9679 
9680                                                                  0x7 = Lane7. */
9681 #else /* Word 0 - Little Endian */
9682         uint32_t force_detect_lane     : 16; /**< [ 15:  0](R/W) Force detect lane.
9683                                                                  When set, the core
9684                                                                  ignores receiver detection from PHY during LTSSM detect
9685                                                                  state and uses this value instead.
9686                                                                  0x0 = Lane0.
9687                                                                  0x1 = Lane1.
9688                                                                  0x2 = Lane2.
9689 
9690                                                                  0x7 = Lane7. */
9691         uint32_t force_detect_lane_en  : 1;  /**< [ 16: 16](R/W) Force detect lane enable.
9692                                                                  When this bit is set, the core ignores receiver detection from
9693                                                                  PHY during LTSSM detect state and uses
9694                                                                  [FORCE_DETECT_LANE]. */
9695         uint32_t reserved_17_19        : 3;
9696         uint32_t tx_eios_num           : 2;  /**< [ 21: 20](R/W) Number of TX EIOS.
9697                                                                  This register sets the number of transmit EIOS for L0s/L1
9698                                                                  entry and disable/loopback/hot-reset exit. The core selects
9699                                                                  the greater value between this register and the value defined
9700                                                                  by the PCI-SIG specification.
9701 
9702                                                                  Gen1 or Gen3
9703                                                                  0x0 = 1.
9704                                                                  0x1 = 4.
9705                                                                  0x2 = 8.
9706                                                                  0x3 - 16.
9707 
9708                                                                  Gen2
9709                                                                  0x0 = 2.
9710                                                                  0x1 = 8.
9711                                                                  0x2 = 16.
9712                                                                  0x3 - 32. */
9713         uint32_t lp_intv               : 2;  /**< [ 23: 22](R/W) Low power entry interval time.
9714                                                                  Interval time that the core starts monitoring RXELECIDLE
9715                                                                  signal after L0s/L1/L2 entry. You should set the value
9716                                                                  according to the latency from receiving EIOS to,
9717                                                                  RXELECIDLE assertion at the PHY
9718 
9719                                                                  0x0 = 40ns.
9720                                                                  0x1 = 160ns.
9721                                                                  0x2 = 320ns.
9722                                                                  0x3 - 640ns. */
9723         uint32_t reserved_24_31        : 8;
9724 #endif /* Word 0 - End */
9725     } s;
9726     /* struct bdk_pciercx_cfg149_s cn; */
9727 };
9728 typedef union bdk_pciercx_cfg149 bdk_pciercx_cfg149_t;
9729 
9730 static inline uint64_t BDK_PCIERCX_CFG149(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG149(unsigned long a)9731 static inline uint64_t BDK_PCIERCX_CFG149(unsigned long a)
9732 {
9733     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9734         return 0x20000000258ll + 0x100000000ll * ((a) & 0x3);
9735     __bdk_csr_fatal("PCIERCX_CFG149", 1, a, 0, 0, 0);
9736 }
9737 
9738 #define typedef_BDK_PCIERCX_CFG149(a) bdk_pciercx_cfg149_t
9739 #define bustype_BDK_PCIERCX_CFG149(a) BDK_CSR_TYPE_PCICONFIGRC
9740 #define basename_BDK_PCIERCX_CFG149(a) "PCIERCX_CFG149"
9741 #define busnum_BDK_PCIERCX_CFG149(a) (a)
9742 #define arguments_BDK_PCIERCX_CFG149(a) (a),-1,-1,-1
9743 
9744 /**
9745  * Register (PCICONFIGRC) pcierc#_cfg150
9746  *
9747  * PCIe RC Vendor RAS DES Silicon Debug Control 2 Register
9748  * This register contains the one hundred fifty-first 32-bits of PCIe type 0 configuration space.
9749  */
9750 union bdk_pciercx_cfg150
9751 {
9752     uint32_t u;
9753     struct bdk_pciercx_cfg150_s
9754     {
9755 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9756         uint32_t reserved_17_31        : 15;
9757         uint32_t fr_err_rcvy_dis       : 1;  /**< [ 16: 16](R/W) Framing error recovery disable.
9758                                                                  This bit disables a transition to recovery state when a framing
9759                                                                  error has occurred. */
9760         uint32_t reserved_11_15        : 5;
9761         uint32_t dir_lpbslv_to_exit    : 1;  /**< [ 10: 10](R/W) Direct loopback slave to exit.
9762                                                                  When set and the LTSSM is in loopback slave active state,
9763                                                                  the LTSSM transitions to the loopback slave exit state. */
9764         uint32_t dir_polcmp_to_det     : 1;  /**< [  9:  9](R/W) Direct Polling.Compliance to detect.
9765                                                                  When this bit is set and the LTSSM is in polling compliance
9766                                                                  state, the LTSSM transitions to detect state. */
9767         uint32_t dir_recidle_config    : 1;  /**< [  8:  8](R/W) Direct Recovery.Idle to configuration.
9768                                                                  When this bit is set and the LTSSM is in recovery idle state,
9769                                                                  the LTSSM transitions to configuration state. */
9770         uint32_t reserved_3_7          : 5;
9771         uint32_t noack_force_lnkdn     : 1;  /**< [  2:  2](R/W) Force link down.
9772                                                                  When this bit is set and the core detects REPLY_NUM rolling
9773                                                                  over 4 times, the LTSSM transitions to detect state. */
9774         uint32_t rcry_req              : 1;  /**< [  1:  1](WO) Recovery request.
9775                                                                  When this bit is set in L0 or L0s, the LTSSM starts
9776                                                                  transitioning to recovery state. This request does not cause
9777                                                                  a speed change or re-equalization. This bit always reads
9778                                                                  a zero. */
9779         uint32_t hold_ltssm            : 1;  /**< [  0:  0](R/W) Hold and release LTSSM.
9780                                                                  For as long as this is set, the core stays in the current
9781                                                                  LTSSM. */
9782 #else /* Word 0 - Little Endian */
9783         uint32_t hold_ltssm            : 1;  /**< [  0:  0](R/W) Hold and release LTSSM.
9784                                                                  For as long as this is set, the core stays in the current
9785                                                                  LTSSM. */
9786         uint32_t rcry_req              : 1;  /**< [  1:  1](WO) Recovery request.
9787                                                                  When this bit is set in L0 or L0s, the LTSSM starts
9788                                                                  transitioning to recovery state. This request does not cause
9789                                                                  a speed change or re-equalization. This bit always reads
9790                                                                  a zero. */
9791         uint32_t noack_force_lnkdn     : 1;  /**< [  2:  2](R/W) Force link down.
9792                                                                  When this bit is set and the core detects REPLY_NUM rolling
9793                                                                  over 4 times, the LTSSM transitions to detect state. */
9794         uint32_t reserved_3_7          : 5;
9795         uint32_t dir_recidle_config    : 1;  /**< [  8:  8](R/W) Direct Recovery.Idle to configuration.
9796                                                                  When this bit is set and the LTSSM is in recovery idle state,
9797                                                                  the LTSSM transitions to configuration state. */
9798         uint32_t dir_polcmp_to_det     : 1;  /**< [  9:  9](R/W) Direct Polling.Compliance to detect.
9799                                                                  When this bit is set and the LTSSM is in polling compliance
9800                                                                  state, the LTSSM transitions to detect state. */
9801         uint32_t dir_lpbslv_to_exit    : 1;  /**< [ 10: 10](R/W) Direct loopback slave to exit.
9802                                                                  When set and the LTSSM is in loopback slave active state,
9803                                                                  the LTSSM transitions to the loopback slave exit state. */
9804         uint32_t reserved_11_15        : 5;
9805         uint32_t fr_err_rcvy_dis       : 1;  /**< [ 16: 16](R/W) Framing error recovery disable.
9806                                                                  This bit disables a transition to recovery state when a framing
9807                                                                  error has occurred. */
9808         uint32_t reserved_17_31        : 15;
9809 #endif /* Word 0 - End */
9810     } s;
9811     /* struct bdk_pciercx_cfg150_s cn; */
9812 };
9813 typedef union bdk_pciercx_cfg150 bdk_pciercx_cfg150_t;
9814 
9815 static inline uint64_t BDK_PCIERCX_CFG150(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG150(unsigned long a)9816 static inline uint64_t BDK_PCIERCX_CFG150(unsigned long a)
9817 {
9818     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9819         return 0x2000000025cll + 0x100000000ll * ((a) & 0x3);
9820     __bdk_csr_fatal("PCIERCX_CFG150", 1, a, 0, 0, 0);
9821 }
9822 
9823 #define typedef_BDK_PCIERCX_CFG150(a) bdk_pciercx_cfg150_t
9824 #define bustype_BDK_PCIERCX_CFG150(a) BDK_CSR_TYPE_PCICONFIGRC
9825 #define basename_BDK_PCIERCX_CFG150(a) "PCIERCX_CFG150"
9826 #define busnum_BDK_PCIERCX_CFG150(a) (a)
9827 #define arguments_BDK_PCIERCX_CFG150(a) (a),-1,-1,-1
9828 
9829 /**
9830  * Register (PCICONFIGRC) pcierc#_cfg153
9831  *
9832  * PCIe RC Vendor RAS DES Silicon Debug Status L1Lane Register
9833  * This register contains the one hundred fifty-forth 32-bits of PCIe type 0 configuration space.
9834  */
9835 union bdk_pciercx_cfg153
9836 {
9837     uint32_t u;
9838     struct bdk_pciercx_cfg153_s
9839     {
9840 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9841         uint32_t deskew_ptr            : 8;  /**< [ 31: 24](RO/H) Deskew pointer.
9842                                                                  Indicates deskew pointer of internal deskew buffer of
9843                                                                  selected lane number (LANE_SELECT). */
9844         uint32_t reserved_21_23        : 3;
9845         uint32_t pipe_txelecidle       : 1;  /**< [ 20: 20](RO/H) PIPE:TxElecIdle.
9846                                                                  Indicates PIPE TXELECIDLE signal of selected lane
9847                                                                  number ([LANE_SELECT]). */
9848         uint32_t pipe_rxelecidle       : 1;  /**< [ 19: 19](RO/H) PIPE:RxElecIdle.
9849                                                                  Indicates PIPE RXELECIDLE signal of selected lane
9850                                                                  number ([LANE_SELECT]). */
9851         uint32_t pipe_rxvalid          : 1;  /**< [ 18: 18](RO/H) PIPE:RxValid.
9852                                                                  Indicates PIPE RXVALID signal of selected lane
9853                                                                  number ([LANE_SELECT]). */
9854         uint32_t pipe_det_lane         : 1;  /**< [ 17: 17](RO/H) PIPE:Detect Lane.
9855                                                                  Indicates whether PHY indicates receiver detection or not on
9856                                                                  selected lane number ([LANE_SELECT]). */
9857         uint32_t pipe_rxpol            : 1;  /**< [ 16: 16](RO/H) PIPE:RxPolarity.
9858                                                                  Indicates PIPE RXPOLARITY signal of selected lane
9859                                                                  number ([LANE_SELECT]). */
9860         uint32_t reserved_4_15         : 12;
9861         uint32_t lane_select           : 4;  /**< [  3:  0](R/W) Lane select.
9862                                                                  Lane select register for silicon debug status register of
9863                                                                  Layer1-PerLane.
9864                                                                  0x0 = Lane0.
9865                                                                  0x1 = Lane1.
9866                                                                  0x2 = Lane2.
9867 
9868                                                                  0x7 = Lane7.
9869                                                                  0x8-0xF = Reserved. */
9870 #else /* Word 0 - Little Endian */
9871         uint32_t lane_select           : 4;  /**< [  3:  0](R/W) Lane select.
9872                                                                  Lane select register for silicon debug status register of
9873                                                                  Layer1-PerLane.
9874                                                                  0x0 = Lane0.
9875                                                                  0x1 = Lane1.
9876                                                                  0x2 = Lane2.
9877 
9878                                                                  0x7 = Lane7.
9879                                                                  0x8-0xF = Reserved. */
9880         uint32_t reserved_4_15         : 12;
9881         uint32_t pipe_rxpol            : 1;  /**< [ 16: 16](RO/H) PIPE:RxPolarity.
9882                                                                  Indicates PIPE RXPOLARITY signal of selected lane
9883                                                                  number ([LANE_SELECT]). */
9884         uint32_t pipe_det_lane         : 1;  /**< [ 17: 17](RO/H) PIPE:Detect Lane.
9885                                                                  Indicates whether PHY indicates receiver detection or not on
9886                                                                  selected lane number ([LANE_SELECT]). */
9887         uint32_t pipe_rxvalid          : 1;  /**< [ 18: 18](RO/H) PIPE:RxValid.
9888                                                                  Indicates PIPE RXVALID signal of selected lane
9889                                                                  number ([LANE_SELECT]). */
9890         uint32_t pipe_rxelecidle       : 1;  /**< [ 19: 19](RO/H) PIPE:RxElecIdle.
9891                                                                  Indicates PIPE RXELECIDLE signal of selected lane
9892                                                                  number ([LANE_SELECT]). */
9893         uint32_t pipe_txelecidle       : 1;  /**< [ 20: 20](RO/H) PIPE:TxElecIdle.
9894                                                                  Indicates PIPE TXELECIDLE signal of selected lane
9895                                                                  number ([LANE_SELECT]). */
9896         uint32_t reserved_21_23        : 3;
9897         uint32_t deskew_ptr            : 8;  /**< [ 31: 24](RO/H) Deskew pointer.
9898                                                                  Indicates deskew pointer of internal deskew buffer of
9899                                                                  selected lane number (LANE_SELECT). */
9900 #endif /* Word 0 - End */
9901     } s;
9902     /* struct bdk_pciercx_cfg153_s cn; */
9903 };
9904 typedef union bdk_pciercx_cfg153 bdk_pciercx_cfg153_t;
9905 
9906 static inline uint64_t BDK_PCIERCX_CFG153(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG153(unsigned long a)9907 static inline uint64_t BDK_PCIERCX_CFG153(unsigned long a)
9908 {
9909     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
9910         return 0x20000000268ll + 0x100000000ll * ((a) & 0x3);
9911     __bdk_csr_fatal("PCIERCX_CFG153", 1, a, 0, 0, 0);
9912 }
9913 
9914 #define typedef_BDK_PCIERCX_CFG153(a) bdk_pciercx_cfg153_t
9915 #define bustype_BDK_PCIERCX_CFG153(a) BDK_CSR_TYPE_PCICONFIGRC
9916 #define basename_BDK_PCIERCX_CFG153(a) "PCIERCX_CFG153"
9917 #define busnum_BDK_PCIERCX_CFG153(a) (a)
9918 #define arguments_BDK_PCIERCX_CFG153(a) (a),-1,-1,-1
9919 
9920 /**
9921  * Register (PCICONFIGRC) pcierc#_cfg154
9922  *
9923  * PCIe RC Vendor RAS DES Silicon Debug Status L1LTSSM Register
9924  * This register contains the one hundred fifty-fifth 32-bits of PCIe type 0 configuration space.
9925  */
9926 union bdk_pciercx_cfg154
9927 {
9928     uint32_t u;
9929     struct bdk_pciercx_cfg154_s
9930     {
9931 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
9932         uint32_t ltssm_var             : 16; /**< [ 31: 16](RO/H) LTSSM variable.
9933                                                                  Indicates internal LTSSM variables defined in the PCI
9934                                                                  Express base specification.
9935                                                                  0x0 = directed_speed change.
9936                                                                  0x1 = changed_speed_recovery.
9937                                                                  0x2 =  successful_speed_negotiation.
9938                                                                  0x3 =  upconfigure_capable; Set to 1 if both ports advertised
9939                                                                  the UpConfigure capability in the last Config.Complete.
9940                                                                  0x4 = select_deemphasis.
9941                                                                  0x5 = start_equalization_w_preset.
9942                                                                  0x6 = equalization_done_8GT_data_rate.
9943                                                                  0x7 = equalization_done_16GT_data_rate.
9944                                                                  0x8-0xF = idle_to_rlock_transitioned. */
9945         uint32_t lane_rev              : 1;  /**< [ 15: 15](RO/H) Lane reversal operation.
9946                                                                  Receiver detected lane reversal. */
9947         uint32_t reserved_11_14        : 4;
9948         uint32_t pipe_pwr_dwn          : 3;  /**< [ 10:  8](RO/H) PIPE:PowerDown.
9949                                                                  Indicates PIPE PowerDown signal. */
9950         uint32_t framing_err           : 1;  /**< [  7:  7](R/W1C) Framing error.
9951                                                                  Indicates framing error detection status. */
9952         uint32_t framing_err_ptr       : 7;  /**< [  6:  0](RO) First framing error pointer.
9953                                                                  Identifies the first framing error using the following
9954                                                                  encoding. The field contents are only valid value when
9955                                                                  FRAMING_ERR =1.
9956 
9957                                                                  Received unexpected framing token
9958                                                                  0x1 = When non-STP/SDP/IDL token was received and it
9959                                                                  was not in TLP/DLLP reception.
9960                                                                  0x02 = When current token was not a valid EDB token and
9961                                                                  previous token was an EDB. (128/256 bit core only).
9962                                                                  0x03 = When SDP token was received but not expected.
9963                                                                  0x04 = When STP token was received but not expected.
9964                                                                  0x05 = When EDS token was expected but not received or
9965                                                                  whenever an EDS token was received but not expected.
9966                                                                  0x06 = When a framing error was detected in the deskew
9967                                                                  block while a packet has been in progress in token_finder.
9968                                                                  Received Unexpected STP Token
9969                                                                  0x11 = When framing CRC in STP token did not match.
9970                                                                  0x12 = When framing parity in STP token did not match.
9971                                                                  0x13 = When framing TLP length in STP token was
9972                                                                  smaller than 5 DWORDs.
9973 
9974                                                                  Received unexpected block
9975                                                                  0x21 = When receiving an OS block following SDS in datastream state.n.
9976                                                                  0x22 = When data block followed by OS block different
9977                                                                  from SKP, EI, EIE in Datastream state.
9978                                                                  0x23 = When block with an undefined block type in datastream state.
9979                                                                  0x24 = When data stream without data over three cycles in datastream state.
9980                                                                  0x25 = When OS block during data stream in datastream state.
9981                                                                  0x26 = When RxStatus error was detected in datastream state.
9982                                                                  0x27 = When not all active lanes receiving SKP OS starting
9983                                                                  at same cycle time in SKPOS state.
9984                                                                  0x28 = When a 2-block timeout occurs for SKP OS in SKPOS state.
9985                                                                  0x29 = When receiving consecutive OS blocks within a data stream in SKPOS state.n.
9986                                                                  0x2A = When Phy status error was detected in SKPOS state.
9987                                                                  0x2B = When not all active lanes receiving EIOS starting at
9988                                                                  same cycle time in EIOS state.
9989                                                                  0x2C = When at least one symbol from the first 4 symbols
9990                                                                  is not EIOS Symbol in EIOS state (CX_NB=2 only).
9991                                                                  0x2D = When not all active lanes receiving EIEOS starting
9992                                                                  at same cycle time in EIEOS state.
9993                                                                  0x2E = When not full 16 eieos symbols are received in EIEOS state.
9994 
9995                                                                  All other values not listed above are reserved. */
9996 #else /* Word 0 - Little Endian */
9997         uint32_t framing_err_ptr       : 7;  /**< [  6:  0](RO) First framing error pointer.
9998                                                                  Identifies the first framing error using the following
9999                                                                  encoding. The field contents are only valid value when
10000                                                                  FRAMING_ERR =1.
10001 
10002                                                                  Received unexpected framing token
10003                                                                  0x1 = When non-STP/SDP/IDL token was received and it
10004                                                                  was not in TLP/DLLP reception.
10005                                                                  0x02 = When current token was not a valid EDB token and
10006                                                                  previous token was an EDB. (128/256 bit core only).
10007                                                                  0x03 = When SDP token was received but not expected.
10008                                                                  0x04 = When STP token was received but not expected.
10009                                                                  0x05 = When EDS token was expected but not received or
10010                                                                  whenever an EDS token was received but not expected.
10011                                                                  0x06 = When a framing error was detected in the deskew
10012                                                                  block while a packet has been in progress in token_finder.
10013                                                                  Received Unexpected STP Token
10014                                                                  0x11 = When framing CRC in STP token did not match.
10015                                                                  0x12 = When framing parity in STP token did not match.
10016                                                                  0x13 = When framing TLP length in STP token was
10017                                                                  smaller than 5 DWORDs.
10018 
10019                                                                  Received unexpected block
10020                                                                  0x21 = When receiving an OS block following SDS in datastream state.n.
10021                                                                  0x22 = When data block followed by OS block different
10022                                                                  from SKP, EI, EIE in Datastream state.
10023                                                                  0x23 = When block with an undefined block type in datastream state.
10024                                                                  0x24 = When data stream without data over three cycles in datastream state.
10025                                                                  0x25 = When OS block during data stream in datastream state.
10026                                                                  0x26 = When RxStatus error was detected in datastream state.
10027                                                                  0x27 = When not all active lanes receiving SKP OS starting
10028                                                                  at same cycle time in SKPOS state.
10029                                                                  0x28 = When a 2-block timeout occurs for SKP OS in SKPOS state.
10030                                                                  0x29 = When receiving consecutive OS blocks within a data stream in SKPOS state.n.
10031                                                                  0x2A = When Phy status error was detected in SKPOS state.
10032                                                                  0x2B = When not all active lanes receiving EIOS starting at
10033                                                                  same cycle time in EIOS state.
10034                                                                  0x2C = When at least one symbol from the first 4 symbols
10035                                                                  is not EIOS Symbol in EIOS state (CX_NB=2 only).
10036                                                                  0x2D = When not all active lanes receiving EIEOS starting
10037                                                                  at same cycle time in EIEOS state.
10038                                                                  0x2E = When not full 16 eieos symbols are received in EIEOS state.
10039 
10040                                                                  All other values not listed above are reserved. */
10041         uint32_t framing_err           : 1;  /**< [  7:  7](R/W1C) Framing error.
10042                                                                  Indicates framing error detection status. */
10043         uint32_t pipe_pwr_dwn          : 3;  /**< [ 10:  8](RO/H) PIPE:PowerDown.
10044                                                                  Indicates PIPE PowerDown signal. */
10045         uint32_t reserved_11_14        : 4;
10046         uint32_t lane_rev              : 1;  /**< [ 15: 15](RO/H) Lane reversal operation.
10047                                                                  Receiver detected lane reversal. */
10048         uint32_t ltssm_var             : 16; /**< [ 31: 16](RO/H) LTSSM variable.
10049                                                                  Indicates internal LTSSM variables defined in the PCI
10050                                                                  Express base specification.
10051                                                                  0x0 = directed_speed change.
10052                                                                  0x1 = changed_speed_recovery.
10053                                                                  0x2 =  successful_speed_negotiation.
10054                                                                  0x3 =  upconfigure_capable; Set to 1 if both ports advertised
10055                                                                  the UpConfigure capability in the last Config.Complete.
10056                                                                  0x4 = select_deemphasis.
10057                                                                  0x5 = start_equalization_w_preset.
10058                                                                  0x6 = equalization_done_8GT_data_rate.
10059                                                                  0x7 = equalization_done_16GT_data_rate.
10060                                                                  0x8-0xF = idle_to_rlock_transitioned. */
10061 #endif /* Word 0 - End */
10062     } s;
10063     /* struct bdk_pciercx_cfg154_s cn; */
10064 };
10065 typedef union bdk_pciercx_cfg154 bdk_pciercx_cfg154_t;
10066 
10067 static inline uint64_t BDK_PCIERCX_CFG154(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG154(unsigned long a)10068 static inline uint64_t BDK_PCIERCX_CFG154(unsigned long a)
10069 {
10070     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10071         return 0x2000000026cll + 0x100000000ll * ((a) & 0x3);
10072     __bdk_csr_fatal("PCIERCX_CFG154", 1, a, 0, 0, 0);
10073 }
10074 
10075 #define typedef_BDK_PCIERCX_CFG154(a) bdk_pciercx_cfg154_t
10076 #define bustype_BDK_PCIERCX_CFG154(a) BDK_CSR_TYPE_PCICONFIGRC
10077 #define basename_BDK_PCIERCX_CFG154(a) "PCIERCX_CFG154"
10078 #define busnum_BDK_PCIERCX_CFG154(a) (a)
10079 #define arguments_BDK_PCIERCX_CFG154(a) (a),-1,-1,-1
10080 
10081 /**
10082  * Register (PCICONFIGRC) pcierc#_cfg155
10083  *
10084  * PCIe RC Vendor RAS DES Silicon Debug Status PM Register
10085  * This register contains the one hundred fifty-sixth 32-bits of PCIe type 0 configuration space.
10086  */
10087 union bdk_pciercx_cfg155
10088 {
10089     uint32_t u;
10090     struct bdk_pciercx_cfg155_s
10091     {
10092 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10093         uint32_t reserved_24_31        : 8;
10094         uint32_t latched_nfts          : 8;  /**< [ 23: 16](RO/H) Latched N_FTS.
10095                                                                  Indicates the value of N_FTS in the received TS ordered
10096                                                                  sets from the link partner. */
10097         uint32_t l1sub_state           : 3;  /**< [ 15: 13](RO/H) Indicates the internal L1Sub state machine state.
10098                                                                  Internal:
10099                                                                  0x0 = Idle state.
10100                                                                  0x1 = Wait for aux_clk_active.
10101                                                                  0x2 = Wait for pclkack.
10102                                                                  0x3 = Wait for clkreq.
10103                                                                  0x4 = Check clkreq_in_n is de-asserted for t_power_off time.
10104                                                                  0x5 = L1 substate, turn off txcommonmode circuits (L1.2 only)
10105                                                                       and rx electrical idle detection circuits.
10106                                                                  0x6 = Locally/remotely initiated exit, assert pclkreq, wait for pclkack.
10107                                                                  0x7 = Wait for pclkack when aborting an attempt to enter L1_N. */
10108         uint32_t pme_rsnd_flag         : 1;  /**< [ 12: 12](RO) PME re-send flag.
10109                                                                  When the DUT sends a PM_PME message TLP, the DUT
10110                                                                  sets PME_Status bit. If host software does not clear
10111                                                                  PME_Status bit for 100ms (+50%/-5%), the DUT resends the
10112                                                                  PM_PME message. This bit indicates that a PM_PME was
10113                                                                  resent. */
10114         uint32_t int_pm_sstate         : 4;  /**< [ 11:  8](RO/H) Internal PM state (slave).
10115                                                                  Indicates internal state machine of power management
10116                                                                  slave controller.
10117                                                                  0x00 = S_IDLE.
10118                                                                  0x01 = S_RESPOND_NAK.
10119                                                                  0x02 = S_BLOCK_TLP.
10120                                                                  0x03 = S_WAIT_LAST_TLP_ACK.
10121                                                                  0x04 = S_WAIT_EIDLE.
10122                                                                  0x08 = S_LINK_ENTR_L1.
10123                                                                  0x09 = S_L1.
10124                                                                  0x0A = S_L1_EXIT.
10125                                                                  0x0B = S_L23RDY.
10126                                                                  0x0C = S_LINK_ENTR_L23.
10127                                                                  0x0D = S_L23RDY_WAIT4ALIVE.
10128                                                                  0x0F = S_L23RDY_WAIT4IDLE.
10129                                                                  0x10 = S_WAIT_LAST_PMDLLP.
10130                                                                  0x10-0x1F = Reserved. */
10131         uint32_t reserved_5_7          : 3;
10132         uint32_t int_pm_mstate         : 5;  /**< [  4:  0](RO/H) Internal PM state (master).
10133                                                                  Indicates internal state machine of power management
10134                                                                  master controller.
10135                                                                  0x00 = IDLE.
10136                                                                  0x01 = L0.
10137                                                                  0x02 = L0S.
10138                                                                  0x03 = ENTER_L0S.
10139                                                                  0x04 = L0S_EXIT.
10140                                                                  0x08 = L1.
10141                                                                  0x09 = L1_BLOCK_TLP.
10142                                                                  0x0A = L1_WAIT_LAST_TLP_ACK.
10143                                                                  0x0B = L1_WAIT_PMDLLP_ACK.
10144                                                                  0x0C = L1_LINK_ENTR_L1.
10145                                                                  0x0D = L1_EXIT.
10146                                                                  0x0F = PREP_4L1.
10147                                                                  0x10 = L23_BLOCK_TLP.
10148                                                                  0x11 = L23_WAIT_LAST_TLP_ACK.
10149                                                                  0x12 = L23_WAIT_PMDLLP_ACK.
10150                                                                  0x13 = L23_ENTR_L23.
10151                                                                  0x14 = L23RDY.
10152                                                                  0x15 = PREP_4L23.
10153                                                                  0x16 = L23RDY_WAIT4ALIVE.
10154                                                                  0x17 = L0S_BLOCK_TLP.
10155                                                                  0x18 = WAIT_LAST_PMDLLP.
10156                                                                  0x19 = WAIT_DSTATE_UPDATE.
10157                                                                  0x20-0x1F = Reserved. */
10158 #else /* Word 0 - Little Endian */
10159         uint32_t int_pm_mstate         : 5;  /**< [  4:  0](RO/H) Internal PM state (master).
10160                                                                  Indicates internal state machine of power management
10161                                                                  master controller.
10162                                                                  0x00 = IDLE.
10163                                                                  0x01 = L0.
10164                                                                  0x02 = L0S.
10165                                                                  0x03 = ENTER_L0S.
10166                                                                  0x04 = L0S_EXIT.
10167                                                                  0x08 = L1.
10168                                                                  0x09 = L1_BLOCK_TLP.
10169                                                                  0x0A = L1_WAIT_LAST_TLP_ACK.
10170                                                                  0x0B = L1_WAIT_PMDLLP_ACK.
10171                                                                  0x0C = L1_LINK_ENTR_L1.
10172                                                                  0x0D = L1_EXIT.
10173                                                                  0x0F = PREP_4L1.
10174                                                                  0x10 = L23_BLOCK_TLP.
10175                                                                  0x11 = L23_WAIT_LAST_TLP_ACK.
10176                                                                  0x12 = L23_WAIT_PMDLLP_ACK.
10177                                                                  0x13 = L23_ENTR_L23.
10178                                                                  0x14 = L23RDY.
10179                                                                  0x15 = PREP_4L23.
10180                                                                  0x16 = L23RDY_WAIT4ALIVE.
10181                                                                  0x17 = L0S_BLOCK_TLP.
10182                                                                  0x18 = WAIT_LAST_PMDLLP.
10183                                                                  0x19 = WAIT_DSTATE_UPDATE.
10184                                                                  0x20-0x1F = Reserved. */
10185         uint32_t reserved_5_7          : 3;
10186         uint32_t int_pm_sstate         : 4;  /**< [ 11:  8](RO/H) Internal PM state (slave).
10187                                                                  Indicates internal state machine of power management
10188                                                                  slave controller.
10189                                                                  0x00 = S_IDLE.
10190                                                                  0x01 = S_RESPOND_NAK.
10191                                                                  0x02 = S_BLOCK_TLP.
10192                                                                  0x03 = S_WAIT_LAST_TLP_ACK.
10193                                                                  0x04 = S_WAIT_EIDLE.
10194                                                                  0x08 = S_LINK_ENTR_L1.
10195                                                                  0x09 = S_L1.
10196                                                                  0x0A = S_L1_EXIT.
10197                                                                  0x0B = S_L23RDY.
10198                                                                  0x0C = S_LINK_ENTR_L23.
10199                                                                  0x0D = S_L23RDY_WAIT4ALIVE.
10200                                                                  0x0F = S_L23RDY_WAIT4IDLE.
10201                                                                  0x10 = S_WAIT_LAST_PMDLLP.
10202                                                                  0x10-0x1F = Reserved. */
10203         uint32_t pme_rsnd_flag         : 1;  /**< [ 12: 12](RO) PME re-send flag.
10204                                                                  When the DUT sends a PM_PME message TLP, the DUT
10205                                                                  sets PME_Status bit. If host software does not clear
10206                                                                  PME_Status bit for 100ms (+50%/-5%), the DUT resends the
10207                                                                  PM_PME message. This bit indicates that a PM_PME was
10208                                                                  resent. */
10209         uint32_t l1sub_state           : 3;  /**< [ 15: 13](RO/H) Indicates the internal L1Sub state machine state.
10210                                                                  Internal:
10211                                                                  0x0 = Idle state.
10212                                                                  0x1 = Wait for aux_clk_active.
10213                                                                  0x2 = Wait for pclkack.
10214                                                                  0x3 = Wait for clkreq.
10215                                                                  0x4 = Check clkreq_in_n is de-asserted for t_power_off time.
10216                                                                  0x5 = L1 substate, turn off txcommonmode circuits (L1.2 only)
10217                                                                       and rx electrical idle detection circuits.
10218                                                                  0x6 = Locally/remotely initiated exit, assert pclkreq, wait for pclkack.
10219                                                                  0x7 = Wait for pclkack when aborting an attempt to enter L1_N. */
10220         uint32_t latched_nfts          : 8;  /**< [ 23: 16](RO/H) Latched N_FTS.
10221                                                                  Indicates the value of N_FTS in the received TS ordered
10222                                                                  sets from the link partner. */
10223         uint32_t reserved_24_31        : 8;
10224 #endif /* Word 0 - End */
10225     } s;
10226     /* struct bdk_pciercx_cfg155_s cn; */
10227 };
10228 typedef union bdk_pciercx_cfg155 bdk_pciercx_cfg155_t;
10229 
10230 static inline uint64_t BDK_PCIERCX_CFG155(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG155(unsigned long a)10231 static inline uint64_t BDK_PCIERCX_CFG155(unsigned long a)
10232 {
10233     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10234         return 0x20000000270ll + 0x100000000ll * ((a) & 0x3);
10235     __bdk_csr_fatal("PCIERCX_CFG155", 1, a, 0, 0, 0);
10236 }
10237 
10238 #define typedef_BDK_PCIERCX_CFG155(a) bdk_pciercx_cfg155_t
10239 #define bustype_BDK_PCIERCX_CFG155(a) BDK_CSR_TYPE_PCICONFIGRC
10240 #define basename_BDK_PCIERCX_CFG155(a) "PCIERCX_CFG155"
10241 #define busnum_BDK_PCIERCX_CFG155(a) (a)
10242 #define arguments_BDK_PCIERCX_CFG155(a) (a),-1,-1,-1
10243 
10244 /**
10245  * Register (PCICONFIGRC) pcierc#_cfg156
10246  *
10247  * PCIe RC Vendor RAS DES Silicon Debug Status L2 Register
10248  * This register contains the one hundred fifty-seventh 32-bits of PCIe type 0 configuration space.
10249  */
10250 union bdk_pciercx_cfg156
10251 {
10252     uint32_t u;
10253     struct bdk_pciercx_cfg156_s
10254     {
10255 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10256         uint32_t reserved_28_31        : 4;
10257         uint32_t fc_init2              : 1;  /**< [ 27: 27](RO) FC_INIT2. Indicates the core is in FC_INIT2(VC0) state. */
10258         uint32_t fc_init1              : 1;  /**< [ 26: 26](RO) FC_INIT1. Indicates the core is in FC_INIT1(VC0) state. */
10259         uint32_t dlcmsm                : 2;  /**< [ 25: 24](RO/H) DLCMSM.
10260                                                                  Indicates the current DLCMSM.
10261                                                                  0x0 = DL_INACTIVE.
10262                                                                  0x1 = DL_FC_INIT.
10263                                                                  0x2 = Reserved.
10264                                                                  0x3 = DL_ACTIVE. */
10265         uint32_t rx_ack_seq_no         : 12; /**< [ 23: 12](RO/H) RX ACK sequence number.
10266                                                                  Indicates ACKD_SEQ which is updated by receiving
10267                                                                  ACK/NAK DLLP. */
10268         uint32_t tx_ack_seq_no         : 12; /**< [ 11:  0](RO/H) TX ACK sequence number.
10269                                                                  Indicates next transmit sequence number for transmit TLP. */
10270 #else /* Word 0 - Little Endian */
10271         uint32_t tx_ack_seq_no         : 12; /**< [ 11:  0](RO/H) TX ACK sequence number.
10272                                                                  Indicates next transmit sequence number for transmit TLP. */
10273         uint32_t rx_ack_seq_no         : 12; /**< [ 23: 12](RO/H) RX ACK sequence number.
10274                                                                  Indicates ACKD_SEQ which is updated by receiving
10275                                                                  ACK/NAK DLLP. */
10276         uint32_t dlcmsm                : 2;  /**< [ 25: 24](RO/H) DLCMSM.
10277                                                                  Indicates the current DLCMSM.
10278                                                                  0x0 = DL_INACTIVE.
10279                                                                  0x1 = DL_FC_INIT.
10280                                                                  0x2 = Reserved.
10281                                                                  0x3 = DL_ACTIVE. */
10282         uint32_t fc_init1              : 1;  /**< [ 26: 26](RO) FC_INIT1. Indicates the core is in FC_INIT1(VC0) state. */
10283         uint32_t fc_init2              : 1;  /**< [ 27: 27](RO) FC_INIT2. Indicates the core is in FC_INIT2(VC0) state. */
10284         uint32_t reserved_28_31        : 4;
10285 #endif /* Word 0 - End */
10286     } s;
10287     /* struct bdk_pciercx_cfg156_s cn; */
10288 };
10289 typedef union bdk_pciercx_cfg156 bdk_pciercx_cfg156_t;
10290 
10291 static inline uint64_t BDK_PCIERCX_CFG156(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG156(unsigned long a)10292 static inline uint64_t BDK_PCIERCX_CFG156(unsigned long a)
10293 {
10294     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10295         return 0x20000000274ll + 0x100000000ll * ((a) & 0x3);
10296     __bdk_csr_fatal("PCIERCX_CFG156", 1, a, 0, 0, 0);
10297 }
10298 
10299 #define typedef_BDK_PCIERCX_CFG156(a) bdk_pciercx_cfg156_t
10300 #define bustype_BDK_PCIERCX_CFG156(a) BDK_CSR_TYPE_PCICONFIGRC
10301 #define basename_BDK_PCIERCX_CFG156(a) "PCIERCX_CFG156"
10302 #define busnum_BDK_PCIERCX_CFG156(a) (a)
10303 #define arguments_BDK_PCIERCX_CFG156(a) (a),-1,-1,-1
10304 
10305 /**
10306  * Register (PCICONFIGRC) pcierc#_cfg157
10307  *
10308  * PCIe RC Vendor RAS DES Silicon Debug Status L2 Register
10309  * This register contains the one hundred fifty-ninth 32-bits of PCIe type 0 configuration space.
10310  */
10311 union bdk_pciercx_cfg157
10312 {
10313     uint32_t u;
10314     struct bdk_pciercx_cfg157_s
10315     {
10316 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10317         uint32_t credit_data1          : 12; /**< [ 31: 20](RO/H) Credit data 1.
10318                                                                  Current FC credit data selected by the [CREDIT_SEL_VC],
10319                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
10320                                                                  and [CREDIT_SEL_HD] viewport-select fields.
10321                                                                  RX = Credit allocated value.
10322                                                                  TX = Credit limit value. This value is valid when DLCMSM=0x3(DL_ACTIVE). */
10323         uint32_t credit_data0          : 12; /**< [ 19:  8](RO/H) Credit data 0.
10324                                                                  Current FC credit data selected by the [CREDIT_SEL_VC],
10325                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
10326                                                                  and [CREDIT_SEL_HD] viewport-select fields.
10327                                                                  RX = Credit received value.
10328                                                                  TX = Credit consumed value. */
10329         uint32_t reserved_7            : 1;
10330         uint32_t credit_sel_hd         : 1;  /**< [  6:  6](R/W) Credit select (HeaderData).
10331                                                                  This field in conjunction with the [CREDIT_SEL_VC],
10332                                                                  [CREDIT_SEL_CREDIT_TYPE], and
10333                                                                  [CREDIT_SEL_TLP_TYPE] viewport-select fields determines
10334                                                                  that data that is returned by the [CREDIT_DATA0] and
10335                                                                  [CREDIT_DATA1] data fields.
10336                                                                  0x0 = Header credit.
10337                                                                  0x1 = Data credit. */
10338         uint32_t credit_sel_tlp_type   : 2;  /**< [  5:  4](R/W) Credit select (TLP Type).
10339                                                                  This field in conjunction with the [CREDIT_SEL_VC],
10340                                                                  [CREDIT_SEL_CREDIT_TYPE], and [CREDIT_SEL_HD]
10341                                                                  viewport-select fields determines that data that is returned
10342                                                                  by the [CREDIT_DATA0] and [CREDIT_DATA1] data fields.
10343                                                                  0x0 = Posted.
10344                                                                  0x1 = Non-posted.
10345                                                                  0x2 = Completion.
10346                                                                  0x3 = Reserved. */
10347         uint32_t credit_sel_credit_type : 1; /**< [  3:  3](R/W) Credit select (credit type).
10348                                                                  This field in conjunction with the [CREDIT_SEL_VC],
10349                                                                  [CREDIT_SEL_TLP_TYPE], and [CREDIT_SEL_HD] viewport-select
10350                                                                  fields determines that data that is returned by the
10351                                                                  [CREDIT_DATA0] and [CREDIT_DATA1] data fields.
10352                                                                  0x0 = RX.
10353                                                                  0x1 = TX. */
10354         uint32_t credit_sel_vc         : 3;  /**< [  2:  0](R/W) Credit select (VC).
10355                                                                  This field in conjunction with the
10356                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
10357                                                                  and [CREDIT_SEL_HD] viewport-select fields determines that
10358                                                                  data that is returned by the [CREDIT_DATA0] and
10359                                                                  [CREDIT_DATA1] data fields.
10360                                                                  0x0 = VC0.
10361                                                                  0x1 = VC1.
10362                                                                  0x2 = VC2.
10363                                                                  _ ...
10364                                                                  0x7 = VC7. */
10365 #else /* Word 0 - Little Endian */
10366         uint32_t credit_sel_vc         : 3;  /**< [  2:  0](R/W) Credit select (VC).
10367                                                                  This field in conjunction with the
10368                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
10369                                                                  and [CREDIT_SEL_HD] viewport-select fields determines that
10370                                                                  data that is returned by the [CREDIT_DATA0] and
10371                                                                  [CREDIT_DATA1] data fields.
10372                                                                  0x0 = VC0.
10373                                                                  0x1 = VC1.
10374                                                                  0x2 = VC2.
10375                                                                  _ ...
10376                                                                  0x7 = VC7. */
10377         uint32_t credit_sel_credit_type : 1; /**< [  3:  3](R/W) Credit select (credit type).
10378                                                                  This field in conjunction with the [CREDIT_SEL_VC],
10379                                                                  [CREDIT_SEL_TLP_TYPE], and [CREDIT_SEL_HD] viewport-select
10380                                                                  fields determines that data that is returned by the
10381                                                                  [CREDIT_DATA0] and [CREDIT_DATA1] data fields.
10382                                                                  0x0 = RX.
10383                                                                  0x1 = TX. */
10384         uint32_t credit_sel_tlp_type   : 2;  /**< [  5:  4](R/W) Credit select (TLP Type).
10385                                                                  This field in conjunction with the [CREDIT_SEL_VC],
10386                                                                  [CREDIT_SEL_CREDIT_TYPE], and [CREDIT_SEL_HD]
10387                                                                  viewport-select fields determines that data that is returned
10388                                                                  by the [CREDIT_DATA0] and [CREDIT_DATA1] data fields.
10389                                                                  0x0 = Posted.
10390                                                                  0x1 = Non-posted.
10391                                                                  0x2 = Completion.
10392                                                                  0x3 = Reserved. */
10393         uint32_t credit_sel_hd         : 1;  /**< [  6:  6](R/W) Credit select (HeaderData).
10394                                                                  This field in conjunction with the [CREDIT_SEL_VC],
10395                                                                  [CREDIT_SEL_CREDIT_TYPE], and
10396                                                                  [CREDIT_SEL_TLP_TYPE] viewport-select fields determines
10397                                                                  that data that is returned by the [CREDIT_DATA0] and
10398                                                                  [CREDIT_DATA1] data fields.
10399                                                                  0x0 = Header credit.
10400                                                                  0x1 = Data credit. */
10401         uint32_t reserved_7            : 1;
10402         uint32_t credit_data0          : 12; /**< [ 19:  8](RO/H) Credit data 0.
10403                                                                  Current FC credit data selected by the [CREDIT_SEL_VC],
10404                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
10405                                                                  and [CREDIT_SEL_HD] viewport-select fields.
10406                                                                  RX = Credit received value.
10407                                                                  TX = Credit consumed value. */
10408         uint32_t credit_data1          : 12; /**< [ 31: 20](RO/H) Credit data 1.
10409                                                                  Current FC credit data selected by the [CREDIT_SEL_VC],
10410                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
10411                                                                  and [CREDIT_SEL_HD] viewport-select fields.
10412                                                                  RX = Credit allocated value.
10413                                                                  TX = Credit limit value. This value is valid when DLCMSM=0x3(DL_ACTIVE). */
10414 #endif /* Word 0 - End */
10415     } s;
10416     /* struct bdk_pciercx_cfg157_s cn; */
10417 };
10418 typedef union bdk_pciercx_cfg157 bdk_pciercx_cfg157_t;
10419 
10420 static inline uint64_t BDK_PCIERCX_CFG157(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG157(unsigned long a)10421 static inline uint64_t BDK_PCIERCX_CFG157(unsigned long a)
10422 {
10423     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10424         return 0x20000000278ll + 0x100000000ll * ((a) & 0x3);
10425     __bdk_csr_fatal("PCIERCX_CFG157", 1, a, 0, 0, 0);
10426 }
10427 
10428 #define typedef_BDK_PCIERCX_CFG157(a) bdk_pciercx_cfg157_t
10429 #define bustype_BDK_PCIERCX_CFG157(a) BDK_CSR_TYPE_PCICONFIGRC
10430 #define basename_BDK_PCIERCX_CFG157(a) "PCIERCX_CFG157"
10431 #define busnum_BDK_PCIERCX_CFG157(a) (a)
10432 #define arguments_BDK_PCIERCX_CFG157(a) (a),-1,-1,-1
10433 
10434 /**
10435  * Register (PCICONFIGRC) pcierc#_cfg158
10436  *
10437  * PCIe RC Vendor RAS DES Silicon Debug Status L3 Register
10438  * This register contains the one hundred fifty-ninth 32-bits of PCIe type 0 configuration space.
10439  */
10440 union bdk_pciercx_cfg158
10441 {
10442     uint32_t u;
10443     struct bdk_pciercx_cfg158_s
10444     {
10445 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10446         uint32_t reserved_8_31         : 24;
10447         uint32_t mftlp_status          : 1;  /**< [  7:  7](R/W1C) Malformed TLP status.
10448                                                                  Indicates malformed TLP has occurred. */
10449         uint32_t mftlp_ptr             : 7;  /**< [  6:  0](RO) First malformed TLP error pointer.
10450                                                                  Indicates the element of the received first malformed TLP.
10451                                                                  This pointer is validated by [MFTLP_STATUS].
10452                                                                  0x01 = AtomicOp address alignment.
10453                                                                  0x02 = AtomicOp operand.
10454                                                                  0x03 = AtomicOp byte enable.
10455                                                                  0x04 = TLP length miss match.
10456                                                                  0x05 = Max payload size.
10457                                                                  0x06 = Message TLP without TC0.
10458                                                                  0x07 = Invalid TC.
10459                                                                  0x08 = Unexpected route bit in message TLP.
10460                                                                  0x09 = Unexpected CRS status in completion TLP.
10461                                                                  0x0A = Byte enable.
10462                                                                  0x0B = Memory address 4KB boundary.
10463                                                                  0x0C = TLP prefix rules.
10464                                                                  0x0D = Translation request rules.
10465                                                                  0x0E = Invalid TLP type.
10466                                                                  0x0F = Completion rules.
10467                                                                  0x10-0x7E = Reserved.
10468                                                                  0x7F = Application. */
10469 #else /* Word 0 - Little Endian */
10470         uint32_t mftlp_ptr             : 7;  /**< [  6:  0](RO) First malformed TLP error pointer.
10471                                                                  Indicates the element of the received first malformed TLP.
10472                                                                  This pointer is validated by [MFTLP_STATUS].
10473                                                                  0x01 = AtomicOp address alignment.
10474                                                                  0x02 = AtomicOp operand.
10475                                                                  0x03 = AtomicOp byte enable.
10476                                                                  0x04 = TLP length miss match.
10477                                                                  0x05 = Max payload size.
10478                                                                  0x06 = Message TLP without TC0.
10479                                                                  0x07 = Invalid TC.
10480                                                                  0x08 = Unexpected route bit in message TLP.
10481                                                                  0x09 = Unexpected CRS status in completion TLP.
10482                                                                  0x0A = Byte enable.
10483                                                                  0x0B = Memory address 4KB boundary.
10484                                                                  0x0C = TLP prefix rules.
10485                                                                  0x0D = Translation request rules.
10486                                                                  0x0E = Invalid TLP type.
10487                                                                  0x0F = Completion rules.
10488                                                                  0x10-0x7E = Reserved.
10489                                                                  0x7F = Application. */
10490         uint32_t mftlp_status          : 1;  /**< [  7:  7](R/W1C) Malformed TLP status.
10491                                                                  Indicates malformed TLP has occurred. */
10492         uint32_t reserved_8_31         : 24;
10493 #endif /* Word 0 - End */
10494     } s;
10495     /* struct bdk_pciercx_cfg158_s cn; */
10496 };
10497 typedef union bdk_pciercx_cfg158 bdk_pciercx_cfg158_t;
10498 
10499 static inline uint64_t BDK_PCIERCX_CFG158(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG158(unsigned long a)10500 static inline uint64_t BDK_PCIERCX_CFG158(unsigned long a)
10501 {
10502     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10503         return 0x2000000027cll + 0x100000000ll * ((a) & 0x3);
10504     __bdk_csr_fatal("PCIERCX_CFG158", 1, a, 0, 0, 0);
10505 }
10506 
10507 #define typedef_BDK_PCIERCX_CFG158(a) bdk_pciercx_cfg158_t
10508 #define bustype_BDK_PCIERCX_CFG158(a) BDK_CSR_TYPE_PCICONFIGRC
10509 #define basename_BDK_PCIERCX_CFG158(a) "PCIERCX_CFG158"
10510 #define busnum_BDK_PCIERCX_CFG158(a) (a)
10511 #define arguments_BDK_PCIERCX_CFG158(a) (a),-1,-1,-1
10512 
10513 /**
10514  * Register (PCICONFIGRC) pcierc#_cfg161
10515  *
10516  * PCIe RC Vendor RAS DES Silicon Debug EQ Control 1 Register
10517  * This register contains the one hundred sixty-second 32-bits of PCIe type 0 configuration space.
10518  */
10519 union bdk_pciercx_cfg161
10520 {
10521     uint32_t u;
10522     struct bdk_pciercx_cfg161_s
10523     {
10524 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10525         uint32_t fom_target            : 8;  /**< [ 31: 24](R/W) FOM target.
10526                                                                  Indicates figure of merit target criteria value of EQ
10527                                                                  master (DSP in EQ Phase3/USP in EQ Phase2).
10528                                                                  This field is only valid when [GEN3_EQ_FB_MODE] is
10529                                                                  0x1 (Figure Of Merit). */
10530         uint32_t fom_target_en         : 1;  /**< [ 23: 23](R/W) FOM target enable.
10531                                                                  Enables the FOM_TARGET fields. */
10532         uint32_t reserved_18_22        : 5;
10533         uint32_t eval_interval_time    : 2;  /**< [ 17: 16](R/W) Eval interval time.
10534                                                                  Indicates interval time of RxEqEval assertion.
10535                                                                  0x0 = 500ns.
10536                                                                  0x1 = 1us.
10537                                                                  0x2 = 2us.
10538                                                                  0x3 = 4us.
10539 
10540                                                                  This field is used for EQ master (DSP in EQ Phase3/USP in
10541                                                                  EQ Phase2). */
10542         uint32_t reserved_10_15        : 6;
10543         uint32_t ext_eq_timeout        : 2;  /**< [  9:  8](R/W) Extends EQ Phase2/3 Timeout.
10544                                                                  This field is used when the ltssm is in Recovery.EQ2/3.
10545                                                                  When this field is set, the value of the EQ2/3 timeout is
10546                                                                  extended.
10547 
10548                                                                  EQ Master (DSP in EQ Phase 3/USP in EQ Phaase2)
10549                                                                  0x0 = 24ms (default).
10550                                                                  0x1 = 48ms
10551                                                                  0x2 = 240ms.
10552                                                                  0x3 = No timeout.
10553 
10554                                                                  EQ Slave (DSP in EQ Phase 2/USP in EQ Phaase3)
10555                                                                  0x0 = 32ms (default).
10556                                                                  0x1 = 56ms
10557                                                                  0x2 = 248ms.
10558                                                                  0x3 = No timeout. */
10559         uint32_t reserved_5_7          : 3;
10560         uint32_t eq_rate_sel           : 1;  /**< [  4:  4](R/W) EQ status rate select.
10561                                                                  Setting this field in conjunction with [EQ_LANE_SEL]
10562                                                                  determines the per-lane silicon debug EQ status data
10563                                                                  returned by the SD_EQ_CONTROL[2/3] and
10564                                                                  SD_EQ_STATUS[1/2/3] viewport registers.
10565                                                                  0x0 = 8.0GT/s Speed
10566                                                                  0x1 = 16.0GT/s Speed (Not supported). */
10567         uint32_t eq_lane_sel           : 4;  /**< [  3:  0](R/W) EQ status lane select.
10568                                                                  Setting this field in conjunction with [EQ_RATE_SEL]
10569                                                                  determines the per-lane silicon debug EQ status data
10570                                                                  returned by the SD_EQ_CONTROL[2/3] and
10571                                                                  SD_EQ_STATUS[1/2/3] viewport registers.
10572                                                                  0x0 = Lane0.
10573                                                                  0x1 = Lane1.
10574                                                                  0x2 = Lane2.
10575                                                                  _ ...
10576                                                                  0x7 = Lane7.
10577                                                                  0x8-0xF = Reserved. */
10578 #else /* Word 0 - Little Endian */
10579         uint32_t eq_lane_sel           : 4;  /**< [  3:  0](R/W) EQ status lane select.
10580                                                                  Setting this field in conjunction with [EQ_RATE_SEL]
10581                                                                  determines the per-lane silicon debug EQ status data
10582                                                                  returned by the SD_EQ_CONTROL[2/3] and
10583                                                                  SD_EQ_STATUS[1/2/3] viewport registers.
10584                                                                  0x0 = Lane0.
10585                                                                  0x1 = Lane1.
10586                                                                  0x2 = Lane2.
10587                                                                  _ ...
10588                                                                  0x7 = Lane7.
10589                                                                  0x8-0xF = Reserved. */
10590         uint32_t eq_rate_sel           : 1;  /**< [  4:  4](R/W) EQ status rate select.
10591                                                                  Setting this field in conjunction with [EQ_LANE_SEL]
10592                                                                  determines the per-lane silicon debug EQ status data
10593                                                                  returned by the SD_EQ_CONTROL[2/3] and
10594                                                                  SD_EQ_STATUS[1/2/3] viewport registers.
10595                                                                  0x0 = 8.0GT/s Speed
10596                                                                  0x1 = 16.0GT/s Speed (Not supported). */
10597         uint32_t reserved_5_7          : 3;
10598         uint32_t ext_eq_timeout        : 2;  /**< [  9:  8](R/W) Extends EQ Phase2/3 Timeout.
10599                                                                  This field is used when the ltssm is in Recovery.EQ2/3.
10600                                                                  When this field is set, the value of the EQ2/3 timeout is
10601                                                                  extended.
10602 
10603                                                                  EQ Master (DSP in EQ Phase 3/USP in EQ Phaase2)
10604                                                                  0x0 = 24ms (default).
10605                                                                  0x1 = 48ms
10606                                                                  0x2 = 240ms.
10607                                                                  0x3 = No timeout.
10608 
10609                                                                  EQ Slave (DSP in EQ Phase 2/USP in EQ Phaase3)
10610                                                                  0x0 = 32ms (default).
10611                                                                  0x1 = 56ms
10612                                                                  0x2 = 248ms.
10613                                                                  0x3 = No timeout. */
10614         uint32_t reserved_10_15        : 6;
10615         uint32_t eval_interval_time    : 2;  /**< [ 17: 16](R/W) Eval interval time.
10616                                                                  Indicates interval time of RxEqEval assertion.
10617                                                                  0x0 = 500ns.
10618                                                                  0x1 = 1us.
10619                                                                  0x2 = 2us.
10620                                                                  0x3 = 4us.
10621 
10622                                                                  This field is used for EQ master (DSP in EQ Phase3/USP in
10623                                                                  EQ Phase2). */
10624         uint32_t reserved_18_22        : 5;
10625         uint32_t fom_target_en         : 1;  /**< [ 23: 23](R/W) FOM target enable.
10626                                                                  Enables the FOM_TARGET fields. */
10627         uint32_t fom_target            : 8;  /**< [ 31: 24](R/W) FOM target.
10628                                                                  Indicates figure of merit target criteria value of EQ
10629                                                                  master (DSP in EQ Phase3/USP in EQ Phase2).
10630                                                                  This field is only valid when [GEN3_EQ_FB_MODE] is
10631                                                                  0x1 (Figure Of Merit). */
10632 #endif /* Word 0 - End */
10633     } s;
10634     /* struct bdk_pciercx_cfg161_s cn; */
10635 };
10636 typedef union bdk_pciercx_cfg161 bdk_pciercx_cfg161_t;
10637 
10638 static inline uint64_t BDK_PCIERCX_CFG161(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG161(unsigned long a)10639 static inline uint64_t BDK_PCIERCX_CFG161(unsigned long a)
10640 {
10641     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10642         return 0x20000000288ll + 0x100000000ll * ((a) & 0x3);
10643     __bdk_csr_fatal("PCIERCX_CFG161", 1, a, 0, 0, 0);
10644 }
10645 
10646 #define typedef_BDK_PCIERCX_CFG161(a) bdk_pciercx_cfg161_t
10647 #define bustype_BDK_PCIERCX_CFG161(a) BDK_CSR_TYPE_PCICONFIGRC
10648 #define basename_BDK_PCIERCX_CFG161(a) "PCIERCX_CFG161"
10649 #define busnum_BDK_PCIERCX_CFG161(a) (a)
10650 #define arguments_BDK_PCIERCX_CFG161(a) (a),-1,-1,-1
10651 
10652 /**
10653  * Register (PCICONFIGRC) pcierc#_cfg162
10654  *
10655  * PCIe RC Vendor RAS DES Silicon Debug EQ Control 2 Register
10656  * This register contains the one hundred sixty-third 32-bits of PCIe type 0 configuration space.
10657  */
10658 union bdk_pciercx_cfg162
10659 {
10660     uint32_t u;
10661     struct bdk_pciercx_cfg162_s
10662     {
10663 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10664         uint32_t reserved_31           : 1;
10665         uint32_t force_loc_txpre_en    : 1;  /**< [ 30: 30](R/W) Force local transmitter preset enable.
10666                                                                  Enables the FORCE_LOCAL_TX_PRESET field. */
10667         uint32_t force_loc_rxhint_en   : 1;  /**< [ 29: 29](R/W) Force local receiver preset hint enable.
10668                                                                  Enables the FORCE_LOCAL_RX_HINT field. */
10669         uint32_t force_loc_txcoef_en   : 1;  /**< [ 28: 28](R/W) Force local transmitter coefficient enable.
10670                                                                  Enables the following fields:
10671                                                                  FORCE_LOCAL_TX_PRE_CURSOR.
10672                                                                  FORCE_LOCAL_TX_CURSOR.
10673                                                                  FORCE_LOCAL_TX_POST_CURSOR. */
10674         uint32_t force_loc_txpre       : 4;  /**< [ 27: 24](R/W) Force local transmitter preset.
10675                                                                  Indicates initial preset value of USP in EQ slave (EQ Phase2)
10676                                                                  instead of receiving EQ TS2. */
10677         uint32_t reserved_21_23        : 3;
10678         uint32_t force_loc_rxhint      : 3;  /**< [ 20: 18](R/W) Force local receiver preset hint.
10679                                                                  Indicates the RxPresetHint value of EQ slave (DSP in EQ
10680                                                                  Phase2/USP in EQ Phase3), instead of received or set value. */
10681         uint32_t force_loc_txpost_cur  : 6;  /**< [ 17: 12](R/W) Force local transmitter postcursor.
10682                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
10683                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
10684                                                                  from link partner. */
10685         uint32_t force_loc_tx_cur      : 6;  /**< [ 11:  6](R/W) Force local transmitter cursor.
10686                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
10687                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
10688                                                                  from link partner. */
10689         uint32_t force_loc_txpre_cur   : 6;  /**< [  5:  0](R/W) Force local transmitter precursor.
10690                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
10691                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
10692                                                                  from link partner. */
10693 #else /* Word 0 - Little Endian */
10694         uint32_t force_loc_txpre_cur   : 6;  /**< [  5:  0](R/W) Force local transmitter precursor.
10695                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
10696                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
10697                                                                  from link partner. */
10698         uint32_t force_loc_tx_cur      : 6;  /**< [ 11:  6](R/W) Force local transmitter cursor.
10699                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
10700                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
10701                                                                  from link partner. */
10702         uint32_t force_loc_txpost_cur  : 6;  /**< [ 17: 12](R/W) Force local transmitter postcursor.
10703                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
10704                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
10705                                                                  from link partner. */
10706         uint32_t force_loc_rxhint      : 3;  /**< [ 20: 18](R/W) Force local receiver preset hint.
10707                                                                  Indicates the RxPresetHint value of EQ slave (DSP in EQ
10708                                                                  Phase2/USP in EQ Phase3), instead of received or set value. */
10709         uint32_t reserved_21_23        : 3;
10710         uint32_t force_loc_txpre       : 4;  /**< [ 27: 24](R/W) Force local transmitter preset.
10711                                                                  Indicates initial preset value of USP in EQ slave (EQ Phase2)
10712                                                                  instead of receiving EQ TS2. */
10713         uint32_t force_loc_txcoef_en   : 1;  /**< [ 28: 28](R/W) Force local transmitter coefficient enable.
10714                                                                  Enables the following fields:
10715                                                                  FORCE_LOCAL_TX_PRE_CURSOR.
10716                                                                  FORCE_LOCAL_TX_CURSOR.
10717                                                                  FORCE_LOCAL_TX_POST_CURSOR. */
10718         uint32_t force_loc_rxhint_en   : 1;  /**< [ 29: 29](R/W) Force local receiver preset hint enable.
10719                                                                  Enables the FORCE_LOCAL_RX_HINT field. */
10720         uint32_t force_loc_txpre_en    : 1;  /**< [ 30: 30](R/W) Force local transmitter preset enable.
10721                                                                  Enables the FORCE_LOCAL_TX_PRESET field. */
10722         uint32_t reserved_31           : 1;
10723 #endif /* Word 0 - End */
10724     } s;
10725     /* struct bdk_pciercx_cfg162_s cn; */
10726 };
10727 typedef union bdk_pciercx_cfg162 bdk_pciercx_cfg162_t;
10728 
10729 static inline uint64_t BDK_PCIERCX_CFG162(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG162(unsigned long a)10730 static inline uint64_t BDK_PCIERCX_CFG162(unsigned long a)
10731 {
10732     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10733         return 0x2000000028cll + 0x100000000ll * ((a) & 0x3);
10734     __bdk_csr_fatal("PCIERCX_CFG162", 1, a, 0, 0, 0);
10735 }
10736 
10737 #define typedef_BDK_PCIERCX_CFG162(a) bdk_pciercx_cfg162_t
10738 #define bustype_BDK_PCIERCX_CFG162(a) BDK_CSR_TYPE_PCICONFIGRC
10739 #define basename_BDK_PCIERCX_CFG162(a) "PCIERCX_CFG162"
10740 #define busnum_BDK_PCIERCX_CFG162(a) (a)
10741 #define arguments_BDK_PCIERCX_CFG162(a) (a),-1,-1,-1
10742 
10743 /**
10744  * Register (PCICONFIGRC) pcierc#_cfg163
10745  *
10746  * PCIe RC Vendor RAS DES Silicon Debug EQ Control 3 Register
10747  * This register contains the one hundred sixty-forth 32-bits of PCIe type 0 configuration space.
10748  */
10749 union bdk_pciercx_cfg163
10750 {
10751     uint32_t u;
10752     struct bdk_pciercx_cfg163_s
10753     {
10754 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10755         uint32_t reserved_29_31        : 3;
10756         uint32_t force_rem_txcoef_en   : 1;  /**< [ 28: 28](R/W) Force remote transmitter coefficient enable as selected by
10757                                                                  PCIERC()_CFG161[EQ_LANE_SEL][RATE_SEL].
10758                                                                  Enables the following fields:
10759                                                                  FORCE_REMOTE_TX_PRE_CURSOR
10760                                                                  FORCE_REMOTE_TX_CURSOR
10761                                                                  FORCE_REMOTE_TX_POST_CURSOR */
10762         uint32_t reserved_18_27        : 10;
10763         uint32_t force_rem_txpost_cur  : 6;  /**< [ 17: 12](R/W) Force remote transmitter postcursor as selected by
10764                                                                  PCIERC()_CFG161[EQ_LANE_SEL][RATE_SEL].
10765                                                                  Indicates the coefficient value of EQ master (DSP in EQ
10766                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
10767                                                                  from link partner. */
10768         uint32_t force_rem_tx_cur      : 6;  /**< [ 11:  6](R/W) Force remote transmitter cursors selected by
10769                                                                  PCIERC()_CFG161[EQ_LANE_SEL][RATE_SEL].
10770                                                                  Indicates the coefficient value of EQ master (DSP in EQ
10771                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
10772                                                                  from link partner. */
10773         uint32_t force_rem_txpre_cur   : 6;  /**< [  5:  0](RAZ) Force remote transmitter precursors selected by
10774                                                                  PCIERC()_CFG161[EQ_LANE_SEL][RATE_SEL].
10775                                                                  Indicates the coefficient value of EQ master (DSP in EQ
10776                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
10777                                                                  from link partner. */
10778 #else /* Word 0 - Little Endian */
10779         uint32_t force_rem_txpre_cur   : 6;  /**< [  5:  0](RAZ) Force remote transmitter precursors selected by
10780                                                                  PCIERC()_CFG161[EQ_LANE_SEL][RATE_SEL].
10781                                                                  Indicates the coefficient value of EQ master (DSP in EQ
10782                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
10783                                                                  from link partner. */
10784         uint32_t force_rem_tx_cur      : 6;  /**< [ 11:  6](R/W) Force remote transmitter cursors selected by
10785                                                                  PCIERC()_CFG161[EQ_LANE_SEL][RATE_SEL].
10786                                                                  Indicates the coefficient value of EQ master (DSP in EQ
10787                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
10788                                                                  from link partner. */
10789         uint32_t force_rem_txpost_cur  : 6;  /**< [ 17: 12](R/W) Force remote transmitter postcursor as selected by
10790                                                                  PCIERC()_CFG161[EQ_LANE_SEL][RATE_SEL].
10791                                                                  Indicates the coefficient value of EQ master (DSP in EQ
10792                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
10793                                                                  from link partner. */
10794         uint32_t reserved_18_27        : 10;
10795         uint32_t force_rem_txcoef_en   : 1;  /**< [ 28: 28](R/W) Force remote transmitter coefficient enable as selected by
10796                                                                  PCIERC()_CFG161[EQ_LANE_SEL][RATE_SEL].
10797                                                                  Enables the following fields:
10798                                                                  FORCE_REMOTE_TX_PRE_CURSOR
10799                                                                  FORCE_REMOTE_TX_CURSOR
10800                                                                  FORCE_REMOTE_TX_POST_CURSOR */
10801         uint32_t reserved_29_31        : 3;
10802 #endif /* Word 0 - End */
10803     } s;
10804     /* struct bdk_pciercx_cfg163_s cn; */
10805 };
10806 typedef union bdk_pciercx_cfg163 bdk_pciercx_cfg163_t;
10807 
10808 static inline uint64_t BDK_PCIERCX_CFG163(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG163(unsigned long a)10809 static inline uint64_t BDK_PCIERCX_CFG163(unsigned long a)
10810 {
10811     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10812         return 0x20000000290ll + 0x100000000ll * ((a) & 0x3);
10813     __bdk_csr_fatal("PCIERCX_CFG163", 1, a, 0, 0, 0);
10814 }
10815 
10816 #define typedef_BDK_PCIERCX_CFG163(a) bdk_pciercx_cfg163_t
10817 #define bustype_BDK_PCIERCX_CFG163(a) BDK_CSR_TYPE_PCICONFIGRC
10818 #define basename_BDK_PCIERCX_CFG163(a) "PCIERCX_CFG163"
10819 #define busnum_BDK_PCIERCX_CFG163(a) (a)
10820 #define arguments_BDK_PCIERCX_CFG163(a) (a),-1,-1,-1
10821 
10822 /**
10823  * Register (PCICONFIGRC) pcierc#_cfg165
10824  *
10825  * PCIe RC Vendor RAS DES Silicon Debug EQ Status 1 Register
10826  * This register contains the one hundred sixty-sixth 32-bits of PCIe type 0 configuration space.
10827  */
10828 union bdk_pciercx_cfg165
10829 {
10830     uint32_t u;
10831     struct bdk_pciercx_cfg165_s
10832     {
10833 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10834         uint32_t reserved_8_31         : 24;
10835         uint32_t eq_reject_event       : 1;  /**< [  7:  7](RO/H) EQ reject event.
10836                                                                  Indicates that the core receives two consecutive TS1 OS
10837                                                                  w/Reject=1b during EQ master phase (DSP in EQ
10838                                                                  Phase3/USP in EQ Phase2). This bit is automatically cleared
10839                                                                  when the core starts EQ master phase again. */
10840         uint32_t eq_rulec_viol         : 1;  /**< [  6:  6](RO/H) EQ rule C violation.
10841                                                                  Indicates that coefficient rule C violation is detected in the
10842                                                                  values provided by PHY using direction change method
10843                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
10844                                                                  Phase2). The coefficients rule C
10845                                                                  correspond to the rules c) from section "Rules for
10846                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
10847                                                                  This bit is automatically cleared when the controller starts
10848                                                                  EQ Master phase again. */
10849         uint32_t eq_ruleb_viol         : 1;  /**< [  5:  5](RO/H) EQ rule B violation.
10850                                                                  Indicates that coefficients rule B violation is detected in the
10851                                                                  values provided by PHY using direction change method
10852                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
10853                                                                  Phase2). The coefficients rules B
10854                                                                  correspond to the rules b) from section "Rules for
10855                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
10856                                                                  This bit is automatically cleared when the controller starts
10857                                                                  EQ Master phase again. */
10858         uint32_t eq_rulea_viol         : 1;  /**< [  4:  4](RO/H) EQ rule A violation.
10859                                                                  Indicates that coefficients rule A violation is detected in the
10860                                                                  values provided by PHY using direction change method
10861                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
10862                                                                  Phase2).  The coefficients rules A
10863                                                                  correspond to the rules a) from section "Rules for
10864                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
10865                                                                  This bit is automatically cleared when the controller starts
10866                                                                  EQ Master phase again. */
10867         uint32_t reserved_3            : 1;
10868         uint32_t eq_conv_info          : 2;  /**< [  2:  1](RO/H) EQ convergence info.
10869                                                                  Indicates equalization convergence information.
10870                                                                  0x0 = Equalization is not attempted.
10871                                                                  0x1 = Equalization finished successfully.
10872                                                                  0x2 = Equalization finished unsuccessfully.
10873                                                                  0x3 = Reserved.
10874                                                                  This bit is automatically cleared when the core starts EQ
10875                                                                  master phase again. */
10876         uint32_t eq_sequence           : 1;  /**< [  0:  0](RO) EQ sequence.
10877                                                                  Indicates that the core is starting the equalization sequence. */
10878 #else /* Word 0 - Little Endian */
10879         uint32_t eq_sequence           : 1;  /**< [  0:  0](RO) EQ sequence.
10880                                                                  Indicates that the core is starting the equalization sequence. */
10881         uint32_t eq_conv_info          : 2;  /**< [  2:  1](RO/H) EQ convergence info.
10882                                                                  Indicates equalization convergence information.
10883                                                                  0x0 = Equalization is not attempted.
10884                                                                  0x1 = Equalization finished successfully.
10885                                                                  0x2 = Equalization finished unsuccessfully.
10886                                                                  0x3 = Reserved.
10887                                                                  This bit is automatically cleared when the core starts EQ
10888                                                                  master phase again. */
10889         uint32_t reserved_3            : 1;
10890         uint32_t eq_rulea_viol         : 1;  /**< [  4:  4](RO/H) EQ rule A violation.
10891                                                                  Indicates that coefficients rule A violation is detected in the
10892                                                                  values provided by PHY using direction change method
10893                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
10894                                                                  Phase2).  The coefficients rules A
10895                                                                  correspond to the rules a) from section "Rules for
10896                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
10897                                                                  This bit is automatically cleared when the controller starts
10898                                                                  EQ Master phase again. */
10899         uint32_t eq_ruleb_viol         : 1;  /**< [  5:  5](RO/H) EQ rule B violation.
10900                                                                  Indicates that coefficients rule B violation is detected in the
10901                                                                  values provided by PHY using direction change method
10902                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
10903                                                                  Phase2). The coefficients rules B
10904                                                                  correspond to the rules b) from section "Rules for
10905                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
10906                                                                  This bit is automatically cleared when the controller starts
10907                                                                  EQ Master phase again. */
10908         uint32_t eq_rulec_viol         : 1;  /**< [  6:  6](RO/H) EQ rule C violation.
10909                                                                  Indicates that coefficient rule C violation is detected in the
10910                                                                  values provided by PHY using direction change method
10911                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
10912                                                                  Phase2). The coefficients rule C
10913                                                                  correspond to the rules c) from section "Rules for
10914                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
10915                                                                  This bit is automatically cleared when the controller starts
10916                                                                  EQ Master phase again. */
10917         uint32_t eq_reject_event       : 1;  /**< [  7:  7](RO/H) EQ reject event.
10918                                                                  Indicates that the core receives two consecutive TS1 OS
10919                                                                  w/Reject=1b during EQ master phase (DSP in EQ
10920                                                                  Phase3/USP in EQ Phase2). This bit is automatically cleared
10921                                                                  when the core starts EQ master phase again. */
10922         uint32_t reserved_8_31         : 24;
10923 #endif /* Word 0 - End */
10924     } s;
10925     /* struct bdk_pciercx_cfg165_s cn; */
10926 };
10927 typedef union bdk_pciercx_cfg165 bdk_pciercx_cfg165_t;
10928 
10929 static inline uint64_t BDK_PCIERCX_CFG165(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG165(unsigned long a)10930 static inline uint64_t BDK_PCIERCX_CFG165(unsigned long a)
10931 {
10932     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10933         return 0x20000000298ll + 0x100000000ll * ((a) & 0x3);
10934     __bdk_csr_fatal("PCIERCX_CFG165", 1, a, 0, 0, 0);
10935 }
10936 
10937 #define typedef_BDK_PCIERCX_CFG165(a) bdk_pciercx_cfg165_t
10938 #define bustype_BDK_PCIERCX_CFG165(a) BDK_CSR_TYPE_PCICONFIGRC
10939 #define basename_BDK_PCIERCX_CFG165(a) "PCIERCX_CFG165"
10940 #define busnum_BDK_PCIERCX_CFG165(a) (a)
10941 #define arguments_BDK_PCIERCX_CFG165(a) (a),-1,-1,-1
10942 
10943 /**
10944  * Register (PCICONFIGRC) pcierc#_cfg166
10945  *
10946  * PCIe RC Vendor RAS DES Silicon Debug EQ Status 2 Register
10947  * This register contains the one hundred sixty-seventh 32-bits of PCIe type 0 configuration space.
10948  */
10949 union bdk_pciercx_cfg166
10950 {
10951     uint32_t u;
10952     struct bdk_pciercx_cfg166_s
10953     {
10954 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
10955         uint32_t eq_loc_fom_val        : 8;  /**< [ 31: 24](RO/H) EQ local figure of merit.
10956                                                                  Indicates local maximum figure of merit value. */
10957         uint32_t reserved_21_23        : 3;
10958         uint32_t eq_loc_rxhint         : 3;  /**< [ 20: 18](RO/H) EQ local receiver preset hint.
10959                                                                  Indicates local receiver preset hint value. */
10960         uint32_t eq_loc_post_cur       : 6;  /**< [ 17: 12](RO/H) EQ local postcursor.
10961                                                                  Indicates local post cursor coefficient value. */
10962         uint32_t eq_loc_cur            : 6;  /**< [ 11:  6](RO/H) EQ local cursor.
10963                                                                  Indicates local cursor coefficient value. */
10964         uint32_t eq_loc_pre_cur        : 6;  /**< [  5:  0](RO/H) EQ local precursor.
10965                                                                  Indicates local precursor coefficient value. */
10966 #else /* Word 0 - Little Endian */
10967         uint32_t eq_loc_pre_cur        : 6;  /**< [  5:  0](RO/H) EQ local precursor.
10968                                                                  Indicates local precursor coefficient value. */
10969         uint32_t eq_loc_cur            : 6;  /**< [ 11:  6](RO/H) EQ local cursor.
10970                                                                  Indicates local cursor coefficient value. */
10971         uint32_t eq_loc_post_cur       : 6;  /**< [ 17: 12](RO/H) EQ local postcursor.
10972                                                                  Indicates local post cursor coefficient value. */
10973         uint32_t eq_loc_rxhint         : 3;  /**< [ 20: 18](RO/H) EQ local receiver preset hint.
10974                                                                  Indicates local receiver preset hint value. */
10975         uint32_t reserved_21_23        : 3;
10976         uint32_t eq_loc_fom_val        : 8;  /**< [ 31: 24](RO/H) EQ local figure of merit.
10977                                                                  Indicates local maximum figure of merit value. */
10978 #endif /* Word 0 - End */
10979     } s;
10980     /* struct bdk_pciercx_cfg166_s cn; */
10981 };
10982 typedef union bdk_pciercx_cfg166 bdk_pciercx_cfg166_t;
10983 
10984 static inline uint64_t BDK_PCIERCX_CFG166(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG166(unsigned long a)10985 static inline uint64_t BDK_PCIERCX_CFG166(unsigned long a)
10986 {
10987     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
10988         return 0x2000000029cll + 0x100000000ll * ((a) & 0x3);
10989     __bdk_csr_fatal("PCIERCX_CFG166", 1, a, 0, 0, 0);
10990 }
10991 
10992 #define typedef_BDK_PCIERCX_CFG166(a) bdk_pciercx_cfg166_t
10993 #define bustype_BDK_PCIERCX_CFG166(a) BDK_CSR_TYPE_PCICONFIGRC
10994 #define basename_BDK_PCIERCX_CFG166(a) "PCIERCX_CFG166"
10995 #define busnum_BDK_PCIERCX_CFG166(a) (a)
10996 #define arguments_BDK_PCIERCX_CFG166(a) (a),-1,-1,-1
10997 
10998 /**
10999  * Register (PCICONFIGRC) pcierc#_cfg167
11000  *
11001  * PCIe RC Vendor RAS DES Silicon Debug EQ Status 3 Register
11002  * This register contains the one hundred sixty-eighth 32-bits of PCIe type 0 configuration space.
11003  */
11004 union bdk_pciercx_cfg167
11005 {
11006     uint32_t u;
11007     struct bdk_pciercx_cfg167_s
11008     {
11009 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11010         uint32_t reserved_30_31        : 2;
11011         uint32_t eq_rem_fs             : 6;  /**< [ 29: 24](RO/H) EQ remote FS.
11012                                                                  Indicates remote FS value. */
11013         uint32_t eq_rem_lf             : 6;  /**< [ 23: 18](RO/H) EQ remote LF.
11014                                                                  Indicates remote LF value. */
11015         uint32_t eq_rem_post_cur       : 6;  /**< [ 17: 12](RO/H) EQ remote postcursor.
11016                                                                  Indicates remote postcursor coefficient value. */
11017         uint32_t eq_rem_cur            : 6;  /**< [ 11:  6](RO/H) EQ remote cursor.
11018                                                                  Indicates remote cursor coefficient value. */
11019         uint32_t eq_rem_pre_cur        : 6;  /**< [  5:  0](RO/H) EQ remote precursor.
11020                                                                  Indicates remote postcursor coefficient value. */
11021 #else /* Word 0 - Little Endian */
11022         uint32_t eq_rem_pre_cur        : 6;  /**< [  5:  0](RO/H) EQ remote precursor.
11023                                                                  Indicates remote postcursor coefficient value. */
11024         uint32_t eq_rem_cur            : 6;  /**< [ 11:  6](RO/H) EQ remote cursor.
11025                                                                  Indicates remote cursor coefficient value. */
11026         uint32_t eq_rem_post_cur       : 6;  /**< [ 17: 12](RO/H) EQ remote postcursor.
11027                                                                  Indicates remote postcursor coefficient value. */
11028         uint32_t eq_rem_lf             : 6;  /**< [ 23: 18](RO/H) EQ remote LF.
11029                                                                  Indicates remote LF value. */
11030         uint32_t eq_rem_fs             : 6;  /**< [ 29: 24](RO/H) EQ remote FS.
11031                                                                  Indicates remote FS value. */
11032         uint32_t reserved_30_31        : 2;
11033 #endif /* Word 0 - End */
11034     } s;
11035     /* struct bdk_pciercx_cfg167_s cn; */
11036 };
11037 typedef union bdk_pciercx_cfg167 bdk_pciercx_cfg167_t;
11038 
11039 static inline uint64_t BDK_PCIERCX_CFG167(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG167(unsigned long a)11040 static inline uint64_t BDK_PCIERCX_CFG167(unsigned long a)
11041 {
11042     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11043         return 0x200000002a0ll + 0x100000000ll * ((a) & 0x3);
11044     __bdk_csr_fatal("PCIERCX_CFG167", 1, a, 0, 0, 0);
11045 }
11046 
11047 #define typedef_BDK_PCIERCX_CFG167(a) bdk_pciercx_cfg167_t
11048 #define bustype_BDK_PCIERCX_CFG167(a) BDK_CSR_TYPE_PCICONFIGRC
11049 #define basename_BDK_PCIERCX_CFG167(a) "PCIERCX_CFG167"
11050 #define busnum_BDK_PCIERCX_CFG167(a) (a)
11051 #define arguments_BDK_PCIERCX_CFG167(a) (a),-1,-1,-1
11052 
11053 /**
11054  * Register (PCICONFIGRC) pcierc#_cfg174
11055  *
11056  * PCIe RC Vendor RAS Data Path Protection Header Register
11057  * This register contains the one hundred seventy-fifth 32-bits of PCIe type 0 configuration space.
11058  */
11059 union bdk_pciercx_cfg174
11060 {
11061     uint32_t u;
11062     struct bdk_pciercx_cfg174_s
11063     {
11064 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11065         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.  Points to the ACS extended capabilities.
11066                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11067         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
11068                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11069         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
11070                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11071 #else /* Word 0 - Little Endian */
11072         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
11073                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11074         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
11075                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11076         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.  Points to the ACS extended capabilities.
11077                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11078 #endif /* Word 0 - End */
11079     } s;
11080     /* struct bdk_pciercx_cfg174_s cn; */
11081 };
11082 typedef union bdk_pciercx_cfg174 bdk_pciercx_cfg174_t;
11083 
11084 static inline uint64_t BDK_PCIERCX_CFG174(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG174(unsigned long a)11085 static inline uint64_t BDK_PCIERCX_CFG174(unsigned long a)
11086 {
11087     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11088         return 0x200000002b8ll + 0x100000000ll * ((a) & 0x3);
11089     __bdk_csr_fatal("PCIERCX_CFG174", 1, a, 0, 0, 0);
11090 }
11091 
11092 #define typedef_BDK_PCIERCX_CFG174(a) bdk_pciercx_cfg174_t
11093 #define bustype_BDK_PCIERCX_CFG174(a) BDK_CSR_TYPE_PCICONFIGRC
11094 #define basename_BDK_PCIERCX_CFG174(a) "PCIERCX_CFG174"
11095 #define busnum_BDK_PCIERCX_CFG174(a) (a)
11096 #define arguments_BDK_PCIERCX_CFG174(a) (a),-1,-1,-1
11097 
11098 /**
11099  * Register (PCICONFIGRC) pcierc#_cfg175
11100  *
11101  * PCIe RC RAS Data Path Extended Capability Register
11102  * This register contains the one hundred seventy-sixth 32-bits of PCIe type 0 configuration space.
11103  */
11104 union bdk_pciercx_cfg175
11105 {
11106     uint32_t u;
11107     struct bdk_pciercx_cfg175_s
11108     {
11109 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11110         uint32_t vsec_length           : 12; /**< [ 31: 20](RO) VSEC length. */
11111         uint32_t vsec_rev              : 4;  /**< [ 19: 16](RO) Capability version. */
11112         uint32_t vsec_id               : 16; /**< [ 15:  0](RO) VSEC ID. */
11113 #else /* Word 0 - Little Endian */
11114         uint32_t vsec_id               : 16; /**< [ 15:  0](RO) VSEC ID. */
11115         uint32_t vsec_rev              : 4;  /**< [ 19: 16](RO) Capability version. */
11116         uint32_t vsec_length           : 12; /**< [ 31: 20](RO) VSEC length. */
11117 #endif /* Word 0 - End */
11118     } s;
11119     /* struct bdk_pciercx_cfg175_s cn; */
11120 };
11121 typedef union bdk_pciercx_cfg175 bdk_pciercx_cfg175_t;
11122 
11123 static inline uint64_t BDK_PCIERCX_CFG175(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG175(unsigned long a)11124 static inline uint64_t BDK_PCIERCX_CFG175(unsigned long a)
11125 {
11126     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11127         return 0x200000002bcll + 0x100000000ll * ((a) & 0x3);
11128     __bdk_csr_fatal("PCIERCX_CFG175", 1, a, 0, 0, 0);
11129 }
11130 
11131 #define typedef_BDK_PCIERCX_CFG175(a) bdk_pciercx_cfg175_t
11132 #define bustype_BDK_PCIERCX_CFG175(a) BDK_CSR_TYPE_PCICONFIGRC
11133 #define basename_BDK_PCIERCX_CFG175(a) "PCIERCX_CFG175"
11134 #define busnum_BDK_PCIERCX_CFG175(a) (a)
11135 #define arguments_BDK_PCIERCX_CFG175(a) (a),-1,-1,-1
11136 
11137 /**
11138  * Register (PCICONFIGRC) pcierc#_cfg176
11139  *
11140  * PCIe RC RAS Data Path Error Protection Control Register
11141  * This register contains the one hundred seventy-seventh 32-bits of PCIe type 0 configuration space.
11142  */
11143 union bdk_pciercx_cfg176
11144 {
11145     uint32_t u;
11146     struct bdk_pciercx_cfg176_s
11147     {
11148 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11149         uint32_t reserved_23_31        : 9;
11150         uint32_t ep_dis_adm_rx         : 1;  /**< [ 22: 22](R/W) Error correction disable for ADM RX path. */
11151         uint32_t ep_dis_l3_rx          : 1;  /**< [ 21: 21](R/W) Error correction disable for layer 3 RX path. */
11152         uint32_t ep_dis_l2_rx          : 1;  /**< [ 20: 20](R/W) Error correction disable for layer 2 RX path. */
11153         uint32_t ep_dis_dma_rd         : 1;  /**< [ 19: 19](R/W) Error correction disable for DMA read (not supported). */
11154         uint32_t ep_dis_axib_inbr      : 1;  /**< [ 18: 18](R/W) Error correction disable for AXI bridge inbound request path (not supported). */
11155         uint32_t ep_dis_axib_inbc      : 1;  /**< [ 17: 17](R/W) Error correction disable for AXI bridge inbound completion composer (not supported). */
11156         uint32_t ep_dis_rx             : 1;  /**< [ 16: 16](R/W) Global error correction disable for all RX layers. */
11157         uint32_t reserved_7_15         : 9;
11158         uint32_t ep_dis_adm_tx         : 1;  /**< [  6:  6](R/W) Error correction disable for ADM TX path. */
11159         uint32_t ep_dis_l3_tx          : 1;  /**< [  5:  5](R/W) Error correction disable for layer 3 TX path. */
11160         uint32_t ep_dis_l2_tx          : 1;  /**< [  4:  4](R/W) Error correction disable for layer 2 TX path. */
11161         uint32_t ep_dis_dma_wr         : 1;  /**< [  3:  3](R/W) Error correction disable for DMA write (not supported). */
11162         uint32_t ep_dis_axib_outb      : 1;  /**< [  2:  2](R/W) Error correction disable for AXI bridge outbound request path (not supported). */
11163         uint32_t ep_dis_axib_masc      : 1;  /**< [  1:  1](R/W) Error correction disable for AXI bridge master completion buffer (not supported). */
11164         uint32_t ep_dis_tx             : 1;  /**< [  0:  0](R/W) Global error correction disable for all TX layers. */
11165 #else /* Word 0 - Little Endian */
11166         uint32_t ep_dis_tx             : 1;  /**< [  0:  0](R/W) Global error correction disable for all TX layers. */
11167         uint32_t ep_dis_axib_masc      : 1;  /**< [  1:  1](R/W) Error correction disable for AXI bridge master completion buffer (not supported). */
11168         uint32_t ep_dis_axib_outb      : 1;  /**< [  2:  2](R/W) Error correction disable for AXI bridge outbound request path (not supported). */
11169         uint32_t ep_dis_dma_wr         : 1;  /**< [  3:  3](R/W) Error correction disable for DMA write (not supported). */
11170         uint32_t ep_dis_l2_tx          : 1;  /**< [  4:  4](R/W) Error correction disable for layer 2 TX path. */
11171         uint32_t ep_dis_l3_tx          : 1;  /**< [  5:  5](R/W) Error correction disable for layer 3 TX path. */
11172         uint32_t ep_dis_adm_tx         : 1;  /**< [  6:  6](R/W) Error correction disable for ADM TX path. */
11173         uint32_t reserved_7_15         : 9;
11174         uint32_t ep_dis_rx             : 1;  /**< [ 16: 16](R/W) Global error correction disable for all RX layers. */
11175         uint32_t ep_dis_axib_inbc      : 1;  /**< [ 17: 17](R/W) Error correction disable for AXI bridge inbound completion composer (not supported). */
11176         uint32_t ep_dis_axib_inbr      : 1;  /**< [ 18: 18](R/W) Error correction disable for AXI bridge inbound request path (not supported). */
11177         uint32_t ep_dis_dma_rd         : 1;  /**< [ 19: 19](R/W) Error correction disable for DMA read (not supported). */
11178         uint32_t ep_dis_l2_rx          : 1;  /**< [ 20: 20](R/W) Error correction disable for layer 2 RX path. */
11179         uint32_t ep_dis_l3_rx          : 1;  /**< [ 21: 21](R/W) Error correction disable for layer 3 RX path. */
11180         uint32_t ep_dis_adm_rx         : 1;  /**< [ 22: 22](R/W) Error correction disable for ADM RX path. */
11181         uint32_t reserved_23_31        : 9;
11182 #endif /* Word 0 - End */
11183     } s;
11184     /* struct bdk_pciercx_cfg176_s cn; */
11185 };
11186 typedef union bdk_pciercx_cfg176 bdk_pciercx_cfg176_t;
11187 
11188 static inline uint64_t BDK_PCIERCX_CFG176(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG176(unsigned long a)11189 static inline uint64_t BDK_PCIERCX_CFG176(unsigned long a)
11190 {
11191     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11192         return 0x200000002c0ll + 0x100000000ll * ((a) & 0x3);
11193     __bdk_csr_fatal("PCIERCX_CFG176", 1, a, 0, 0, 0);
11194 }
11195 
11196 #define typedef_BDK_PCIERCX_CFG176(a) bdk_pciercx_cfg176_t
11197 #define bustype_BDK_PCIERCX_CFG176(a) BDK_CSR_TYPE_PCICONFIGRC
11198 #define basename_BDK_PCIERCX_CFG176(a) "PCIERCX_CFG176"
11199 #define busnum_BDK_PCIERCX_CFG176(a) (a)
11200 #define arguments_BDK_PCIERCX_CFG176(a) (a),-1,-1,-1
11201 
11202 /**
11203  * Register (PCICONFIGRC) pcierc#_cfg177
11204  *
11205  * PCIe RC RAS Data Path Correctable Error Control Register
11206  * This register contains the one hundred seventy-eighth 32-bits of PCIe type 0 configuration space.
11207  */
11208 union bdk_pciercx_cfg177
11209 {
11210     uint32_t u;
11211     struct bdk_pciercx_cfg177_s
11212     {
11213 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11214         uint32_t corr_cnt_sel          : 8;  /**< [ 31: 24](R/W) Counter selection.  This field selects the counter ID (within
11215                                                                  the region defined by CORR_CNT_SEL_REG) whose contents
11216                                                                  can be read from the CFG114 register.  You can
11217                                                                  cycle this field value from 0 to 255 to access all counters. */
11218         uint32_t corr_cnt_sel_reg      : 4;  /**< [ 23: 20](R/W) Selected correctable counter region.
11219                                                                  0x0 = ADM RX path.
11220                                                                  0x1 = Layer 3 RX path.
11221                                                                  0x2 = Layer 2 RX path.
11222                                                                  0x3 = DMA read engine inbound (not supported).
11223                                                                  0x4 = AXI bridge inbound request path (not supported).
11224                                                                  0x5 = AXI bridge inbound completion composer (not supported).
11225                                                                  0x6 = ADM TX path.
11226                                                                  0x7 = Layer 3 TX path.
11227                                                                  0x8 = Layer 2 TX path.
11228                                                                  0x9 = DMA outbound path (not supported).
11229                                                                  0xA = AXI bridge outbound request path (not supported).
11230                                                                  0xB = AXI bridge outbound master completion buffer path (not supported).
11231                                                                  0xC - 0xF = Reserved. */
11232         uint32_t reserved_5_19         : 15;
11233         uint32_t corr_en_cntrs         : 1;  /**< [  4:  4](R/W) Error correction disable for ADM RX path. */
11234         uint32_t reserved_1_3          : 3;
11235         uint32_t ep_dis_l3_rx          : 1;  /**< [  0:  0](R/W1C) Clears all correctable error counters. */
11236 #else /* Word 0 - Little Endian */
11237         uint32_t ep_dis_l3_rx          : 1;  /**< [  0:  0](R/W1C) Clears all correctable error counters. */
11238         uint32_t reserved_1_3          : 3;
11239         uint32_t corr_en_cntrs         : 1;  /**< [  4:  4](R/W) Error correction disable for ADM RX path. */
11240         uint32_t reserved_5_19         : 15;
11241         uint32_t corr_cnt_sel_reg      : 4;  /**< [ 23: 20](R/W) Selected correctable counter region.
11242                                                                  0x0 = ADM RX path.
11243                                                                  0x1 = Layer 3 RX path.
11244                                                                  0x2 = Layer 2 RX path.
11245                                                                  0x3 = DMA read engine inbound (not supported).
11246                                                                  0x4 = AXI bridge inbound request path (not supported).
11247                                                                  0x5 = AXI bridge inbound completion composer (not supported).
11248                                                                  0x6 = ADM TX path.
11249                                                                  0x7 = Layer 3 TX path.
11250                                                                  0x8 = Layer 2 TX path.
11251                                                                  0x9 = DMA outbound path (not supported).
11252                                                                  0xA = AXI bridge outbound request path (not supported).
11253                                                                  0xB = AXI bridge outbound master completion buffer path (not supported).
11254                                                                  0xC - 0xF = Reserved. */
11255         uint32_t corr_cnt_sel          : 8;  /**< [ 31: 24](R/W) Counter selection.  This field selects the counter ID (within
11256                                                                  the region defined by CORR_CNT_SEL_REG) whose contents
11257                                                                  can be read from the CFG114 register.  You can
11258                                                                  cycle this field value from 0 to 255 to access all counters. */
11259 #endif /* Word 0 - End */
11260     } s;
11261     /* struct bdk_pciercx_cfg177_s cn; */
11262 };
11263 typedef union bdk_pciercx_cfg177 bdk_pciercx_cfg177_t;
11264 
11265 static inline uint64_t BDK_PCIERCX_CFG177(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG177(unsigned long a)11266 static inline uint64_t BDK_PCIERCX_CFG177(unsigned long a)
11267 {
11268     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11269         return 0x200000002c4ll + 0x100000000ll * ((a) & 0x3);
11270     __bdk_csr_fatal("PCIERCX_CFG177", 1, a, 0, 0, 0);
11271 }
11272 
11273 #define typedef_BDK_PCIERCX_CFG177(a) bdk_pciercx_cfg177_t
11274 #define bustype_BDK_PCIERCX_CFG177(a) BDK_CSR_TYPE_PCICONFIGRC
11275 #define basename_BDK_PCIERCX_CFG177(a) "PCIERCX_CFG177"
11276 #define busnum_BDK_PCIERCX_CFG177(a) (a)
11277 #define arguments_BDK_PCIERCX_CFG177(a) (a),-1,-1,-1
11278 
11279 /**
11280  * Register (PCICONFIGRC) pcierc#_cfg178
11281  *
11282  * PCIe RC RAS Data Path Correctable Error Report Register
11283  * This register contains the one hundred seventy-ninth 32-bits of PCIe type 0 configuration space.
11284  */
11285 union bdk_pciercx_cfg178
11286 {
11287     uint32_t u;
11288     struct bdk_pciercx_cfg178_s
11289     {
11290 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11291         uint32_t corr_cnt_sel          : 8;  /**< [ 31: 24](RO/H) Counter selection.  Returns the value set in the CFG113CORR_CNT_SEL] register. */
11292         uint32_t corr_cnt_sel_reg      : 4;  /**< [ 23: 20](RO/H) Selected correctable counter region.
11293                                                                  0x0 = ADM RX path.
11294                                                                  0x1 = Layer 3 RX path.
11295                                                                  0x2 = Layer 2 RX path.
11296                                                                  0x3 = DMA inbound path (not supported).
11297                                                                  0x4 = AXI bridge inbound request path (not supported).
11298                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11299                                                                  0x6 = ADM TX path.
11300                                                                  0x7 = Layer 3 TX path.
11301                                                                  0x8 = Layer 2 TX path.
11302                                                                  0x9 = DMA outbound path (not supported).
11303                                                                  0xA = AXI bridge outbound request path (not supported).
11304                                                                  0xB = AXI bridge outbound master completion (not supported).
11305                                                                  0xC - 0xF = Reserved. */
11306         uint32_t reserved_8_19         : 12;
11307         uint32_t corr_count            : 8;  /**< [  7:  0](RO) Current corrected count for the selected counter. */
11308 #else /* Word 0 - Little Endian */
11309         uint32_t corr_count            : 8;  /**< [  7:  0](RO) Current corrected count for the selected counter. */
11310         uint32_t reserved_8_19         : 12;
11311         uint32_t corr_cnt_sel_reg      : 4;  /**< [ 23: 20](RO/H) Selected correctable counter region.
11312                                                                  0x0 = ADM RX path.
11313                                                                  0x1 = Layer 3 RX path.
11314                                                                  0x2 = Layer 2 RX path.
11315                                                                  0x3 = DMA inbound path (not supported).
11316                                                                  0x4 = AXI bridge inbound request path (not supported).
11317                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11318                                                                  0x6 = ADM TX path.
11319                                                                  0x7 = Layer 3 TX path.
11320                                                                  0x8 = Layer 2 TX path.
11321                                                                  0x9 = DMA outbound path (not supported).
11322                                                                  0xA = AXI bridge outbound request path (not supported).
11323                                                                  0xB = AXI bridge outbound master completion (not supported).
11324                                                                  0xC - 0xF = Reserved. */
11325         uint32_t corr_cnt_sel          : 8;  /**< [ 31: 24](RO/H) Counter selection.  Returns the value set in the CFG113CORR_CNT_SEL] register. */
11326 #endif /* Word 0 - End */
11327     } s;
11328     /* struct bdk_pciercx_cfg178_s cn; */
11329 };
11330 typedef union bdk_pciercx_cfg178 bdk_pciercx_cfg178_t;
11331 
11332 static inline uint64_t BDK_PCIERCX_CFG178(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG178(unsigned long a)11333 static inline uint64_t BDK_PCIERCX_CFG178(unsigned long a)
11334 {
11335     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11336         return 0x200000002c8ll + 0x100000000ll * ((a) & 0x3);
11337     __bdk_csr_fatal("PCIERCX_CFG178", 1, a, 0, 0, 0);
11338 }
11339 
11340 #define typedef_BDK_PCIERCX_CFG178(a) bdk_pciercx_cfg178_t
11341 #define bustype_BDK_PCIERCX_CFG178(a) BDK_CSR_TYPE_PCICONFIGRC
11342 #define basename_BDK_PCIERCX_CFG178(a) "PCIERCX_CFG178"
11343 #define busnum_BDK_PCIERCX_CFG178(a) (a)
11344 #define arguments_BDK_PCIERCX_CFG178(a) (a),-1,-1,-1
11345 
11346 /**
11347  * Register (PCICONFIGRC) pcierc#_cfg179
11348  *
11349  * PCIe RC RAS Data Path Uncorrectable Error Control Register
11350  * This register contains the one hundred eighty 32-bits of PCIe type 0 configuration space.
11351  */
11352 union bdk_pciercx_cfg179
11353 {
11354     uint32_t u;
11355     struct bdk_pciercx_cfg179_s
11356     {
11357 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11358         uint32_t ucorr_cnt_sel         : 8;  /**< [ 31: 24](R/W) Counter selection.  This field selects the counter ID (within
11359                                                                  the region defined by [UCORR_CNT_SEL_REG]) whose contents
11360                                                                  can be read from the CFG114 register.  You can
11361                                                                  cycle this field value from 0 to 255 to access all counters. */
11362         uint32_t ucorr_cnt_sel_reg     : 4;  /**< [ 23: 20](R/W) Selected correctable counter region.
11363                                                                  Selected correctable counter region.
11364                                                                  0x0 = ADM RX path.
11365                                                                  0x1 = Layer 3 RX path.
11366                                                                  0x2 = Layer 2 RX path.
11367                                                                  0x3 = DMA inbound path (not supported).
11368                                                                  0x4 = AXI bridge inbound request path (not supported).
11369                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11370                                                                  0x6 = ADM TX path.
11371                                                                  0x7 = Layer 3 TX path.
11372                                                                  0x8 = Layer 2 TX path.
11373                                                                  0x9 = DMA outbound path (not supported).
11374                                                                  0xA = AXI bridge outbound request path (not supported).
11375                                                                  0xB = AXI bridge outbound master completion path (not supported).
11376                                                                  0xC - 0xF = Reserved. */
11377         uint32_t reserved_5_19         : 15;
11378         uint32_t ucorr_en_cntrs        : 1;  /**< [  4:  4](R/W) Error correction disable for ADM RX path. */
11379         uint32_t reserved_1_3          : 3;
11380         uint32_t ep_dis_l3_rx          : 1;  /**< [  0:  0](R/W1C) Clears all uncorrectable error counters. */
11381 #else /* Word 0 - Little Endian */
11382         uint32_t ep_dis_l3_rx          : 1;  /**< [  0:  0](R/W1C) Clears all uncorrectable error counters. */
11383         uint32_t reserved_1_3          : 3;
11384         uint32_t ucorr_en_cntrs        : 1;  /**< [  4:  4](R/W) Error correction disable for ADM RX path. */
11385         uint32_t reserved_5_19         : 15;
11386         uint32_t ucorr_cnt_sel_reg     : 4;  /**< [ 23: 20](R/W) Selected correctable counter region.
11387                                                                  Selected correctable counter region.
11388                                                                  0x0 = ADM RX path.
11389                                                                  0x1 = Layer 3 RX path.
11390                                                                  0x2 = Layer 2 RX path.
11391                                                                  0x3 = DMA inbound path (not supported).
11392                                                                  0x4 = AXI bridge inbound request path (not supported).
11393                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11394                                                                  0x6 = ADM TX path.
11395                                                                  0x7 = Layer 3 TX path.
11396                                                                  0x8 = Layer 2 TX path.
11397                                                                  0x9 = DMA outbound path (not supported).
11398                                                                  0xA = AXI bridge outbound request path (not supported).
11399                                                                  0xB = AXI bridge outbound master completion path (not supported).
11400                                                                  0xC - 0xF = Reserved. */
11401         uint32_t ucorr_cnt_sel         : 8;  /**< [ 31: 24](R/W) Counter selection.  This field selects the counter ID (within
11402                                                                  the region defined by [UCORR_CNT_SEL_REG]) whose contents
11403                                                                  can be read from the CFG114 register.  You can
11404                                                                  cycle this field value from 0 to 255 to access all counters. */
11405 #endif /* Word 0 - End */
11406     } s;
11407     /* struct bdk_pciercx_cfg179_s cn; */
11408 };
11409 typedef union bdk_pciercx_cfg179 bdk_pciercx_cfg179_t;
11410 
11411 static inline uint64_t BDK_PCIERCX_CFG179(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG179(unsigned long a)11412 static inline uint64_t BDK_PCIERCX_CFG179(unsigned long a)
11413 {
11414     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11415         return 0x200000002ccll + 0x100000000ll * ((a) & 0x3);
11416     __bdk_csr_fatal("PCIERCX_CFG179", 1, a, 0, 0, 0);
11417 }
11418 
11419 #define typedef_BDK_PCIERCX_CFG179(a) bdk_pciercx_cfg179_t
11420 #define bustype_BDK_PCIERCX_CFG179(a) BDK_CSR_TYPE_PCICONFIGRC
11421 #define basename_BDK_PCIERCX_CFG179(a) "PCIERCX_CFG179"
11422 #define busnum_BDK_PCIERCX_CFG179(a) (a)
11423 #define arguments_BDK_PCIERCX_CFG179(a) (a),-1,-1,-1
11424 
11425 /**
11426  * Register (PCICONFIGRC) pcierc#_cfg180
11427  *
11428  * PCIe RC RAS Data Path Uncorrectable Error Report Register
11429  * This register contains the one hundred eighty-first 32-bits of PCIe type 0 configuration space.
11430  */
11431 union bdk_pciercx_cfg180
11432 {
11433     uint32_t u;
11434     struct bdk_pciercx_cfg180_s
11435     {
11436 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11437         uint32_t ucorr_cnt_sel         : 8;  /**< [ 31: 24](RO/H) Counter selection.  Returns the value set in the CFG113[ORR_CNT_SEL] register. */
11438         uint32_t ucorr_cnt_sel_reg     : 4;  /**< [ 23: 20](RO/H) Selected correctable counter region.
11439                                                                  0x0 = ADM RX path.
11440                                                                  0x1 = Layer 3 RX path.
11441                                                                  0x2 = Layer 2 RX path.
11442                                                                  0x3 = DMA inbound path (not supported).
11443                                                                  0x4 = AXI bridge inbound request path (not supported).
11444                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11445                                                                  0x6 = ADM TX path.
11446                                                                  0x7 = Layer 3 TX path.
11447                                                                  0x8 = Layer 2 TX path.
11448                                                                  0x9 = DMA outbound path (not supported).
11449                                                                  0xA = AXI bridge outbound request path (not supported).
11450                                                                  0xB = AXI bridge outbound master completion buffer path (not supported).
11451                                                                  0xC - 0xF = Reserved. */
11452         uint32_t reserved_8_19         : 12;
11453         uint32_t ucorr_count           : 8;  /**< [  7:  0](RO) Current uncorrected count for the selected counter. */
11454 #else /* Word 0 - Little Endian */
11455         uint32_t ucorr_count           : 8;  /**< [  7:  0](RO) Current uncorrected count for the selected counter. */
11456         uint32_t reserved_8_19         : 12;
11457         uint32_t ucorr_cnt_sel_reg     : 4;  /**< [ 23: 20](RO/H) Selected correctable counter region.
11458                                                                  0x0 = ADM RX path.
11459                                                                  0x1 = Layer 3 RX path.
11460                                                                  0x2 = Layer 2 RX path.
11461                                                                  0x3 = DMA inbound path (not supported).
11462                                                                  0x4 = AXI bridge inbound request path (not supported).
11463                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11464                                                                  0x6 = ADM TX path.
11465                                                                  0x7 = Layer 3 TX path.
11466                                                                  0x8 = Layer 2 TX path.
11467                                                                  0x9 = DMA outbound path (not supported).
11468                                                                  0xA = AXI bridge outbound request path (not supported).
11469                                                                  0xB = AXI bridge outbound master completion buffer path (not supported).
11470                                                                  0xC - 0xF = Reserved. */
11471         uint32_t ucorr_cnt_sel         : 8;  /**< [ 31: 24](RO/H) Counter selection.  Returns the value set in the CFG113[ORR_CNT_SEL] register. */
11472 #endif /* Word 0 - End */
11473     } s;
11474     /* struct bdk_pciercx_cfg180_s cn; */
11475 };
11476 typedef union bdk_pciercx_cfg180 bdk_pciercx_cfg180_t;
11477 
11478 static inline uint64_t BDK_PCIERCX_CFG180(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG180(unsigned long a)11479 static inline uint64_t BDK_PCIERCX_CFG180(unsigned long a)
11480 {
11481     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11482         return 0x200000002d0ll + 0x100000000ll * ((a) & 0x3);
11483     __bdk_csr_fatal("PCIERCX_CFG180", 1, a, 0, 0, 0);
11484 }
11485 
11486 #define typedef_BDK_PCIERCX_CFG180(a) bdk_pciercx_cfg180_t
11487 #define bustype_BDK_PCIERCX_CFG180(a) BDK_CSR_TYPE_PCICONFIGRC
11488 #define basename_BDK_PCIERCX_CFG180(a) "PCIERCX_CFG180"
11489 #define busnum_BDK_PCIERCX_CFG180(a) (a)
11490 #define arguments_BDK_PCIERCX_CFG180(a) (a),-1,-1,-1
11491 
11492 /**
11493  * Register (PCICONFIGRC) pcierc#_cfg181
11494  *
11495  * PCIe RC RAS Data Correctable Error Injection Control Register
11496  * This register contains the one hundred eighty-second 32-bits of PCIe type 0 configuration space.
11497  */
11498 union bdk_pciercx_cfg181
11499 {
11500     uint32_t u;
11501     struct bdk_pciercx_cfg181_s
11502     {
11503 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11504         uint32_t reserved_24_31        : 8;
11505         uint32_t err_inj_loc           : 8;  /**< [ 23: 16](R/W) Error injection location.  Selects where error injection takes place.  You
11506                                                                  can cycle this field value from 0 to 255 to access all locations. */
11507         uint32_t err_inj_cnt           : 8;  /**< [ 15:  8](R/W) Error injection count.
11508                                                                  0x0 = errors are injected in every TLP until [ERR_INJ_EN] is cleared.
11509                                                                  0x1 - 0xFF = number of errors injected. */
11510         uint32_t reserved_6_7          : 2;
11511         uint32_t err_inj_type          : 2;  /**< [  5:  4](R/W) Error injection type.
11512                                                                  0x0 = None.
11513                                                                  0x1 = 1-bit.
11514                                                                  0x2 = 2-bit.
11515                                                                  0x3 = Reserved. */
11516         uint32_t reserved_1_3          : 3;
11517         uint32_t err_inj_en            : 1;  /**< [  0:  0](R/W) Error injection global enable.  When set, enables the error
11518                                                                  insertion logic. */
11519 #else /* Word 0 - Little Endian */
11520         uint32_t err_inj_en            : 1;  /**< [  0:  0](R/W) Error injection global enable.  When set, enables the error
11521                                                                  insertion logic. */
11522         uint32_t reserved_1_3          : 3;
11523         uint32_t err_inj_type          : 2;  /**< [  5:  4](R/W) Error injection type.
11524                                                                  0x0 = None.
11525                                                                  0x1 = 1-bit.
11526                                                                  0x2 = 2-bit.
11527                                                                  0x3 = Reserved. */
11528         uint32_t reserved_6_7          : 2;
11529         uint32_t err_inj_cnt           : 8;  /**< [ 15:  8](R/W) Error injection count.
11530                                                                  0x0 = errors are injected in every TLP until [ERR_INJ_EN] is cleared.
11531                                                                  0x1 - 0xFF = number of errors injected. */
11532         uint32_t err_inj_loc           : 8;  /**< [ 23: 16](R/W) Error injection location.  Selects where error injection takes place.  You
11533                                                                  can cycle this field value from 0 to 255 to access all locations. */
11534         uint32_t reserved_24_31        : 8;
11535 #endif /* Word 0 - End */
11536     } s;
11537     /* struct bdk_pciercx_cfg181_s cn; */
11538 };
11539 typedef union bdk_pciercx_cfg181 bdk_pciercx_cfg181_t;
11540 
11541 static inline uint64_t BDK_PCIERCX_CFG181(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG181(unsigned long a)11542 static inline uint64_t BDK_PCIERCX_CFG181(unsigned long a)
11543 {
11544     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11545         return 0x200000002d4ll + 0x100000000ll * ((a) & 0x3);
11546     __bdk_csr_fatal("PCIERCX_CFG181", 1, a, 0, 0, 0);
11547 }
11548 
11549 #define typedef_BDK_PCIERCX_CFG181(a) bdk_pciercx_cfg181_t
11550 #define bustype_BDK_PCIERCX_CFG181(a) BDK_CSR_TYPE_PCICONFIGRC
11551 #define basename_BDK_PCIERCX_CFG181(a) "PCIERCX_CFG181"
11552 #define busnum_BDK_PCIERCX_CFG181(a) (a)
11553 #define arguments_BDK_PCIERCX_CFG181(a) (a),-1,-1,-1
11554 
11555 /**
11556  * Register (PCICONFIGRC) pcierc#_cfg182
11557  *
11558  * PCIe RC RAS Data Correctable Error Location Register
11559  * This register contains the one hundred eighty-third 32-bits of PCIe type 0 configuration space.
11560  */
11561 union bdk_pciercx_cfg182
11562 {
11563     uint32_t u;
11564     struct bdk_pciercx_cfg182_s
11565     {
11566 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11567         uint32_t loc_last_corr_err     : 8;  /**< [ 31: 24](RO) Location/ID of the last corrected error within the region defined by
11568                                                                  [REG_LAST_CORR_ERR]. */
11569         uint32_t reg_last_corr_err     : 4;  /**< [ 23: 20](RO) Region of last corrected error
11570                                                                  0x0 = ADM RX path.
11571                                                                  0x1 = Layer 3 RX path.
11572                                                                  0x2 = Layer 2 RX path.
11573                                                                  0x3 = DMA inbound path (not supported).
11574                                                                  0x4 = AXI bridge inbound request path (not supported).
11575                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11576                                                                  0x6 = ADM TX path.
11577                                                                  0x7 = Layer 3 TX path.
11578                                                                  0x8 = Layer 2 TX path.
11579                                                                  0x9 = DMA outbound path (not supported).
11580                                                                  0xA = AXI bridge outbound request path (not supported).
11581                                                                  0xB = AXI bridge outbound master completion path (not supported).
11582                                                                  0xC - 0xF = Reserved. */
11583         uint32_t reserved_16_19        : 4;
11584         uint32_t loc_first_corr_err    : 8;  /**< [ 15:  8](RO) Location/ID of the first corrected error within the region defined by
11585                                                                  [REG_FIRST_CORR_ERR]. */
11586         uint32_t reg_first_corr_err    : 4;  /**< [  7:  4](RO) Region of first corrected error
11587                                                                  0x0 = ADM RX path.
11588                                                                  0x1 = Layer 3 RX path.
11589                                                                  0x2 = Layer 2 RX path.
11590                                                                  0x3 = DMA read engine (not supported).
11591                                                                  0x4 = AXI bridge inbound request path (not supported).
11592                                                                  0x5 = AXI bridge inbound completion composer (not supported).
11593                                                                  0x6 = ADM TX path.
11594                                                                  0x7 = Layer 3 TX path.
11595                                                                  0x8 = Layer 2 TX path.
11596                                                                  0x9 = DMA write engine (not supported).
11597                                                                  0xA = AXI bridge outbound request path (not supported).
11598                                                                  0xB = AXI bridge outbound master completion (not supported).
11599                                                                  0xC - 0xF = Reserved. */
11600         uint32_t reserved_0_3          : 4;
11601 #else /* Word 0 - Little Endian */
11602         uint32_t reserved_0_3          : 4;
11603         uint32_t reg_first_corr_err    : 4;  /**< [  7:  4](RO) Region of first corrected error
11604                                                                  0x0 = ADM RX path.
11605                                                                  0x1 = Layer 3 RX path.
11606                                                                  0x2 = Layer 2 RX path.
11607                                                                  0x3 = DMA read engine (not supported).
11608                                                                  0x4 = AXI bridge inbound request path (not supported).
11609                                                                  0x5 = AXI bridge inbound completion composer (not supported).
11610                                                                  0x6 = ADM TX path.
11611                                                                  0x7 = Layer 3 TX path.
11612                                                                  0x8 = Layer 2 TX path.
11613                                                                  0x9 = DMA write engine (not supported).
11614                                                                  0xA = AXI bridge outbound request path (not supported).
11615                                                                  0xB = AXI bridge outbound master completion (not supported).
11616                                                                  0xC - 0xF = Reserved. */
11617         uint32_t loc_first_corr_err    : 8;  /**< [ 15:  8](RO) Location/ID of the first corrected error within the region defined by
11618                                                                  [REG_FIRST_CORR_ERR]. */
11619         uint32_t reserved_16_19        : 4;
11620         uint32_t reg_last_corr_err     : 4;  /**< [ 23: 20](RO) Region of last corrected error
11621                                                                  0x0 = ADM RX path.
11622                                                                  0x1 = Layer 3 RX path.
11623                                                                  0x2 = Layer 2 RX path.
11624                                                                  0x3 = DMA inbound path (not supported).
11625                                                                  0x4 = AXI bridge inbound request path (not supported).
11626                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11627                                                                  0x6 = ADM TX path.
11628                                                                  0x7 = Layer 3 TX path.
11629                                                                  0x8 = Layer 2 TX path.
11630                                                                  0x9 = DMA outbound path (not supported).
11631                                                                  0xA = AXI bridge outbound request path (not supported).
11632                                                                  0xB = AXI bridge outbound master completion path (not supported).
11633                                                                  0xC - 0xF = Reserved. */
11634         uint32_t loc_last_corr_err     : 8;  /**< [ 31: 24](RO) Location/ID of the last corrected error within the region defined by
11635                                                                  [REG_LAST_CORR_ERR]. */
11636 #endif /* Word 0 - End */
11637     } s;
11638     /* struct bdk_pciercx_cfg182_s cn; */
11639 };
11640 typedef union bdk_pciercx_cfg182 bdk_pciercx_cfg182_t;
11641 
11642 static inline uint64_t BDK_PCIERCX_CFG182(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG182(unsigned long a)11643 static inline uint64_t BDK_PCIERCX_CFG182(unsigned long a)
11644 {
11645     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11646         return 0x200000002d8ll + 0x100000000ll * ((a) & 0x3);
11647     __bdk_csr_fatal("PCIERCX_CFG182", 1, a, 0, 0, 0);
11648 }
11649 
11650 #define typedef_BDK_PCIERCX_CFG182(a) bdk_pciercx_cfg182_t
11651 #define bustype_BDK_PCIERCX_CFG182(a) BDK_CSR_TYPE_PCICONFIGRC
11652 #define basename_BDK_PCIERCX_CFG182(a) "PCIERCX_CFG182"
11653 #define busnum_BDK_PCIERCX_CFG182(a) (a)
11654 #define arguments_BDK_PCIERCX_CFG182(a) (a),-1,-1,-1
11655 
11656 /**
11657  * Register (PCICONFIGRC) pcierc#_cfg183
11658  *
11659  * PCIe RC RAS Data Uncorrectable Error Location Register
11660  * This register contains the one hundred eighty-fourth 32-bits of PCIe type 0 configuration space.
11661  */
11662 union bdk_pciercx_cfg183
11663 {
11664     uint32_t u;
11665     struct bdk_pciercx_cfg183_s
11666     {
11667 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11668         uint32_t loc_last_ucorr_err    : 8;  /**< [ 31: 24](RO) Location/ID of the last uncorrected error within the region defined by
11669                                                                  [REG_LAST_CORR_ERR]. */
11670         uint32_t reg_last_ucorr_err    : 4;  /**< [ 23: 20](RO) Region of last uncorrected error
11671                                                                  0x0 = ADM RX path.
11672                                                                  0x1 = Layer 3 RX path.
11673                                                                  0x2 = Layer 2 RX path.
11674                                                                  0x3 = DMA inbound path (not supported).
11675                                                                  0x4 = AXI bridge inbound request path (not supported).
11676                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11677                                                                  0x6 = ADM TX path.
11678                                                                  0x7 = Layer 3 TX path.
11679                                                                  0x8 = Layer 2 TX path.
11680                                                                  0x9 = DMA outbound path (not supported).
11681                                                                  0xA = AXI bridge outbound request path (not supported).
11682                                                                  0xB = AXI bridge outbound master completion path (not supported).
11683                                                                  0xC - 0xF = Reserved. */
11684         uint32_t reserved_16_19        : 4;
11685         uint32_t loc_first_ucorr_err   : 8;  /**< [ 15:  8](RO) Location/ID of the first uncorrected error within the region defined by
11686                                                                  REG_FIRST_CORR_ERR. */
11687         uint32_t reg_first_ucorr_err   : 4;  /**< [  7:  4](RO) Region of first uncorrected error
11688                                                                  0x0 = ADM RX path.
11689                                                                  0x1 = Layer 3 RX path.
11690                                                                  0x2 = Layer 2 RX path.
11691                                                                  0x3 = DMA inbound path (not supported).
11692                                                                  0x4 = AXI bridge inbound request path (not supported).
11693                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11694                                                                  0x6 = ADM TX path.
11695                                                                  0x7 = Layer 3 TX path.
11696                                                                  0x8 = Layer 2 TX path.
11697                                                                  0x9 = DMA outbound path (not supported).
11698                                                                  0xA = AXI bridge outbound request path (not supported).
11699                                                                  0xB = AXI bridge outbound master completion path (not supported).
11700                                                                  0xC - 0xF = Reserved. */
11701         uint32_t reserved_0_3          : 4;
11702 #else /* Word 0 - Little Endian */
11703         uint32_t reserved_0_3          : 4;
11704         uint32_t reg_first_ucorr_err   : 4;  /**< [  7:  4](RO) Region of first uncorrected error
11705                                                                  0x0 = ADM RX path.
11706                                                                  0x1 = Layer 3 RX path.
11707                                                                  0x2 = Layer 2 RX path.
11708                                                                  0x3 = DMA inbound path (not supported).
11709                                                                  0x4 = AXI bridge inbound request path (not supported).
11710                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11711                                                                  0x6 = ADM TX path.
11712                                                                  0x7 = Layer 3 TX path.
11713                                                                  0x8 = Layer 2 TX path.
11714                                                                  0x9 = DMA outbound path (not supported).
11715                                                                  0xA = AXI bridge outbound request path (not supported).
11716                                                                  0xB = AXI bridge outbound master completion path (not supported).
11717                                                                  0xC - 0xF = Reserved. */
11718         uint32_t loc_first_ucorr_err   : 8;  /**< [ 15:  8](RO) Location/ID of the first uncorrected error within the region defined by
11719                                                                  REG_FIRST_CORR_ERR. */
11720         uint32_t reserved_16_19        : 4;
11721         uint32_t reg_last_ucorr_err    : 4;  /**< [ 23: 20](RO) Region of last uncorrected error
11722                                                                  0x0 = ADM RX path.
11723                                                                  0x1 = Layer 3 RX path.
11724                                                                  0x2 = Layer 2 RX path.
11725                                                                  0x3 = DMA inbound path (not supported).
11726                                                                  0x4 = AXI bridge inbound request path (not supported).
11727                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
11728                                                                  0x6 = ADM TX path.
11729                                                                  0x7 = Layer 3 TX path.
11730                                                                  0x8 = Layer 2 TX path.
11731                                                                  0x9 = DMA outbound path (not supported).
11732                                                                  0xA = AXI bridge outbound request path (not supported).
11733                                                                  0xB = AXI bridge outbound master completion path (not supported).
11734                                                                  0xC - 0xF = Reserved. */
11735         uint32_t loc_last_ucorr_err    : 8;  /**< [ 31: 24](RO) Location/ID of the last uncorrected error within the region defined by
11736                                                                  [REG_LAST_CORR_ERR]. */
11737 #endif /* Word 0 - End */
11738     } s;
11739     /* struct bdk_pciercx_cfg183_s cn; */
11740 };
11741 typedef union bdk_pciercx_cfg183 bdk_pciercx_cfg183_t;
11742 
11743 static inline uint64_t BDK_PCIERCX_CFG183(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG183(unsigned long a)11744 static inline uint64_t BDK_PCIERCX_CFG183(unsigned long a)
11745 {
11746     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11747         return 0x200000002dcll + 0x100000000ll * ((a) & 0x3);
11748     __bdk_csr_fatal("PCIERCX_CFG183", 1, a, 0, 0, 0);
11749 }
11750 
11751 #define typedef_BDK_PCIERCX_CFG183(a) bdk_pciercx_cfg183_t
11752 #define bustype_BDK_PCIERCX_CFG183(a) BDK_CSR_TYPE_PCICONFIGRC
11753 #define basename_BDK_PCIERCX_CFG183(a) "PCIERCX_CFG183"
11754 #define busnum_BDK_PCIERCX_CFG183(a) (a)
11755 #define arguments_BDK_PCIERCX_CFG183(a) (a),-1,-1,-1
11756 
11757 /**
11758  * Register (PCICONFIGRC) pcierc#_cfg184
11759  *
11760  * PCIe RC RAS Data Error Mode Enable Register
11761  * This register contains the one hundred eighty-fifth  32-bits of PCIe type 0 configuration space.
11762  */
11763 union bdk_pciercx_cfg184
11764 {
11765     uint32_t u;
11766     struct bdk_pciercx_cfg184_s
11767     {
11768 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11769         uint32_t reserved_2_31         : 30;
11770         uint32_t auto_lnk_dn_en        : 1;  /**< [  1:  1](R/W) Set this bit to enable the core to bring the link down when RASDP error mode is entered.
11771                                                                  [REG_LAST_CORR_ERR]. */
11772         uint32_t err_mode_en           : 1;  /**< [  0:  0](R/W) Set this bit to enable the core to enter RASDP error mode when it detects an uncorrectable error. */
11773 #else /* Word 0 - Little Endian */
11774         uint32_t err_mode_en           : 1;  /**< [  0:  0](R/W) Set this bit to enable the core to enter RASDP error mode when it detects an uncorrectable error. */
11775         uint32_t auto_lnk_dn_en        : 1;  /**< [  1:  1](R/W) Set this bit to enable the core to bring the link down when RASDP error mode is entered.
11776                                                                  [REG_LAST_CORR_ERR]. */
11777         uint32_t reserved_2_31         : 30;
11778 #endif /* Word 0 - End */
11779     } s;
11780     /* struct bdk_pciercx_cfg184_s cn; */
11781 };
11782 typedef union bdk_pciercx_cfg184 bdk_pciercx_cfg184_t;
11783 
11784 static inline uint64_t BDK_PCIERCX_CFG184(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG184(unsigned long a)11785 static inline uint64_t BDK_PCIERCX_CFG184(unsigned long a)
11786 {
11787     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11788         return 0x200000002e0ll + 0x100000000ll * ((a) & 0x3);
11789     __bdk_csr_fatal("PCIERCX_CFG184", 1, a, 0, 0, 0);
11790 }
11791 
11792 #define typedef_BDK_PCIERCX_CFG184(a) bdk_pciercx_cfg184_t
11793 #define bustype_BDK_PCIERCX_CFG184(a) BDK_CSR_TYPE_PCICONFIGRC
11794 #define basename_BDK_PCIERCX_CFG184(a) "PCIERCX_CFG184"
11795 #define busnum_BDK_PCIERCX_CFG184(a) (a)
11796 #define arguments_BDK_PCIERCX_CFG184(a) (a),-1,-1,-1
11797 
11798 /**
11799  * Register (PCICONFIGRC) pcierc#_cfg185
11800  *
11801  * PCIe RC RAS Data Error Mode Clear Register
11802  * This register contains the one hundred eighty-sixth  32-bits of PCIe type 0 configuration space.
11803  */
11804 union bdk_pciercx_cfg185
11805 {
11806     uint32_t u;
11807     struct bdk_pciercx_cfg185_s
11808     {
11809 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11810         uint32_t reserved_1_31         : 31;
11811         uint32_t err_mode_clr          : 1;  /**< [  0:  0](R/W1C) Set this bit to take the core out of RASDP error mode.  The core will then report
11812                                                                  uncorrectable
11813                                                                  errors (through AER internal error reporting) and also stop nullifying/discarding TLPs. */
11814 #else /* Word 0 - Little Endian */
11815         uint32_t err_mode_clr          : 1;  /**< [  0:  0](R/W1C) Set this bit to take the core out of RASDP error mode.  The core will then report
11816                                                                  uncorrectable
11817                                                                  errors (through AER internal error reporting) and also stop nullifying/discarding TLPs. */
11818         uint32_t reserved_1_31         : 31;
11819 #endif /* Word 0 - End */
11820     } s;
11821     /* struct bdk_pciercx_cfg185_s cn; */
11822 };
11823 typedef union bdk_pciercx_cfg185 bdk_pciercx_cfg185_t;
11824 
11825 static inline uint64_t BDK_PCIERCX_CFG185(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG185(unsigned long a)11826 static inline uint64_t BDK_PCIERCX_CFG185(unsigned long a)
11827 {
11828     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11829         return 0x200000002e4ll + 0x100000000ll * ((a) & 0x3);
11830     __bdk_csr_fatal("PCIERCX_CFG185", 1, a, 0, 0, 0);
11831 }
11832 
11833 #define typedef_BDK_PCIERCX_CFG185(a) bdk_pciercx_cfg185_t
11834 #define bustype_BDK_PCIERCX_CFG185(a) BDK_CSR_TYPE_PCICONFIGRC
11835 #define basename_BDK_PCIERCX_CFG185(a) "PCIERCX_CFG185"
11836 #define busnum_BDK_PCIERCX_CFG185(a) (a)
11837 #define arguments_BDK_PCIERCX_CFG185(a) (a),-1,-1,-1
11838 
11839 /**
11840  * Register (PCICONFIGRC) pcierc#_cfg186
11841  *
11842  * PCIe RC RAS RAM Address Corrected Error Register
11843  * This register contains the one hundred eigth-seventh  32-bits of PCIe type 0 configuration space.
11844  */
11845 union bdk_pciercx_cfg186
11846 {
11847     uint32_t u;
11848     struct bdk_pciercx_cfg186_s
11849     {
11850 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11851         uint32_t ram_idx_corr_err      : 4;  /**< [ 31: 28](RO) RAM index where a corrected error has been detected. */
11852         uint32_t reserved_27           : 1;
11853         uint32_t ram_addr_corr_err     : 27; /**< [ 26:  0](RO) RAM address where a corrected error has been detected. */
11854 #else /* Word 0 - Little Endian */
11855         uint32_t ram_addr_corr_err     : 27; /**< [ 26:  0](RO) RAM address where a corrected error has been detected. */
11856         uint32_t reserved_27           : 1;
11857         uint32_t ram_idx_corr_err      : 4;  /**< [ 31: 28](RO) RAM index where a corrected error has been detected. */
11858 #endif /* Word 0 - End */
11859     } s;
11860     /* struct bdk_pciercx_cfg186_s cn; */
11861 };
11862 typedef union bdk_pciercx_cfg186 bdk_pciercx_cfg186_t;
11863 
11864 static inline uint64_t BDK_PCIERCX_CFG186(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG186(unsigned long a)11865 static inline uint64_t BDK_PCIERCX_CFG186(unsigned long a)
11866 {
11867     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11868         return 0x200000002e8ll + 0x100000000ll * ((a) & 0x3);
11869     __bdk_csr_fatal("PCIERCX_CFG186", 1, a, 0, 0, 0);
11870 }
11871 
11872 #define typedef_BDK_PCIERCX_CFG186(a) bdk_pciercx_cfg186_t
11873 #define bustype_BDK_PCIERCX_CFG186(a) BDK_CSR_TYPE_PCICONFIGRC
11874 #define basename_BDK_PCIERCX_CFG186(a) "PCIERCX_CFG186"
11875 #define busnum_BDK_PCIERCX_CFG186(a) (a)
11876 #define arguments_BDK_PCIERCX_CFG186(a) (a),-1,-1,-1
11877 
11878 /**
11879  * Register (PCICONFIGRC) pcierc#_cfg187
11880  *
11881  * PCIe RC RAS RAM Address Uncorrected Error Register
11882  * This register contains the one hundred eighty-eighth  32-bits of PCIe type 0 configuration space.
11883  */
11884 union bdk_pciercx_cfg187
11885 {
11886     uint32_t u;
11887     struct bdk_pciercx_cfg187_s
11888     {
11889 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11890         uint32_t ram_idx_ucorr_err     : 4;  /**< [ 31: 28](RO) RAM index where a uncorrected error has been detected. */
11891         uint32_t reserved_27           : 1;
11892         uint32_t ram_addr_ucorr_err    : 27; /**< [ 26:  0](RO) RAM address where a uncorrected error has been detected. */
11893 #else /* Word 0 - Little Endian */
11894         uint32_t ram_addr_ucorr_err    : 27; /**< [ 26:  0](RO) RAM address where a uncorrected error has been detected. */
11895         uint32_t reserved_27           : 1;
11896         uint32_t ram_idx_ucorr_err     : 4;  /**< [ 31: 28](RO) RAM index where a uncorrected error has been detected. */
11897 #endif /* Word 0 - End */
11898     } s;
11899     /* struct bdk_pciercx_cfg187_s cn; */
11900 };
11901 typedef union bdk_pciercx_cfg187 bdk_pciercx_cfg187_t;
11902 
11903 static inline uint64_t BDK_PCIERCX_CFG187(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG187(unsigned long a)11904 static inline uint64_t BDK_PCIERCX_CFG187(unsigned long a)
11905 {
11906     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11907         return 0x200000002ecll + 0x100000000ll * ((a) & 0x3);
11908     __bdk_csr_fatal("PCIERCX_CFG187", 1, a, 0, 0, 0);
11909 }
11910 
11911 #define typedef_BDK_PCIERCX_CFG187(a) bdk_pciercx_cfg187_t
11912 #define bustype_BDK_PCIERCX_CFG187(a) BDK_CSR_TYPE_PCICONFIGRC
11913 #define basename_BDK_PCIERCX_CFG187(a) "PCIERCX_CFG187"
11914 #define busnum_BDK_PCIERCX_CFG187(a) (a)
11915 #define arguments_BDK_PCIERCX_CFG187(a) (a),-1,-1,-1
11916 
11917 /**
11918  * Register (PCICONFIGRC) pcierc#_cfg192
11919  *
11920  * PCIe RC PCI Express ACS Extended Capability Header Register
11921  * This register contains the one hundred ninety-third 32-bits of PCIe type 1 configuration space.
11922  */
11923 union bdk_pciercx_cfg192
11924 {
11925     uint32_t u;
11926     struct bdk_pciercx_cfg192_s
11927     {
11928 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11929         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
11930                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11931         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
11932                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11933         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
11934                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11935 #else /* Word 0 - Little Endian */
11936         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
11937                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11938         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
11939                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11940         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
11941                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11942 #endif /* Word 0 - End */
11943     } s;
11944     /* struct bdk_pciercx_cfg192_s cn; */
11945 };
11946 typedef union bdk_pciercx_cfg192 bdk_pciercx_cfg192_t;
11947 
11948 static inline uint64_t BDK_PCIERCX_CFG192(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG192(unsigned long a)11949 static inline uint64_t BDK_PCIERCX_CFG192(unsigned long a)
11950 {
11951     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
11952         return 0x20000000300ll + 0x100000000ll * ((a) & 0x3);
11953     __bdk_csr_fatal("PCIERCX_CFG192", 1, a, 0, 0, 0);
11954 }
11955 
11956 #define typedef_BDK_PCIERCX_CFG192(a) bdk_pciercx_cfg192_t
11957 #define bustype_BDK_PCIERCX_CFG192(a) BDK_CSR_TYPE_PCICONFIGRC
11958 #define basename_BDK_PCIERCX_CFG192(a) "PCIERCX_CFG192"
11959 #define busnum_BDK_PCIERCX_CFG192(a) (a)
11960 #define arguments_BDK_PCIERCX_CFG192(a) (a),-1,-1,-1
11961 
11962 /**
11963  * Register (PCICONFIGRC) pcierc#_cfg193
11964  *
11965  * PCIe RC ACS Capability and Control Register
11966  * This register contains the one hundred ninety-fourth 32-bits of PCIe type 1 configuration space.
11967  */
11968 union bdk_pciercx_cfg193
11969 {
11970     uint32_t u;
11971     struct bdk_pciercx_cfg193_s
11972     {
11973 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
11974         uint32_t reserved_23_31        : 9;
11975         uint32_t dte                   : 1;  /**< [ 22: 22](R/W) ACS direct translated P2P enable. */
11976         uint32_t ece                   : 1;  /**< [ 21: 21](R/W) ACS P2P egress control enable. */
11977         uint32_t ufe                   : 1;  /**< [ 20: 20](R/W) ACS upstream forwarding enable. */
11978         uint32_t cre                   : 1;  /**< [ 19: 19](R/W) ACS P2P completion redirect enable. */
11979         uint32_t rre                   : 1;  /**< [ 18: 18](R/W) ACS P2P request redirect enable. */
11980         uint32_t tbe                   : 1;  /**< [ 17: 17](R/W) ACS translation blocking enable. */
11981         uint32_t sve                   : 1;  /**< [ 16: 16](R/W) ACS source validation enable. */
11982         uint32_t ecvs                  : 8;  /**< [ 15:  8](RO/WRSL) Egress control vector size.
11983                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11984         uint32_t reserved_7            : 1;
11985         uint32_t dt                    : 1;  /**< [  6:  6](RO/WRSL) ACS direct translated P2P.
11986                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11987         uint32_t ec                    : 1;  /**< [  5:  5](RO/WRSL) ACS P2P egress control.
11988                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11989         uint32_t uf                    : 1;  /**< [  4:  4](RO/WRSL) ACS upstream forwarding.
11990                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11991         uint32_t cr                    : 1;  /**< [  3:  3](RO/WRSL) ACS P2P completion redirect.
11992                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11993         uint32_t rr                    : 1;  /**< [  2:  2](RO/WRSL) ACS P2P request redirect.
11994                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11995         uint32_t tb                    : 1;  /**< [  1:  1](RO/WRSL) ACS translation blocking.
11996                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11997         uint32_t sv                    : 1;  /**< [  0:  0](RO/WRSL) ACS source validation.
11998                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
11999 #else /* Word 0 - Little Endian */
12000         uint32_t sv                    : 1;  /**< [  0:  0](RO/WRSL) ACS source validation.
12001                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
12002         uint32_t tb                    : 1;  /**< [  1:  1](RO/WRSL) ACS translation blocking.
12003                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
12004         uint32_t rr                    : 1;  /**< [  2:  2](RO/WRSL) ACS P2P request redirect.
12005                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
12006         uint32_t cr                    : 1;  /**< [  3:  3](RO/WRSL) ACS P2P completion redirect.
12007                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
12008         uint32_t uf                    : 1;  /**< [  4:  4](RO/WRSL) ACS upstream forwarding.
12009                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
12010         uint32_t ec                    : 1;  /**< [  5:  5](RO/WRSL) ACS P2P egress control.
12011                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
12012         uint32_t dt                    : 1;  /**< [  6:  6](RO/WRSL) ACS direct translated P2P.
12013                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
12014         uint32_t reserved_7            : 1;
12015         uint32_t ecvs                  : 8;  /**< [ 15:  8](RO/WRSL) Egress control vector size.
12016                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
12017         uint32_t sve                   : 1;  /**< [ 16: 16](R/W) ACS source validation enable. */
12018         uint32_t tbe                   : 1;  /**< [ 17: 17](R/W) ACS translation blocking enable. */
12019         uint32_t rre                   : 1;  /**< [ 18: 18](R/W) ACS P2P request redirect enable. */
12020         uint32_t cre                   : 1;  /**< [ 19: 19](R/W) ACS P2P completion redirect enable. */
12021         uint32_t ufe                   : 1;  /**< [ 20: 20](R/W) ACS upstream forwarding enable. */
12022         uint32_t ece                   : 1;  /**< [ 21: 21](R/W) ACS P2P egress control enable. */
12023         uint32_t dte                   : 1;  /**< [ 22: 22](R/W) ACS direct translated P2P enable. */
12024         uint32_t reserved_23_31        : 9;
12025 #endif /* Word 0 - End */
12026     } s;
12027     /* struct bdk_pciercx_cfg193_s cn; */
12028 };
12029 typedef union bdk_pciercx_cfg193 bdk_pciercx_cfg193_t;
12030 
12031 static inline uint64_t BDK_PCIERCX_CFG193(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG193(unsigned long a)12032 static inline uint64_t BDK_PCIERCX_CFG193(unsigned long a)
12033 {
12034     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12035         return 0x20000000304ll + 0x100000000ll * ((a) & 0x3);
12036     __bdk_csr_fatal("PCIERCX_CFG193", 1, a, 0, 0, 0);
12037 }
12038 
12039 #define typedef_BDK_PCIERCX_CFG193(a) bdk_pciercx_cfg193_t
12040 #define bustype_BDK_PCIERCX_CFG193(a) BDK_CSR_TYPE_PCICONFIGRC
12041 #define basename_BDK_PCIERCX_CFG193(a) "PCIERCX_CFG193"
12042 #define busnum_BDK_PCIERCX_CFG193(a) (a)
12043 #define arguments_BDK_PCIERCX_CFG193(a) (a),-1,-1,-1
12044 
12045 /**
12046  * Register (PCICONFIGRC) pcierc#_cfg194
12047  *
12048  * PCIe RC Egress Control Vector Register
12049  * This register contains the one hundred ninety-fifth 32-bits of PCIe type 1 configuration space.
12050  */
12051 union bdk_pciercx_cfg194
12052 {
12053     uint32_t u;
12054     struct bdk_pciercx_cfg194_s
12055     {
12056 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12057         uint32_t ecv                   : 32; /**< [ 31:  0](R/W) Egress control vector. */
12058 #else /* Word 0 - Little Endian */
12059         uint32_t ecv                   : 32; /**< [ 31:  0](R/W) Egress control vector. */
12060 #endif /* Word 0 - End */
12061     } s;
12062     /* struct bdk_pciercx_cfg194_s cn; */
12063 };
12064 typedef union bdk_pciercx_cfg194 bdk_pciercx_cfg194_t;
12065 
12066 static inline uint64_t BDK_PCIERCX_CFG194(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG194(unsigned long a)12067 static inline uint64_t BDK_PCIERCX_CFG194(unsigned long a)
12068 {
12069     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12070         return 0x20000000308ll + 0x100000000ll * ((a) & 0x3);
12071     __bdk_csr_fatal("PCIERCX_CFG194", 1, a, 0, 0, 0);
12072 }
12073 
12074 #define typedef_BDK_PCIERCX_CFG194(a) bdk_pciercx_cfg194_t
12075 #define bustype_BDK_PCIERCX_CFG194(a) BDK_CSR_TYPE_PCICONFIGRC
12076 #define basename_BDK_PCIERCX_CFG194(a) "PCIERCX_CFG194"
12077 #define busnum_BDK_PCIERCX_CFG194(a) (a)
12078 #define arguments_BDK_PCIERCX_CFG194(a) (a),-1,-1,-1
12079 
12080 /**
12081  * Register (PCICONFIGRC) pcierc#_cfg448
12082  *
12083  * PCIe RC Ack Latency Timer/Replay Timer Register
12084  * This register contains the four hundred forty-ninth 32-bits of PCIe type 1 configuration space.
12085  */
12086 union bdk_pciercx_cfg448
12087 {
12088     uint32_t u;
12089     struct bdk_pciercx_cfg448_s
12090     {
12091 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12092         uint32_t rtl                   : 16; /**< [ 31: 16](R/W/H) Replay time limit. The replay timer expires when it reaches this limit. The PCI Express
12093                                                                  bus initiates a replay upon reception of a NAK or when the replay timer expires. This
12094                                                                  value is set correctly by the hardware out of reset or when the negotiated link width or
12095                                                                  payload size changes. If the user changes this value
12096                                                                  they should refer to the PCIe specification for the correct value. */
12097         uint32_t rtltl                 : 16; /**< [ 15:  0](R/W/H) Round trip latency time limit. The ACK/NAK latency timer expires when it reaches this
12098                                                                  limit. This value is set correctly by the hardware out of reset or when the negotiated
12099                                                                  link width or payload size changes. If the user changes this value
12100                                                                  they should refer to the PCIe specification for the correct value. */
12101 #else /* Word 0 - Little Endian */
12102         uint32_t rtltl                 : 16; /**< [ 15:  0](R/W/H) Round trip latency time limit. The ACK/NAK latency timer expires when it reaches this
12103                                                                  limit. This value is set correctly by the hardware out of reset or when the negotiated
12104                                                                  link width or payload size changes. If the user changes this value
12105                                                                  they should refer to the PCIe specification for the correct value. */
12106         uint32_t rtl                   : 16; /**< [ 31: 16](R/W/H) Replay time limit. The replay timer expires when it reaches this limit. The PCI Express
12107                                                                  bus initiates a replay upon reception of a NAK or when the replay timer expires. This
12108                                                                  value is set correctly by the hardware out of reset or when the negotiated link width or
12109                                                                  payload size changes. If the user changes this value
12110                                                                  they should refer to the PCIe specification for the correct value. */
12111 #endif /* Word 0 - End */
12112     } s;
12113     /* struct bdk_pciercx_cfg448_s cn; */
12114 };
12115 typedef union bdk_pciercx_cfg448 bdk_pciercx_cfg448_t;
12116 
12117 static inline uint64_t BDK_PCIERCX_CFG448(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG448(unsigned long a)12118 static inline uint64_t BDK_PCIERCX_CFG448(unsigned long a)
12119 {
12120     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
12121         return 0x20000000700ll + 0x100000000ll * ((a) & 0x3);
12122     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12123         return 0x20000000700ll + 0x100000000ll * ((a) & 0x3);
12124     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
12125         return 0x20000000700ll + 0x100000000ll * ((a) & 0x7);
12126     __bdk_csr_fatal("PCIERCX_CFG448", 1, a, 0, 0, 0);
12127 }
12128 
12129 #define typedef_BDK_PCIERCX_CFG448(a) bdk_pciercx_cfg448_t
12130 #define bustype_BDK_PCIERCX_CFG448(a) BDK_CSR_TYPE_PCICONFIGRC
12131 #define basename_BDK_PCIERCX_CFG448(a) "PCIERCX_CFG448"
12132 #define busnum_BDK_PCIERCX_CFG448(a) (a)
12133 #define arguments_BDK_PCIERCX_CFG448(a) (a),-1,-1,-1
12134 
12135 /**
12136  * Register (PCICONFIGRC) pcierc#_cfg449
12137  *
12138  * PCIe RC Other Message Register
12139  * This register contains the four hundred fiftieth 32-bits of PCIe type 1 configuration space.
12140  */
12141 union bdk_pciercx_cfg449
12142 {
12143     uint32_t u;
12144     struct bdk_pciercx_cfg449_s
12145     {
12146 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12147         uint32_t omr                   : 32; /**< [ 31:  0](R/W) Other message register. This register can be used for either of the following purposes:
12148                                                                  * To send a specific PCI Express message, the application writes the payload of the
12149                                                                  message into this register, then sets bit 0 of the port link control register to send the
12150                                                                  message.
12151                                                                  * To store a corruption pattern for corrupting the LCRC on all TLPs, the application
12152                                                                  places a 32-bit corruption pattern into this register and enables this function by setting
12153                                                                  bit 25 of the port link control register. When enabled, the transmit LCRC result is XORed
12154                                                                  with this pattern before inserting it into the packet. */
12155 #else /* Word 0 - Little Endian */
12156         uint32_t omr                   : 32; /**< [ 31:  0](R/W) Other message register. This register can be used for either of the following purposes:
12157                                                                  * To send a specific PCI Express message, the application writes the payload of the
12158                                                                  message into this register, then sets bit 0 of the port link control register to send the
12159                                                                  message.
12160                                                                  * To store a corruption pattern for corrupting the LCRC on all TLPs, the application
12161                                                                  places a 32-bit corruption pattern into this register and enables this function by setting
12162                                                                  bit 25 of the port link control register. When enabled, the transmit LCRC result is XORed
12163                                                                  with this pattern before inserting it into the packet. */
12164 #endif /* Word 0 - End */
12165     } s;
12166     /* struct bdk_pciercx_cfg449_s cn; */
12167 };
12168 typedef union bdk_pciercx_cfg449 bdk_pciercx_cfg449_t;
12169 
12170 static inline uint64_t BDK_PCIERCX_CFG449(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG449(unsigned long a)12171 static inline uint64_t BDK_PCIERCX_CFG449(unsigned long a)
12172 {
12173     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
12174         return 0x20000000704ll + 0x100000000ll * ((a) & 0x3);
12175     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12176         return 0x20000000704ll + 0x100000000ll * ((a) & 0x3);
12177     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
12178         return 0x20000000704ll + 0x100000000ll * ((a) & 0x7);
12179     __bdk_csr_fatal("PCIERCX_CFG449", 1, a, 0, 0, 0);
12180 }
12181 
12182 #define typedef_BDK_PCIERCX_CFG449(a) bdk_pciercx_cfg449_t
12183 #define bustype_BDK_PCIERCX_CFG449(a) BDK_CSR_TYPE_PCICONFIGRC
12184 #define basename_BDK_PCIERCX_CFG449(a) "PCIERCX_CFG449"
12185 #define busnum_BDK_PCIERCX_CFG449(a) (a)
12186 #define arguments_BDK_PCIERCX_CFG449(a) (a),-1,-1,-1
12187 
12188 /**
12189  * Register (PCICONFIGRC) pcierc#_cfg450
12190  *
12191  * PCIe RC Port Force Link Register
12192  * This register contains the four hundred fifty-first 32-bits of PCIe type 1 configuration space.
12193  */
12194 union bdk_pciercx_cfg450
12195 {
12196     uint32_t u;
12197     struct bdk_pciercx_cfg450_s
12198     {
12199 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12200         uint32_t lpec                  : 8;  /**< [ 31: 24](R/W) Low power entrance count. The power management state waits this many clock cycles for the
12201                                                                  associated completion of a CfgWr to PCIERC()_CFG017 register, power state (PS) field
12202                                                                  register
12203                                                                  to go low-power. This register is intended for applications that do not let the PCI
12204                                                                  Express bus handle a completion for configuration request to the power management control
12205                                                                  and status (PCIRC()_CFG017) register. */
12206         uint32_t reserved_22_23        : 2;
12207         uint32_t link_state            : 6;  /**< [ 21: 16](R/W) Link state. The link state that the PCI Express bus is forced to when bit 15 (force link)
12208                                                                  is set. State encoding:
12209                                                                  0x0 = DETECT_QUIET.
12210                                                                  0x1 = DETECT_ACT.
12211                                                                  0x2 = POLL_ACTIVE.
12212                                                                  0x3 = POLL_COMPLIANCE.
12213                                                                  0x4 = POLL_CONFIG.
12214                                                                  0x5 = PRE_DETECT_QUIET.
12215                                                                  0x6 = DETECT_WAIT.
12216                                                                  0x7 = CFG_LINKWD_START.
12217                                                                  0x8 = CFG_LINKWD_ACEPT.
12218                                                                  0x9 = CFG_LANENUM_WAIT.
12219                                                                  0xA = CFG_LANENUM_ACEPT.
12220                                                                  0xB = CFG_COMPLETE.
12221                                                                  0xC = CFG_IDLE.
12222                                                                  0xD = RCVRY_LOCK.
12223                                                                  0xE = RCVRY_SPEED.
12224                                                                  0xF = RCVRY_RCVRCFG.
12225                                                                  0x10 = RCVRY_IDLE.
12226                                                                  0x11 = L0.
12227                                                                  0x12 = L0S.
12228                                                                  0x13 = L123_SEND_EIDLE.
12229                                                                  0x14 = L1_IDLE.
12230                                                                  0x15 = L2_IDLE.
12231                                                                  0x16 = L2_WAKE.
12232                                                                  0x17 = DISABLED_ENTRY.
12233                                                                  0x18 = DISABLED_IDLE.
12234                                                                  0x19 = DISABLED.
12235                                                                  0x1A = LPBK_ENTRY.
12236                                                                  0x1B = LPBK_ACTIVE.
12237                                                                  0x1C = LPBK_EXIT.
12238                                                                  0x1D = LPBK_EXIT_TIMEOUT.
12239                                                                  0x1E = HOT_RESET_ENTRY.
12240                                                                  0x1F = HOT_RESET. */
12241         uint32_t force_link            : 1;  /**< [ 15: 15](WO/H) Force link. Forces the link to the state specified by [LINK_STATE]. The force link
12242                                                                  pulse triggers link renegotiation.
12243                                                                  As the force link is a pulse, writing a 1 to it does trigger the forced link state event,
12244                                                                  even though reading it always returns a 0. */
12245         uint32_t reserved_12_14        : 3;
12246         uint32_t forced_ltssm          : 4;  /**< [ 11:  8](R/W) Forced link command. */
12247         uint32_t link_num              : 8;  /**< [  7:  0](R/W) Link number. */
12248 #else /* Word 0 - Little Endian */
12249         uint32_t link_num              : 8;  /**< [  7:  0](R/W) Link number. */
12250         uint32_t forced_ltssm          : 4;  /**< [ 11:  8](R/W) Forced link command. */
12251         uint32_t reserved_12_14        : 3;
12252         uint32_t force_link            : 1;  /**< [ 15: 15](WO/H) Force link. Forces the link to the state specified by [LINK_STATE]. The force link
12253                                                                  pulse triggers link renegotiation.
12254                                                                  As the force link is a pulse, writing a 1 to it does trigger the forced link state event,
12255                                                                  even though reading it always returns a 0. */
12256         uint32_t link_state            : 6;  /**< [ 21: 16](R/W) Link state. The link state that the PCI Express bus is forced to when bit 15 (force link)
12257                                                                  is set. State encoding:
12258                                                                  0x0 = DETECT_QUIET.
12259                                                                  0x1 = DETECT_ACT.
12260                                                                  0x2 = POLL_ACTIVE.
12261                                                                  0x3 = POLL_COMPLIANCE.
12262                                                                  0x4 = POLL_CONFIG.
12263                                                                  0x5 = PRE_DETECT_QUIET.
12264                                                                  0x6 = DETECT_WAIT.
12265                                                                  0x7 = CFG_LINKWD_START.
12266                                                                  0x8 = CFG_LINKWD_ACEPT.
12267                                                                  0x9 = CFG_LANENUM_WAIT.
12268                                                                  0xA = CFG_LANENUM_ACEPT.
12269                                                                  0xB = CFG_COMPLETE.
12270                                                                  0xC = CFG_IDLE.
12271                                                                  0xD = RCVRY_LOCK.
12272                                                                  0xE = RCVRY_SPEED.
12273                                                                  0xF = RCVRY_RCVRCFG.
12274                                                                  0x10 = RCVRY_IDLE.
12275                                                                  0x11 = L0.
12276                                                                  0x12 = L0S.
12277                                                                  0x13 = L123_SEND_EIDLE.
12278                                                                  0x14 = L1_IDLE.
12279                                                                  0x15 = L2_IDLE.
12280                                                                  0x16 = L2_WAKE.
12281                                                                  0x17 = DISABLED_ENTRY.
12282                                                                  0x18 = DISABLED_IDLE.
12283                                                                  0x19 = DISABLED.
12284                                                                  0x1A = LPBK_ENTRY.
12285                                                                  0x1B = LPBK_ACTIVE.
12286                                                                  0x1C = LPBK_EXIT.
12287                                                                  0x1D = LPBK_EXIT_TIMEOUT.
12288                                                                  0x1E = HOT_RESET_ENTRY.
12289                                                                  0x1F = HOT_RESET. */
12290         uint32_t reserved_22_23        : 2;
12291         uint32_t lpec                  : 8;  /**< [ 31: 24](R/W) Low power entrance count. The power management state waits this many clock cycles for the
12292                                                                  associated completion of a CfgWr to PCIERC()_CFG017 register, power state (PS) field
12293                                                                  register
12294                                                                  to go low-power. This register is intended for applications that do not let the PCI
12295                                                                  Express bus handle a completion for configuration request to the power management control
12296                                                                  and status (PCIRC()_CFG017) register. */
12297 #endif /* Word 0 - End */
12298     } s;
12299     /* struct bdk_pciercx_cfg450_s cn81xx; */
12300     struct bdk_pciercx_cfg450_cn88xx
12301     {
12302 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12303         uint32_t lpec                  : 8;  /**< [ 31: 24](R/W) Low power entrance count. The power management state waits this many clock cycles for the
12304                                                                  associated completion of a CfgWr to PCIEEP()_CFG017 register, power state (PS) field
12305                                                                  register
12306                                                                  to go low-power. This register is intended for applications that do not let the PCI
12307                                                                  Express bus handle a completion for configuration request to the power management control
12308                                                                  and status (PCIEP()_CFG017) register. */
12309         uint32_t reserved_22_23        : 2;
12310         uint32_t link_state            : 6;  /**< [ 21: 16](R/W) Link state. The link state that the PCI Express bus is forced to when bit 15 (force link)
12311                                                                  is set. State encoding:
12312                                                                  0x0 = DETECT_QUIET.
12313                                                                  0x1 = DETECT_ACT.
12314                                                                  0x2 = POLL_ACTIVE.
12315                                                                  0x3 = POLL_COMPLIANCE.
12316                                                                  0x4 = POLL_CONFIG.
12317                                                                  0x5 = PRE_DETECT_QUIET.
12318                                                                  0x6 = DETECT_WAIT.
12319                                                                  0x7 = CFG_LINKWD_START.
12320                                                                  0x8 = CFG_LINKWD_ACEPT.
12321                                                                  0x9 = CFG_LANENUM_WAIT.
12322                                                                  0xA = CFG_LANENUM_ACEPT.
12323                                                                  0xB = CFG_COMPLETE.
12324                                                                  0xC = CFG_IDLE.
12325                                                                  0xD = RCVRY_LOCK.
12326                                                                  0xE = RCVRY_SPEED.
12327                                                                  0xF = RCVRY_RCVRCFG.
12328                                                                  0x10 = RCVRY_IDLE.
12329                                                                  0x11 = L0.
12330                                                                  0x12 = L0S.
12331                                                                  0x13 = L123_SEND_EIDLE.
12332                                                                  0x14 = L1_IDLE.
12333                                                                  0x15 = L2_IDLE.
12334                                                                  0x16 = L2_WAKE.
12335                                                                  0x17 = DISABLED_ENTRY.
12336                                                                  0x18 = DISABLED_IDLE.
12337                                                                  0x19 = DISABLED.
12338                                                                  0x1A = LPBK_ENTRY.
12339                                                                  0x1B = LPBK_ACTIVE.
12340                                                                  0x1C = LPBK_EXIT.
12341                                                                  0x1D = LPBK_EXIT_TIMEOUT.
12342                                                                  0x1E = HOT_RESET_ENTRY.
12343                                                                  0x1F = HOT_RESET. */
12344         uint32_t force_link            : 1;  /**< [ 15: 15](WO/H) Force link. Forces the link to the state specified by [LINK_STATE]. The force link
12345                                                                  pulse triggers link renegotiation.
12346                                                                  As the force link is a pulse, writing a 1 to it does trigger the forced link state event,
12347                                                                  even though reading it always returns a 0. */
12348         uint32_t reserved_12_14        : 3;
12349         uint32_t forced_ltssm          : 4;  /**< [ 11:  8](R/W) Forced link command. */
12350         uint32_t link_num              : 8;  /**< [  7:  0](R/W) Link number. */
12351 #else /* Word 0 - Little Endian */
12352         uint32_t link_num              : 8;  /**< [  7:  0](R/W) Link number. */
12353         uint32_t forced_ltssm          : 4;  /**< [ 11:  8](R/W) Forced link command. */
12354         uint32_t reserved_12_14        : 3;
12355         uint32_t force_link            : 1;  /**< [ 15: 15](WO/H) Force link. Forces the link to the state specified by [LINK_STATE]. The force link
12356                                                                  pulse triggers link renegotiation.
12357                                                                  As the force link is a pulse, writing a 1 to it does trigger the forced link state event,
12358                                                                  even though reading it always returns a 0. */
12359         uint32_t link_state            : 6;  /**< [ 21: 16](R/W) Link state. The link state that the PCI Express bus is forced to when bit 15 (force link)
12360                                                                  is set. State encoding:
12361                                                                  0x0 = DETECT_QUIET.
12362                                                                  0x1 = DETECT_ACT.
12363                                                                  0x2 = POLL_ACTIVE.
12364                                                                  0x3 = POLL_COMPLIANCE.
12365                                                                  0x4 = POLL_CONFIG.
12366                                                                  0x5 = PRE_DETECT_QUIET.
12367                                                                  0x6 = DETECT_WAIT.
12368                                                                  0x7 = CFG_LINKWD_START.
12369                                                                  0x8 = CFG_LINKWD_ACEPT.
12370                                                                  0x9 = CFG_LANENUM_WAIT.
12371                                                                  0xA = CFG_LANENUM_ACEPT.
12372                                                                  0xB = CFG_COMPLETE.
12373                                                                  0xC = CFG_IDLE.
12374                                                                  0xD = RCVRY_LOCK.
12375                                                                  0xE = RCVRY_SPEED.
12376                                                                  0xF = RCVRY_RCVRCFG.
12377                                                                  0x10 = RCVRY_IDLE.
12378                                                                  0x11 = L0.
12379                                                                  0x12 = L0S.
12380                                                                  0x13 = L123_SEND_EIDLE.
12381                                                                  0x14 = L1_IDLE.
12382                                                                  0x15 = L2_IDLE.
12383                                                                  0x16 = L2_WAKE.
12384                                                                  0x17 = DISABLED_ENTRY.
12385                                                                  0x18 = DISABLED_IDLE.
12386                                                                  0x19 = DISABLED.
12387                                                                  0x1A = LPBK_ENTRY.
12388                                                                  0x1B = LPBK_ACTIVE.
12389                                                                  0x1C = LPBK_EXIT.
12390                                                                  0x1D = LPBK_EXIT_TIMEOUT.
12391                                                                  0x1E = HOT_RESET_ENTRY.
12392                                                                  0x1F = HOT_RESET. */
12393         uint32_t reserved_22_23        : 2;
12394         uint32_t lpec                  : 8;  /**< [ 31: 24](R/W) Low power entrance count. The power management state waits this many clock cycles for the
12395                                                                  associated completion of a CfgWr to PCIEEP()_CFG017 register, power state (PS) field
12396                                                                  register
12397                                                                  to go low-power. This register is intended for applications that do not let the PCI
12398                                                                  Express bus handle a completion for configuration request to the power management control
12399                                                                  and status (PCIEP()_CFG017) register. */
12400 #endif /* Word 0 - End */
12401     } cn88xx;
12402     struct bdk_pciercx_cfg450_cn83xx
12403     {
12404 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12405         uint32_t reserved_22_31        : 10;
12406         uint32_t link_state            : 6;  /**< [ 21: 16](R/W) Link state. The link state that the PCI Express bus is forced to when bit 15 (force link)
12407                                                                  is set. State encoding:
12408                                                                  0x0 = DETECT_QUIET.
12409                                                                  0x1 = DETECT_ACT.
12410                                                                  0x2 = POLL_ACTIVE.
12411                                                                  0x3 = POLL_COMPLIANCE.
12412                                                                  0x4 = POLL_CONFIG.
12413                                                                  0x5 = PRE_DETECT_QUIET.
12414                                                                  0x6 = DETECT_WAIT.
12415                                                                  0x7 = CFG_LINKWD_START.
12416                                                                  0x8 = CFG_LINKWD_ACEPT.
12417                                                                  0x9 = CFG_LANENUM_WAIT.
12418                                                                  0xA = CFG_LANENUM_ACEPT.
12419                                                                  0xB = CFG_COMPLETE.
12420                                                                  0xC = CFG_IDLE.
12421                                                                  0xD = RCVRY_LOCK.
12422                                                                  0xE = RCVRY_SPEED.
12423                                                                  0xF = RCVRY_RCVRCFG.
12424                                                                  0x10 = RCVRY_IDLE.
12425                                                                  0x11 = L0.
12426                                                                  0x12 = L0S.
12427                                                                  0x13 = L123_SEND_EIDLE.
12428                                                                  0x14 = L1_IDLE.
12429                                                                  0x15 = L2_IDLE.
12430                                                                  0x16 = L2_WAKE.
12431                                                                  0x17 = DISABLED_ENTRY.
12432                                                                  0x18 = DISABLED_IDLE.
12433                                                                  0x19 = DISABLED.
12434                                                                  0x1A = LPBK_ENTRY.
12435                                                                  0x1B = LPBK_ACTIVE.
12436                                                                  0x1C = LPBK_EXIT.
12437                                                                  0x1D = LPBK_EXIT_TIMEOUT.
12438                                                                  0x1E = HOT_RESET_ENTRY.
12439                                                                  0x1F = HOT_RESET. */
12440         uint32_t force_link            : 1;  /**< [ 15: 15](WO/H) Force link. Forces the link to the state specified by [LINK_STATE]. The force link
12441                                                                  pulse triggers link renegotiation.
12442                                                                  As the force link is a pulse, writing a 1 to it does trigger the forced link state event,
12443                                                                  even though reading it always returns a 0. */
12444         uint32_t reserved_12_14        : 3;
12445         uint32_t forced_ltssm          : 4;  /**< [ 11:  8](R/W) Forced link command. */
12446         uint32_t link_num              : 8;  /**< [  7:  0](R/W) Link number. */
12447 #else /* Word 0 - Little Endian */
12448         uint32_t link_num              : 8;  /**< [  7:  0](R/W) Link number. */
12449         uint32_t forced_ltssm          : 4;  /**< [ 11:  8](R/W) Forced link command. */
12450         uint32_t reserved_12_14        : 3;
12451         uint32_t force_link            : 1;  /**< [ 15: 15](WO/H) Force link. Forces the link to the state specified by [LINK_STATE]. The force link
12452                                                                  pulse triggers link renegotiation.
12453                                                                  As the force link is a pulse, writing a 1 to it does trigger the forced link state event,
12454                                                                  even though reading it always returns a 0. */
12455         uint32_t link_state            : 6;  /**< [ 21: 16](R/W) Link state. The link state that the PCI Express bus is forced to when bit 15 (force link)
12456                                                                  is set. State encoding:
12457                                                                  0x0 = DETECT_QUIET.
12458                                                                  0x1 = DETECT_ACT.
12459                                                                  0x2 = POLL_ACTIVE.
12460                                                                  0x3 = POLL_COMPLIANCE.
12461                                                                  0x4 = POLL_CONFIG.
12462                                                                  0x5 = PRE_DETECT_QUIET.
12463                                                                  0x6 = DETECT_WAIT.
12464                                                                  0x7 = CFG_LINKWD_START.
12465                                                                  0x8 = CFG_LINKWD_ACEPT.
12466                                                                  0x9 = CFG_LANENUM_WAIT.
12467                                                                  0xA = CFG_LANENUM_ACEPT.
12468                                                                  0xB = CFG_COMPLETE.
12469                                                                  0xC = CFG_IDLE.
12470                                                                  0xD = RCVRY_LOCK.
12471                                                                  0xE = RCVRY_SPEED.
12472                                                                  0xF = RCVRY_RCVRCFG.
12473                                                                  0x10 = RCVRY_IDLE.
12474                                                                  0x11 = L0.
12475                                                                  0x12 = L0S.
12476                                                                  0x13 = L123_SEND_EIDLE.
12477                                                                  0x14 = L1_IDLE.
12478                                                                  0x15 = L2_IDLE.
12479                                                                  0x16 = L2_WAKE.
12480                                                                  0x17 = DISABLED_ENTRY.
12481                                                                  0x18 = DISABLED_IDLE.
12482                                                                  0x19 = DISABLED.
12483                                                                  0x1A = LPBK_ENTRY.
12484                                                                  0x1B = LPBK_ACTIVE.
12485                                                                  0x1C = LPBK_EXIT.
12486                                                                  0x1D = LPBK_EXIT_TIMEOUT.
12487                                                                  0x1E = HOT_RESET_ENTRY.
12488                                                                  0x1F = HOT_RESET. */
12489         uint32_t reserved_22_31        : 10;
12490 #endif /* Word 0 - End */
12491     } cn83xx;
12492 };
12493 typedef union bdk_pciercx_cfg450 bdk_pciercx_cfg450_t;
12494 
12495 static inline uint64_t BDK_PCIERCX_CFG450(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG450(unsigned long a)12496 static inline uint64_t BDK_PCIERCX_CFG450(unsigned long a)
12497 {
12498     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
12499         return 0x20000000708ll + 0x100000000ll * ((a) & 0x3);
12500     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12501         return 0x20000000708ll + 0x100000000ll * ((a) & 0x3);
12502     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
12503         return 0x20000000708ll + 0x100000000ll * ((a) & 0x7);
12504     __bdk_csr_fatal("PCIERCX_CFG450", 1, a, 0, 0, 0);
12505 }
12506 
12507 #define typedef_BDK_PCIERCX_CFG450(a) bdk_pciercx_cfg450_t
12508 #define bustype_BDK_PCIERCX_CFG450(a) BDK_CSR_TYPE_PCICONFIGRC
12509 #define basename_BDK_PCIERCX_CFG450(a) "PCIERCX_CFG450"
12510 #define busnum_BDK_PCIERCX_CFG450(a) (a)
12511 #define arguments_BDK_PCIERCX_CFG450(a) (a),-1,-1,-1
12512 
12513 /**
12514  * Register (PCICONFIGRC) pcierc#_cfg451
12515  *
12516  * PCIe RC Ack Frequency Register
12517  * This register contains the four hundred fifty-second 32-bits of PCIe type 1 configuration space.
12518  */
12519 union bdk_pciercx_cfg451
12520 {
12521     uint32_t u;
12522     struct bdk_pciercx_cfg451_s
12523     {
12524 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12525         uint32_t reserved_31           : 1;
12526         uint32_t easpml1               : 1;  /**< [ 30: 30](R/W/H) Enter ASPM L1 without receive in L0s. Allow core to enter ASPM L1 even when link partner
12527                                                                  did not go to L0s (receive is not in L0s). When not set, core goes to ASPM L1 only after
12528                                                                  idle period, during which both receive and transmit are in L0s. */
12529         uint32_t l1el                  : 3;  /**< [ 29: 27](R/W) L1 entrance latency. Values correspond to:
12530                                                                  0x0 = 1 ms.
12531                                                                  0x1 = 2 ms.
12532                                                                  0x2 = 4 ms.
12533                                                                  0x3 = 8 ms.
12534                                                                  0x4 = 16 ms.
12535                                                                  0x5 = 32 ms.
12536                                                                  0x6 or 0x7 = 64 ms. */
12537         uint32_t l0el                  : 3;  /**< [ 26: 24](R/W) L0s entrance latency. Values correspond to:
12538                                                                  0x0 = 1 ms.
12539                                                                  0x1 = 2 ms.
12540                                                                  0x2 = 3 ms.
12541                                                                  0x3 = 4 ms.
12542                                                                  0x4 = 5 ms.
12543                                                                  0x5 = 6 ms.
12544                                                                  0x6 or 0x7 = 7 ms. */
12545         uint32_t n_fts_cc              : 8;  /**< [ 23: 16](RO) N_FTS when common clock is used.
12546                                                                  The number of fast training sequence (FTS) ordered sets to be transmitted when
12547                                                                  transitioning from L0s to L0. The maximum number of FTS ordered sets that a component can
12548                                                                  request is 255.
12549                                                                  A value of zero is not supported; a value of zero can cause the LTSSM to go into the
12550                                                                  recovery state when exiting from L0s. */
12551         uint32_t n_fts                 : 8;  /**< [ 15:  8](R/W) N_FTS. The number of fast training sequence (FTS) ordered sets to be transmitted when
12552                                                                  transitioning from L0s to L0. The maximum number of FTS ordered sets that a component can
12553                                                                  request is 255.
12554                                                                  A value of zero is not supported; a value of zero can cause the LTSSM to go into the
12555                                                                  recovery state when exiting from L0s. */
12556         uint32_t ack_freq              : 8;  /**< [  7:  0](R/W) ACK frequency. The number of pending ACKs specified here (up to 255) before sending an ACK. */
12557 #else /* Word 0 - Little Endian */
12558         uint32_t ack_freq              : 8;  /**< [  7:  0](R/W) ACK frequency. The number of pending ACKs specified here (up to 255) before sending an ACK. */
12559         uint32_t n_fts                 : 8;  /**< [ 15:  8](R/W) N_FTS. The number of fast training sequence (FTS) ordered sets to be transmitted when
12560                                                                  transitioning from L0s to L0. The maximum number of FTS ordered sets that a component can
12561                                                                  request is 255.
12562                                                                  A value of zero is not supported; a value of zero can cause the LTSSM to go into the
12563                                                                  recovery state when exiting from L0s. */
12564         uint32_t n_fts_cc              : 8;  /**< [ 23: 16](RO) N_FTS when common clock is used.
12565                                                                  The number of fast training sequence (FTS) ordered sets to be transmitted when
12566                                                                  transitioning from L0s to L0. The maximum number of FTS ordered sets that a component can
12567                                                                  request is 255.
12568                                                                  A value of zero is not supported; a value of zero can cause the LTSSM to go into the
12569                                                                  recovery state when exiting from L0s. */
12570         uint32_t l0el                  : 3;  /**< [ 26: 24](R/W) L0s entrance latency. Values correspond to:
12571                                                                  0x0 = 1 ms.
12572                                                                  0x1 = 2 ms.
12573                                                                  0x2 = 3 ms.
12574                                                                  0x3 = 4 ms.
12575                                                                  0x4 = 5 ms.
12576                                                                  0x5 = 6 ms.
12577                                                                  0x6 or 0x7 = 7 ms. */
12578         uint32_t l1el                  : 3;  /**< [ 29: 27](R/W) L1 entrance latency. Values correspond to:
12579                                                                  0x0 = 1 ms.
12580                                                                  0x1 = 2 ms.
12581                                                                  0x2 = 4 ms.
12582                                                                  0x3 = 8 ms.
12583                                                                  0x4 = 16 ms.
12584                                                                  0x5 = 32 ms.
12585                                                                  0x6 or 0x7 = 64 ms. */
12586         uint32_t easpml1               : 1;  /**< [ 30: 30](R/W/H) Enter ASPM L1 without receive in L0s. Allow core to enter ASPM L1 even when link partner
12587                                                                  did not go to L0s (receive is not in L0s). When not set, core goes to ASPM L1 only after
12588                                                                  idle period, during which both receive and transmit are in L0s. */
12589         uint32_t reserved_31           : 1;
12590 #endif /* Word 0 - End */
12591     } s;
12592     /* struct bdk_pciercx_cfg451_s cn; */
12593 };
12594 typedef union bdk_pciercx_cfg451 bdk_pciercx_cfg451_t;
12595 
12596 static inline uint64_t BDK_PCIERCX_CFG451(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG451(unsigned long a)12597 static inline uint64_t BDK_PCIERCX_CFG451(unsigned long a)
12598 {
12599     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
12600         return 0x2000000070cll + 0x100000000ll * ((a) & 0x3);
12601     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12602         return 0x2000000070cll + 0x100000000ll * ((a) & 0x3);
12603     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
12604         return 0x2000000070cll + 0x100000000ll * ((a) & 0x7);
12605     __bdk_csr_fatal("PCIERCX_CFG451", 1, a, 0, 0, 0);
12606 }
12607 
12608 #define typedef_BDK_PCIERCX_CFG451(a) bdk_pciercx_cfg451_t
12609 #define bustype_BDK_PCIERCX_CFG451(a) BDK_CSR_TYPE_PCICONFIGRC
12610 #define basename_BDK_PCIERCX_CFG451(a) "PCIERCX_CFG451"
12611 #define busnum_BDK_PCIERCX_CFG451(a) (a)
12612 #define arguments_BDK_PCIERCX_CFG451(a) (a),-1,-1,-1
12613 
12614 /**
12615  * Register (PCICONFIGRC) pcierc#_cfg452
12616  *
12617  * PCIe RC Port Link Control Register
12618  * This register contains the four hundred fifty-third 32-bits of PCIe type 1 configuration space.
12619  */
12620 union bdk_pciercx_cfg452
12621 {
12622     uint32_t u;
12623     struct bdk_pciercx_cfg452_s
12624     {
12625 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12626         uint32_t reserved_28_31        : 4;
12627         uint32_t xlr_en                : 1;  /**< [ 27: 27](R/W) Transmit lane reversible enable.  Internally reserved field, do not set. */
12628         uint32_t ex_synch              : 1;  /**< [ 26: 26](R/W) Extended synch.  Internally reserved field, do not set. */
12629         uint32_t clcrc_en              : 1;  /**< [ 25: 25](R/W) Corrupt LCRC enable.  Internally reserved field, do not set. */
12630         uint32_t beacon_en             : 1;  /**< [ 24: 24](R/W) Beacon enable.  Internally reserved field, do not set. */
12631         uint32_t cle                   : 2;  /**< [ 23: 22](RAZ) Reserved. */
12632         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
12633                                                                  0x1 = x1.
12634                                                                  0x3 = x2.
12635                                                                  0x7 = x4.
12636                                                                  0xF = x8 (not supported).
12637                                                                  0x1F = x16 (not supported).
12638                                                                  0x3F = x32 (not supported).
12639 
12640                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
12641                                                                  be set less than 0xF to limit the number of lanes the PCIe will attempt to use. The
12642                                                                  programming of this field needs to be done by software before enabling the link. See also
12643                                                                  PCIERC()_CFG031[MLW].
12644                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
12645                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
12646                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x4,
12647                                                                  x2, and x1 are supported when
12648                                                                  LME = 0x7, for example. */
12649         uint32_t reserved_12_15        : 4;
12650         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
12651         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes. */
12652         uint32_t ldis                  : 1;  /**< [  6:  6](R/W) Link disable. Internally reserved field, do not set. */
12653         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
12654                                                                  does not transmit InitFC DLLPs and does not establish a link. */
12655         uint32_t reserved_4            : 1;
12656         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
12657                                                                  port only). */
12658         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
12659                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
12660                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
12661                                                                  mode, take the link through a reset sequence. */
12662         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
12663         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a 1 to this bit, the PCI Express bus transmits
12664                                                                  the message contained in the other message register. */
12665 #else /* Word 0 - Little Endian */
12666         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a 1 to this bit, the PCI Express bus transmits
12667                                                                  the message contained in the other message register. */
12668         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
12669         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
12670                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
12671                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
12672                                                                  mode, take the link through a reset sequence. */
12673         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
12674                                                                  port only). */
12675         uint32_t reserved_4            : 1;
12676         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
12677                                                                  does not transmit InitFC DLLPs and does not establish a link. */
12678         uint32_t ldis                  : 1;  /**< [  6:  6](R/W) Link disable. Internally reserved field, do not set. */
12679         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes. */
12680         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
12681         uint32_t reserved_12_15        : 4;
12682         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
12683                                                                  0x1 = x1.
12684                                                                  0x3 = x2.
12685                                                                  0x7 = x4.
12686                                                                  0xF = x8 (not supported).
12687                                                                  0x1F = x16 (not supported).
12688                                                                  0x3F = x32 (not supported).
12689 
12690                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
12691                                                                  be set less than 0xF to limit the number of lanes the PCIe will attempt to use. The
12692                                                                  programming of this field needs to be done by software before enabling the link. See also
12693                                                                  PCIERC()_CFG031[MLW].
12694                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
12695                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
12696                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x4,
12697                                                                  x2, and x1 are supported when
12698                                                                  LME = 0x7, for example. */
12699         uint32_t cle                   : 2;  /**< [ 23: 22](RAZ) Reserved. */
12700         uint32_t beacon_en             : 1;  /**< [ 24: 24](R/W) Beacon enable.  Internally reserved field, do not set. */
12701         uint32_t clcrc_en              : 1;  /**< [ 25: 25](R/W) Corrupt LCRC enable.  Internally reserved field, do not set. */
12702         uint32_t ex_synch              : 1;  /**< [ 26: 26](R/W) Extended synch.  Internally reserved field, do not set. */
12703         uint32_t xlr_en                : 1;  /**< [ 27: 27](R/W) Transmit lane reversible enable.  Internally reserved field, do not set. */
12704         uint32_t reserved_28_31        : 4;
12705 #endif /* Word 0 - End */
12706     } s;
12707     struct bdk_pciercx_cfg452_cn81xx
12708     {
12709 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12710         uint32_t reserved_28_31        : 4;
12711         uint32_t reserved_24_27        : 4;
12712         uint32_t reserved_22_23        : 2;
12713         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
12714                                                                  0x1 = x1.
12715                                                                  0x3 = x2.
12716                                                                  0x7 = x4.
12717                                                                  0xF = x8 (not supported).
12718                                                                  0x1F = x16 (not supported).
12719                                                                  0x3F = x32 (not supported).
12720 
12721                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
12722                                                                  be set less than 0xF to limit the number of lanes the PCIe will attempt to use. The
12723                                                                  programming of this field needs to be done by software before enabling the link. See also
12724                                                                  PCIERC()_CFG031[MLW].
12725                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
12726                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
12727                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x4,
12728                                                                  x2, and x1 are supported when
12729                                                                  LME = 0x7, for example. */
12730         uint32_t reserved_12_15        : 4;
12731         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
12732         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes. */
12733         uint32_t reserved_6            : 1;
12734         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
12735                                                                  does not transmit InitFC DLLPs and does not establish a link. */
12736         uint32_t reserved_4            : 1;
12737         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
12738                                                                  port only). */
12739         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
12740                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
12741                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
12742                                                                  mode, take the link through a reset sequence. */
12743         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
12744         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a 1 to this bit, the PCI Express bus transmits
12745                                                                  the message contained in the other message register. */
12746 #else /* Word 0 - Little Endian */
12747         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a 1 to this bit, the PCI Express bus transmits
12748                                                                  the message contained in the other message register. */
12749         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
12750         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
12751                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
12752                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
12753                                                                  mode, take the link through a reset sequence. */
12754         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
12755                                                                  port only). */
12756         uint32_t reserved_4            : 1;
12757         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
12758                                                                  does not transmit InitFC DLLPs and does not establish a link. */
12759         uint32_t reserved_6            : 1;
12760         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes. */
12761         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
12762         uint32_t reserved_12_15        : 4;
12763         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
12764                                                                  0x1 = x1.
12765                                                                  0x3 = x2.
12766                                                                  0x7 = x4.
12767                                                                  0xF = x8 (not supported).
12768                                                                  0x1F = x16 (not supported).
12769                                                                  0x3F = x32 (not supported).
12770 
12771                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
12772                                                                  be set less than 0xF to limit the number of lanes the PCIe will attempt to use. The
12773                                                                  programming of this field needs to be done by software before enabling the link. See also
12774                                                                  PCIERC()_CFG031[MLW].
12775                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
12776                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
12777                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x4,
12778                                                                  x2, and x1 are supported when
12779                                                                  LME = 0x7, for example. */
12780         uint32_t reserved_22_23        : 2;
12781         uint32_t reserved_24_27        : 4;
12782         uint32_t reserved_28_31        : 4;
12783 #endif /* Word 0 - End */
12784     } cn81xx;
12785     struct bdk_pciercx_cfg452_cn88xx
12786     {
12787 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12788         uint32_t reserved_28_31        : 4;
12789         uint32_t reserved_24_27        : 4;
12790         uint32_t reserved_22_23        : 2;
12791         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
12792                                                                  0x1 = x1.
12793                                                                  0x3 = x2.
12794                                                                  0x7 = x4.
12795                                                                  0xF = x8.
12796                                                                  0x1F = x16 (not supported).
12797                                                                  0x3F = x32 (not supported).
12798 
12799                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
12800                                                                  be set less than 0xF to limit the number of lanes the PCIe will attempt to use. The
12801                                                                  programming of this field needs to be done by software before enabling the link. See also
12802                                                                  PCIERC()_CFG031[MLW].
12803                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
12804                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
12805                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x8, x4,
12806                                                                  x2, and x1 are supported when
12807                                                                  LME = 0xF, for example. */
12808         uint32_t reserved_12_15        : 4;
12809         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
12810         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes. */
12811         uint32_t reserved_6            : 1;
12812         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
12813                                                                  does not transmit InitFC DLLPs and does not establish a link. */
12814         uint32_t reserved_4            : 1;
12815         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
12816                                                                  port only). */
12817         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
12818                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
12819                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
12820                                                                  mode, take the link through a reset sequence. */
12821         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
12822         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a 1 to this bit, the PCI Express bus transmits
12823                                                                  the message contained in the other message register. */
12824 #else /* Word 0 - Little Endian */
12825         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a 1 to this bit, the PCI Express bus transmits
12826                                                                  the message contained in the other message register. */
12827         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
12828         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
12829                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
12830                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
12831                                                                  mode, take the link through a reset sequence. */
12832         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
12833                                                                  port only). */
12834         uint32_t reserved_4            : 1;
12835         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
12836                                                                  does not transmit InitFC DLLPs and does not establish a link. */
12837         uint32_t reserved_6            : 1;
12838         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes. */
12839         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
12840         uint32_t reserved_12_15        : 4;
12841         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
12842                                                                  0x1 = x1.
12843                                                                  0x3 = x2.
12844                                                                  0x7 = x4.
12845                                                                  0xF = x8.
12846                                                                  0x1F = x16 (not supported).
12847                                                                  0x3F = x32 (not supported).
12848 
12849                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
12850                                                                  be set less than 0xF to limit the number of lanes the PCIe will attempt to use. The
12851                                                                  programming of this field needs to be done by software before enabling the link. See also
12852                                                                  PCIERC()_CFG031[MLW].
12853                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
12854                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
12855                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x8, x4,
12856                                                                  x2, and x1 are supported when
12857                                                                  LME = 0xF, for example. */
12858         uint32_t reserved_22_23        : 2;
12859         uint32_t reserved_24_27        : 4;
12860         uint32_t reserved_28_31        : 4;
12861 #endif /* Word 0 - End */
12862     } cn88xx;
12863     struct bdk_pciercx_cfg452_cn83xx
12864     {
12865 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12866         uint32_t reserved_28_31        : 4;
12867         uint32_t xlr_en                : 1;  /**< [ 27: 27](R/W) Transmit lane reversible enable.  Internally reserved field, do not set. */
12868         uint32_t ex_synch              : 1;  /**< [ 26: 26](R/W) Extended synch.  Internally reserved field, do not set. */
12869         uint32_t clcrc_en              : 1;  /**< [ 25: 25](R/W) Corrupt LCRC enable.  Internally reserved field, do not set. */
12870         uint32_t beacon_en             : 1;  /**< [ 24: 24](R/W) Beacon enable.  Internally reserved field, do not set. */
12871         uint32_t cle                   : 2;  /**< [ 23: 22](RAZ) Reserved. */
12872         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
12873                                                                  0x1 = x1.
12874                                                                  0x3 = x2.
12875                                                                  0x7 = x4.
12876                                                                  0xF = x8.
12877                                                                  0x1F = x16 (not supported).
12878                                                                  0x3F = x32 (not supported).
12879 
12880                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
12881                                                                  be set less than 0xF to limit the number of lanes the PCIe will attempt to use. The
12882                                                                  programming of this field needs to be done by software before enabling the link. See also
12883                                                                  PCIERC()_CFG031[MLW].
12884                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
12885                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
12886                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x8, x4,
12887                                                                  x2, and x1 are supported when
12888                                                                  LME = 0xF, for example. */
12889         uint32_t reserved_12_15        : 4;
12890         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
12891         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes.
12892                                                                  The scaling factor is configured by PCIEEP()_CFG454[FLMSF]. */
12893         uint32_t ldis                  : 1;  /**< [  6:  6](R/W) Link disable. Internally reserved field, do not set. */
12894         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
12895                                                                  does not transmit InitFC DLLPs and does not establish a link. */
12896         uint32_t reserved_4            : 1;
12897         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
12898                                                                  port only). */
12899         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
12900                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
12901                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
12902                                                                  mode, take the link through a reset sequence. */
12903         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
12904         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a 1 to this bit, the PCI Express bus transmits
12905                                                                  the message contained in the other message register. */
12906 #else /* Word 0 - Little Endian */
12907         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a 1 to this bit, the PCI Express bus transmits
12908                                                                  the message contained in the other message register. */
12909         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
12910         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
12911                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
12912                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
12913                                                                  mode, take the link through a reset sequence. */
12914         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
12915                                                                  port only). */
12916         uint32_t reserved_4            : 1;
12917         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
12918                                                                  does not transmit InitFC DLLPs and does not establish a link. */
12919         uint32_t ldis                  : 1;  /**< [  6:  6](R/W) Link disable. Internally reserved field, do not set. */
12920         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes.
12921                                                                  The scaling factor is configured by PCIEEP()_CFG454[FLMSF]. */
12922         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
12923         uint32_t reserved_12_15        : 4;
12924         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
12925                                                                  0x1 = x1.
12926                                                                  0x3 = x2.
12927                                                                  0x7 = x4.
12928                                                                  0xF = x8.
12929                                                                  0x1F = x16 (not supported).
12930                                                                  0x3F = x32 (not supported).
12931 
12932                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
12933                                                                  be set less than 0xF to limit the number of lanes the PCIe will attempt to use. The
12934                                                                  programming of this field needs to be done by software before enabling the link. See also
12935                                                                  PCIERC()_CFG031[MLW].
12936                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
12937                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
12938                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x8, x4,
12939                                                                  x2, and x1 are supported when
12940                                                                  LME = 0xF, for example. */
12941         uint32_t cle                   : 2;  /**< [ 23: 22](RAZ) Reserved. */
12942         uint32_t beacon_en             : 1;  /**< [ 24: 24](R/W) Beacon enable.  Internally reserved field, do not set. */
12943         uint32_t clcrc_en              : 1;  /**< [ 25: 25](R/W) Corrupt LCRC enable.  Internally reserved field, do not set. */
12944         uint32_t ex_synch              : 1;  /**< [ 26: 26](R/W) Extended synch.  Internally reserved field, do not set. */
12945         uint32_t xlr_en                : 1;  /**< [ 27: 27](R/W) Transmit lane reversible enable.  Internally reserved field, do not set. */
12946         uint32_t reserved_28_31        : 4;
12947 #endif /* Word 0 - End */
12948     } cn83xx;
12949 };
12950 typedef union bdk_pciercx_cfg452 bdk_pciercx_cfg452_t;
12951 
12952 static inline uint64_t BDK_PCIERCX_CFG452(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG452(unsigned long a)12953 static inline uint64_t BDK_PCIERCX_CFG452(unsigned long a)
12954 {
12955     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
12956         return 0x20000000710ll + 0x100000000ll * ((a) & 0x3);
12957     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
12958         return 0x20000000710ll + 0x100000000ll * ((a) & 0x3);
12959     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
12960         return 0x20000000710ll + 0x100000000ll * ((a) & 0x7);
12961     __bdk_csr_fatal("PCIERCX_CFG452", 1, a, 0, 0, 0);
12962 }
12963 
12964 #define typedef_BDK_PCIERCX_CFG452(a) bdk_pciercx_cfg452_t
12965 #define bustype_BDK_PCIERCX_CFG452(a) BDK_CSR_TYPE_PCICONFIGRC
12966 #define basename_BDK_PCIERCX_CFG452(a) "PCIERCX_CFG452"
12967 #define busnum_BDK_PCIERCX_CFG452(a) (a)
12968 #define arguments_BDK_PCIERCX_CFG452(a) (a),-1,-1,-1
12969 
12970 /**
12971  * Register (PCICONFIGRC) pcierc#_cfg453
12972  *
12973  * PCIe RC Lane Skew Register
12974  * This register contains the four hundred fifty-fourth 32-bits of PCIe type 1 configuration space.
12975  */
12976 union bdk_pciercx_cfg453
12977 {
12978     uint32_t u;
12979     struct bdk_pciercx_cfg453_s
12980     {
12981 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
12982         uint32_t dlld                  : 1;  /**< [ 31: 31](R/W) Disable lane-to-lane deskew. Disables the internal lane-to-lane deskew logic. */
12983         uint32_t reserved_26_30        : 5;
12984         uint32_t ack_nak               : 1;  /**< [ 25: 25](R/W) ACK/NAK disable. Prevents the PCI Express bus from sending Ack and Nak DLLPs. */
12985         uint32_t fcd                   : 1;  /**< [ 24: 24](R/W) Flow control disable. Prevents the PCI Express bus from sending FC DLLPs. */
12986         uint32_t ilst                  : 24; /**< [ 23:  0](R/W) Insert lane skew for transmit (not supported for *16). Causes skew between lanes for test
12987                                                                  purposes. There are three bits per lane. The value is in units of one symbol time. For
12988                                                                  example, the value 0x2 for a lane forces a skew of two symbol times for that lane. The
12989                                                                  maximum skew value for any lane is 5 symbol times. */
12990 #else /* Word 0 - Little Endian */
12991         uint32_t ilst                  : 24; /**< [ 23:  0](R/W) Insert lane skew for transmit (not supported for *16). Causes skew between lanes for test
12992                                                                  purposes. There are three bits per lane. The value is in units of one symbol time. For
12993                                                                  example, the value 0x2 for a lane forces a skew of two symbol times for that lane. The
12994                                                                  maximum skew value for any lane is 5 symbol times. */
12995         uint32_t fcd                   : 1;  /**< [ 24: 24](R/W) Flow control disable. Prevents the PCI Express bus from sending FC DLLPs. */
12996         uint32_t ack_nak               : 1;  /**< [ 25: 25](R/W) ACK/NAK disable. Prevents the PCI Express bus from sending Ack and Nak DLLPs. */
12997         uint32_t reserved_26_30        : 5;
12998         uint32_t dlld                  : 1;  /**< [ 31: 31](R/W) Disable lane-to-lane deskew. Disables the internal lane-to-lane deskew logic. */
12999 #endif /* Word 0 - End */
13000     } s;
13001     /* struct bdk_pciercx_cfg453_s cn; */
13002 };
13003 typedef union bdk_pciercx_cfg453 bdk_pciercx_cfg453_t;
13004 
13005 static inline uint64_t BDK_PCIERCX_CFG453(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG453(unsigned long a)13006 static inline uint64_t BDK_PCIERCX_CFG453(unsigned long a)
13007 {
13008     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13009         return 0x20000000714ll + 0x100000000ll * ((a) & 0x3);
13010     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13011         return 0x20000000714ll + 0x100000000ll * ((a) & 0x3);
13012     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13013         return 0x20000000714ll + 0x100000000ll * ((a) & 0x7);
13014     __bdk_csr_fatal("PCIERCX_CFG453", 1, a, 0, 0, 0);
13015 }
13016 
13017 #define typedef_BDK_PCIERCX_CFG453(a) bdk_pciercx_cfg453_t
13018 #define bustype_BDK_PCIERCX_CFG453(a) BDK_CSR_TYPE_PCICONFIGRC
13019 #define basename_BDK_PCIERCX_CFG453(a) "PCIERCX_CFG453"
13020 #define busnum_BDK_PCIERCX_CFG453(a) (a)
13021 #define arguments_BDK_PCIERCX_CFG453(a) (a),-1,-1,-1
13022 
13023 /**
13024  * Register (PCICONFIGRC) pcierc#_cfg454
13025  *
13026  * PCIe RC Symbol Number Register
13027  * This register contains the four hundred fifty-fifth 32-bits of PCIe type 1 configuration space.
13028  */
13029 union bdk_pciercx_cfg454
13030 {
13031     uint32_t u;
13032     struct bdk_pciercx_cfg454_s
13033     {
13034 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13035         uint32_t reserved_31           : 1;
13036         uint32_t flmsf                 : 2;  /**< [ 30: 29](R/W) Fast Link Timer Scaling Factor. Sets the scaling factor of
13037                                                                  LTSSM timer when PCIERC()_CFG452[FLM] is set.
13038                                                                  0x0: Scaling Factor is 1024 (1ms is 1us)
13039                                                                  0x1: Scaling Factor is 256 (1ms is 4us)
13040                                                                  0x2: Scaling Factor is 64 (1ms is 16us)
13041                                                                  0x3: Scaling Factor is 16 (1ms is 64us) */
13042         uint32_t reserved_24_28        : 5;
13043         uint32_t tmanlt                : 5;  /**< [ 23: 19](R/W) Timer modifier for ACK/NAK latency timer. Increases the timer value for the ACK/NAK
13044                                                                  latency timer, in increments of 64 clock cycles. */
13045         uint32_t tmrt                  : 5;  /**< [ 18: 14](R/W/H) Timer modifier for replay timer. Increases the timer value for the replay timer, in
13046                                                                  increments of 64 clock cycles. */
13047         uint32_t reserved_8_13         : 6;
13048         uint32_t mfuncn                : 8;  /**< [  7:  0](R/W) Max number of functions supported. */
13049 #else /* Word 0 - Little Endian */
13050         uint32_t mfuncn                : 8;  /**< [  7:  0](R/W) Max number of functions supported. */
13051         uint32_t reserved_8_13         : 6;
13052         uint32_t tmrt                  : 5;  /**< [ 18: 14](R/W/H) Timer modifier for replay timer. Increases the timer value for the replay timer, in
13053                                                                  increments of 64 clock cycles. */
13054         uint32_t tmanlt                : 5;  /**< [ 23: 19](R/W) Timer modifier for ACK/NAK latency timer. Increases the timer value for the ACK/NAK
13055                                                                  latency timer, in increments of 64 clock cycles. */
13056         uint32_t reserved_24_28        : 5;
13057         uint32_t flmsf                 : 2;  /**< [ 30: 29](R/W) Fast Link Timer Scaling Factor. Sets the scaling factor of
13058                                                                  LTSSM timer when PCIERC()_CFG452[FLM] is set.
13059                                                                  0x0: Scaling Factor is 1024 (1ms is 1us)
13060                                                                  0x1: Scaling Factor is 256 (1ms is 4us)
13061                                                                  0x2: Scaling Factor is 64 (1ms is 16us)
13062                                                                  0x3: Scaling Factor is 16 (1ms is 64us) */
13063         uint32_t reserved_31           : 1;
13064 #endif /* Word 0 - End */
13065     } s;
13066     struct bdk_pciercx_cfg454_cn81xx
13067     {
13068 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13069         uint32_t reserved_29_31        : 3;
13070         uint32_t tmfcwt                : 5;  /**< [ 28: 24](R/W) Used to be 'timer modifier for flow control watchdog timer.' This field is no longer used.
13071                                                                  and has moved to the queue status register -- PCIERC()_CFG463. This field remains to
13072                                                                  prevent software from breaking. */
13073         uint32_t tmanlt                : 5;  /**< [ 23: 19](R/W) Timer modifier for ACK/NAK latency timer. Increases the timer value for the ACK/NAK
13074                                                                  latency timer, in increments of 64 clock cycles. */
13075         uint32_t tmrt                  : 5;  /**< [ 18: 14](R/W/H) Timer modifier for replay timer. Increases the timer value for the replay timer, in
13076                                                                  increments of 64 clock cycles. */
13077         uint32_t reserved_8_13         : 6;
13078         uint32_t mfuncn                : 8;  /**< [  7:  0](R/W) Max number of functions supported. */
13079 #else /* Word 0 - Little Endian */
13080         uint32_t mfuncn                : 8;  /**< [  7:  0](R/W) Max number of functions supported. */
13081         uint32_t reserved_8_13         : 6;
13082         uint32_t tmrt                  : 5;  /**< [ 18: 14](R/W/H) Timer modifier for replay timer. Increases the timer value for the replay timer, in
13083                                                                  increments of 64 clock cycles. */
13084         uint32_t tmanlt                : 5;  /**< [ 23: 19](R/W) Timer modifier for ACK/NAK latency timer. Increases the timer value for the ACK/NAK
13085                                                                  latency timer, in increments of 64 clock cycles. */
13086         uint32_t tmfcwt                : 5;  /**< [ 28: 24](R/W) Used to be 'timer modifier for flow control watchdog timer.' This field is no longer used.
13087                                                                  and has moved to the queue status register -- PCIERC()_CFG463. This field remains to
13088                                                                  prevent software from breaking. */
13089         uint32_t reserved_29_31        : 3;
13090 #endif /* Word 0 - End */
13091     } cn81xx;
13092     /* struct bdk_pciercx_cfg454_cn81xx cn88xx; */
13093     struct bdk_pciercx_cfg454_cn83xx
13094     {
13095 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13096         uint32_t reserved_31           : 1;
13097         uint32_t flmsf                 : 2;  /**< [ 30: 29](R/W) Fast Link Timer Scaling Factor. Sets the scaling factor of
13098                                                                  LTSSM timer when PCIERC()_CFG452[FLM] is set.
13099                                                                  0x0: Scaling Factor is 1024 (1ms is 1us)
13100                                                                  0x1: Scaling Factor is 256 (1ms is 4us)
13101                                                                  0x2: Scaling Factor is 64 (1ms is 16us)
13102                                                                  0x3: Scaling Factor is 16 (1ms is 64us) */
13103         uint32_t updft                 : 5;  /**< [ 28: 24](R/W) Update Frequency Timer.  This is an internally reserved field, do not use. */
13104         uint32_t tmanlt                : 5;  /**< [ 23: 19](R/W) Timer modifier for ACK/NAK latency timer. Increases the timer value for the ACK/NAK
13105                                                                  latency timer, in increments of 64 clock cycles. */
13106         uint32_t tmrt                  : 5;  /**< [ 18: 14](R/W/H) Timer modifier for replay timer. Increases the timer value for the replay timer, in
13107                                                                  increments of 64 clock cycles. */
13108         uint32_t reserved_8_13         : 6;
13109         uint32_t mfuncn                : 8;  /**< [  7:  0](R/W) Max number of functions supported. */
13110 #else /* Word 0 - Little Endian */
13111         uint32_t mfuncn                : 8;  /**< [  7:  0](R/W) Max number of functions supported. */
13112         uint32_t reserved_8_13         : 6;
13113         uint32_t tmrt                  : 5;  /**< [ 18: 14](R/W/H) Timer modifier for replay timer. Increases the timer value for the replay timer, in
13114                                                                  increments of 64 clock cycles. */
13115         uint32_t tmanlt                : 5;  /**< [ 23: 19](R/W) Timer modifier for ACK/NAK latency timer. Increases the timer value for the ACK/NAK
13116                                                                  latency timer, in increments of 64 clock cycles. */
13117         uint32_t updft                 : 5;  /**< [ 28: 24](R/W) Update Frequency Timer.  This is an internally reserved field, do not use. */
13118         uint32_t flmsf                 : 2;  /**< [ 30: 29](R/W) Fast Link Timer Scaling Factor. Sets the scaling factor of
13119                                                                  LTSSM timer when PCIERC()_CFG452[FLM] is set.
13120                                                                  0x0: Scaling Factor is 1024 (1ms is 1us)
13121                                                                  0x1: Scaling Factor is 256 (1ms is 4us)
13122                                                                  0x2: Scaling Factor is 64 (1ms is 16us)
13123                                                                  0x3: Scaling Factor is 16 (1ms is 64us) */
13124         uint32_t reserved_31           : 1;
13125 #endif /* Word 0 - End */
13126     } cn83xx;
13127 };
13128 typedef union bdk_pciercx_cfg454 bdk_pciercx_cfg454_t;
13129 
13130 static inline uint64_t BDK_PCIERCX_CFG454(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG454(unsigned long a)13131 static inline uint64_t BDK_PCIERCX_CFG454(unsigned long a)
13132 {
13133     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13134         return 0x20000000718ll + 0x100000000ll * ((a) & 0x3);
13135     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13136         return 0x20000000718ll + 0x100000000ll * ((a) & 0x3);
13137     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13138         return 0x20000000718ll + 0x100000000ll * ((a) & 0x7);
13139     __bdk_csr_fatal("PCIERCX_CFG454", 1, a, 0, 0, 0);
13140 }
13141 
13142 #define typedef_BDK_PCIERCX_CFG454(a) bdk_pciercx_cfg454_t
13143 #define bustype_BDK_PCIERCX_CFG454(a) BDK_CSR_TYPE_PCICONFIGRC
13144 #define basename_BDK_PCIERCX_CFG454(a) "PCIERCX_CFG454"
13145 #define busnum_BDK_PCIERCX_CFG454(a) (a)
13146 #define arguments_BDK_PCIERCX_CFG454(a) (a),-1,-1,-1
13147 
13148 /**
13149  * Register (PCICONFIGRC) pcierc#_cfg455
13150  *
13151  * PCIe RC Symbol Timer/Filter Mask Register 1
13152  * This register contains the four hundred fifty-sixth 32-bits of PCIe type 1 configuration space.
13153  */
13154 union bdk_pciercx_cfg455
13155 {
13156     uint32_t u;
13157     struct bdk_pciercx_cfg455_s
13158     {
13159 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13160         uint32_t m_cfg0_filt           : 1;  /**< [ 31: 31](R/W) Mask filtering of received configuration requests (RC mode only). */
13161         uint32_t m_io_filt             : 1;  /**< [ 30: 30](R/W) Mask filtering of received I/O requests (RC mode only). */
13162         uint32_t msg_ctrl              : 1;  /**< [ 29: 29](R/W) Message control. The application must not change this field. */
13163         uint32_t m_cpl_ecrc_filt       : 1;  /**< [ 28: 28](R/W) Mask ECRC error filtering for completions. */
13164         uint32_t m_ecrc_filt           : 1;  /**< [ 27: 27](R/W) Mask ECRC error filtering. */
13165         uint32_t m_cpl_len_err         : 1;  /**< [ 26: 26](R/W) Mask length mismatch error for received completions. */
13166         uint32_t m_cpl_attr_err        : 1;  /**< [ 25: 25](R/W) Mask attributes mismatch error for received completions. */
13167         uint32_t m_cpl_tc_err          : 1;  /**< [ 24: 24](R/W) Mask traffic class mismatch error for received completions. */
13168         uint32_t m_cpl_fun_err         : 1;  /**< [ 23: 23](R/W) Mask function mismatch error for received completions. */
13169         uint32_t m_cpl_rid_err         : 1;  /**< [ 22: 22](R/W) Mask requester ID mismatch error for received completions. */
13170         uint32_t m_cpl_tag_err         : 1;  /**< [ 21: 21](R/W) Mask tag error rules for received completions. */
13171         uint32_t m_lk_filt             : 1;  /**< [ 20: 20](R/W) Mask locked request filtering. */
13172         uint32_t m_cfg1_filt           : 1;  /**< [ 19: 19](R/W) Mask type 1 configuration request filtering. */
13173         uint32_t m_bar_match           : 1;  /**< [ 18: 18](R/W) Mask BAR match filtering. */
13174         uint32_t m_pois_filt           : 1;  /**< [ 17: 17](R/W) Mask poisoned TLP filtering. */
13175         uint32_t m_fun                 : 1;  /**< [ 16: 16](R/W) Mask function. */
13176         uint32_t dfcwt                 : 1;  /**< [ 15: 15](R/W) Disable FC watchdog timer. */
13177         uint32_t reserved_11_14        : 4;
13178         uint32_t skpiv                 : 11; /**< [ 10:  0](R/W) SKP interval value. */
13179 #else /* Word 0 - Little Endian */
13180         uint32_t skpiv                 : 11; /**< [ 10:  0](R/W) SKP interval value. */
13181         uint32_t reserved_11_14        : 4;
13182         uint32_t dfcwt                 : 1;  /**< [ 15: 15](R/W) Disable FC watchdog timer. */
13183         uint32_t m_fun                 : 1;  /**< [ 16: 16](R/W) Mask function. */
13184         uint32_t m_pois_filt           : 1;  /**< [ 17: 17](R/W) Mask poisoned TLP filtering. */
13185         uint32_t m_bar_match           : 1;  /**< [ 18: 18](R/W) Mask BAR match filtering. */
13186         uint32_t m_cfg1_filt           : 1;  /**< [ 19: 19](R/W) Mask type 1 configuration request filtering. */
13187         uint32_t m_lk_filt             : 1;  /**< [ 20: 20](R/W) Mask locked request filtering. */
13188         uint32_t m_cpl_tag_err         : 1;  /**< [ 21: 21](R/W) Mask tag error rules for received completions. */
13189         uint32_t m_cpl_rid_err         : 1;  /**< [ 22: 22](R/W) Mask requester ID mismatch error for received completions. */
13190         uint32_t m_cpl_fun_err         : 1;  /**< [ 23: 23](R/W) Mask function mismatch error for received completions. */
13191         uint32_t m_cpl_tc_err          : 1;  /**< [ 24: 24](R/W) Mask traffic class mismatch error for received completions. */
13192         uint32_t m_cpl_attr_err        : 1;  /**< [ 25: 25](R/W) Mask attributes mismatch error for received completions. */
13193         uint32_t m_cpl_len_err         : 1;  /**< [ 26: 26](R/W) Mask length mismatch error for received completions. */
13194         uint32_t m_ecrc_filt           : 1;  /**< [ 27: 27](R/W) Mask ECRC error filtering. */
13195         uint32_t m_cpl_ecrc_filt       : 1;  /**< [ 28: 28](R/W) Mask ECRC error filtering for completions. */
13196         uint32_t msg_ctrl              : 1;  /**< [ 29: 29](R/W) Message control. The application must not change this field. */
13197         uint32_t m_io_filt             : 1;  /**< [ 30: 30](R/W) Mask filtering of received I/O requests (RC mode only). */
13198         uint32_t m_cfg0_filt           : 1;  /**< [ 31: 31](R/W) Mask filtering of received configuration requests (RC mode only). */
13199 #endif /* Word 0 - End */
13200     } s;
13201     /* struct bdk_pciercx_cfg455_s cn81xx; */
13202     /* struct bdk_pciercx_cfg455_s cn88xx; */
13203     struct bdk_pciercx_cfg455_cn83xx
13204     {
13205 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13206         uint32_t m_cfg0_filt           : 1;  /**< [ 31: 31](R/W) Mask filtering of received configuration requests (RC mode only). */
13207         uint32_t m_io_filt             : 1;  /**< [ 30: 30](R/W) Mask filtering of received I/O requests (RC mode only). */
13208         uint32_t msg_ctrl              : 1;  /**< [ 29: 29](R/W) Message control. The application must not change this field. */
13209         uint32_t m_cpl_ecrc_filt       : 1;  /**< [ 28: 28](R/W) Mask ECRC error filtering for completions. */
13210         uint32_t m_ecrc_filt           : 1;  /**< [ 27: 27](R/W) Mask ECRC error filtering. */
13211         uint32_t m_cpl_len_err         : 1;  /**< [ 26: 26](R/W) Mask length mismatch error for received completions. */
13212         uint32_t m_cpl_attr_err        : 1;  /**< [ 25: 25](R/W) Mask attributes mismatch error for received completions. */
13213         uint32_t m_cpl_tc_err          : 1;  /**< [ 24: 24](R/W) Mask traffic class mismatch error for received completions. */
13214         uint32_t m_cpl_fun_err         : 1;  /**< [ 23: 23](R/W) Mask function mismatch error for received completions. */
13215         uint32_t m_cpl_rid_err         : 1;  /**< [ 22: 22](R/W) Mask requester ID mismatch error for received completions. */
13216         uint32_t m_cpl_tag_err         : 1;  /**< [ 21: 21](R/W) Mask tag error rules for received completions. */
13217         uint32_t m_lk_filt             : 1;  /**< [ 20: 20](R/W) Mask locked request filtering. */
13218         uint32_t m_cfg1_filt           : 1;  /**< [ 19: 19](R/W) Mask type 1 configuration request filtering. */
13219         uint32_t m_bar_match           : 1;  /**< [ 18: 18](R/W) Mask BAR match filtering. */
13220         uint32_t m_pois_filt           : 1;  /**< [ 17: 17](R/W) Mask poisoned TLP filtering. */
13221         uint32_t m_fun                 : 1;  /**< [ 16: 16](R/W) Mask function. */
13222         uint32_t dfcwt                 : 1;  /**< [ 15: 15](R/W) Disable FC watchdog timer. */
13223         uint32_t reserved_11_14        : 4;
13224         uint32_t skpiv                 : 11; /**< [ 10:  0](R/W) SKP interval value.  The number of symbol times to wait
13225                                                                  between transmitting SKP ordered sets. Note that the
13226                                                                  controller actually waits the number of symbol times in this
13227                                                                  register plus 1 between transmitting SKP ordered sets.
13228 
13229                                                                  This value is not used at Gen3 speed; the skip interval
13230                                                                  is hardcoded to 370 blocks. */
13231 #else /* Word 0 - Little Endian */
13232         uint32_t skpiv                 : 11; /**< [ 10:  0](R/W) SKP interval value.  The number of symbol times to wait
13233                                                                  between transmitting SKP ordered sets. Note that the
13234                                                                  controller actually waits the number of symbol times in this
13235                                                                  register plus 1 between transmitting SKP ordered sets.
13236 
13237                                                                  This value is not used at Gen3 speed; the skip interval
13238                                                                  is hardcoded to 370 blocks. */
13239         uint32_t reserved_11_14        : 4;
13240         uint32_t dfcwt                 : 1;  /**< [ 15: 15](R/W) Disable FC watchdog timer. */
13241         uint32_t m_fun                 : 1;  /**< [ 16: 16](R/W) Mask function. */
13242         uint32_t m_pois_filt           : 1;  /**< [ 17: 17](R/W) Mask poisoned TLP filtering. */
13243         uint32_t m_bar_match           : 1;  /**< [ 18: 18](R/W) Mask BAR match filtering. */
13244         uint32_t m_cfg1_filt           : 1;  /**< [ 19: 19](R/W) Mask type 1 configuration request filtering. */
13245         uint32_t m_lk_filt             : 1;  /**< [ 20: 20](R/W) Mask locked request filtering. */
13246         uint32_t m_cpl_tag_err         : 1;  /**< [ 21: 21](R/W) Mask tag error rules for received completions. */
13247         uint32_t m_cpl_rid_err         : 1;  /**< [ 22: 22](R/W) Mask requester ID mismatch error for received completions. */
13248         uint32_t m_cpl_fun_err         : 1;  /**< [ 23: 23](R/W) Mask function mismatch error for received completions. */
13249         uint32_t m_cpl_tc_err          : 1;  /**< [ 24: 24](R/W) Mask traffic class mismatch error for received completions. */
13250         uint32_t m_cpl_attr_err        : 1;  /**< [ 25: 25](R/W) Mask attributes mismatch error for received completions. */
13251         uint32_t m_cpl_len_err         : 1;  /**< [ 26: 26](R/W) Mask length mismatch error for received completions. */
13252         uint32_t m_ecrc_filt           : 1;  /**< [ 27: 27](R/W) Mask ECRC error filtering. */
13253         uint32_t m_cpl_ecrc_filt       : 1;  /**< [ 28: 28](R/W) Mask ECRC error filtering for completions. */
13254         uint32_t msg_ctrl              : 1;  /**< [ 29: 29](R/W) Message control. The application must not change this field. */
13255         uint32_t m_io_filt             : 1;  /**< [ 30: 30](R/W) Mask filtering of received I/O requests (RC mode only). */
13256         uint32_t m_cfg0_filt           : 1;  /**< [ 31: 31](R/W) Mask filtering of received configuration requests (RC mode only). */
13257 #endif /* Word 0 - End */
13258     } cn83xx;
13259 };
13260 typedef union bdk_pciercx_cfg455 bdk_pciercx_cfg455_t;
13261 
13262 static inline uint64_t BDK_PCIERCX_CFG455(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG455(unsigned long a)13263 static inline uint64_t BDK_PCIERCX_CFG455(unsigned long a)
13264 {
13265     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13266         return 0x2000000071cll + 0x100000000ll * ((a) & 0x3);
13267     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13268         return 0x2000000071cll + 0x100000000ll * ((a) & 0x3);
13269     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13270         return 0x2000000071cll + 0x100000000ll * ((a) & 0x7);
13271     __bdk_csr_fatal("PCIERCX_CFG455", 1, a, 0, 0, 0);
13272 }
13273 
13274 #define typedef_BDK_PCIERCX_CFG455(a) bdk_pciercx_cfg455_t
13275 #define bustype_BDK_PCIERCX_CFG455(a) BDK_CSR_TYPE_PCICONFIGRC
13276 #define basename_BDK_PCIERCX_CFG455(a) "PCIERCX_CFG455"
13277 #define busnum_BDK_PCIERCX_CFG455(a) (a)
13278 #define arguments_BDK_PCIERCX_CFG455(a) (a),-1,-1,-1
13279 
13280 /**
13281  * Register (PCICONFIGRC) pcierc#_cfg456
13282  *
13283  * PCIe RC Filter Mask Register 2
13284  * This register contains the four hundred fifty-seventh 32-bits of PCIe type 1 configuration space.
13285  */
13286 union bdk_pciercx_cfg456
13287 {
13288     uint32_t u;
13289     struct bdk_pciercx_cfg456_s
13290     {
13291 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13292         uint32_t reserved_8_31         : 24;
13293         uint32_t m_prs                 : 1;  /**< [  7:  7](R/W) Mask PRS messages dropped silently. */
13294         uint32_t m_unmask_td           : 1;  /**< [  6:  6](R/W) Not Supported. */
13295         uint32_t m_unmask_ur_pois      : 1;  /**< [  5:  5](R/W) Not Supported. */
13296         uint32_t m_ln_vend1_drop       : 1;  /**< [  4:  4](R/W) Mask LN messages dropped silently. */
13297         uint32_t m_handle_flush        : 1;  /**< [  3:  3](R/W) Mask core filter to handle flush request. */
13298         uint32_t m_dabort_4ucpl        : 1;  /**< [  2:  2](R/W) Mask DLLP abort for unexpected CPL. */
13299         uint32_t m_vend1_drp           : 1;  /**< [  1:  1](R/W) Mask vendor MSG type 1 dropped silently. */
13300         uint32_t m_vend0_drp           : 1;  /**< [  0:  0](R/W) Mask vendor MSG type 0 dropped with UR error reporting. */
13301 #else /* Word 0 - Little Endian */
13302         uint32_t m_vend0_drp           : 1;  /**< [  0:  0](R/W) Mask vendor MSG type 0 dropped with UR error reporting. */
13303         uint32_t m_vend1_drp           : 1;  /**< [  1:  1](R/W) Mask vendor MSG type 1 dropped silently. */
13304         uint32_t m_dabort_4ucpl        : 1;  /**< [  2:  2](R/W) Mask DLLP abort for unexpected CPL. */
13305         uint32_t m_handle_flush        : 1;  /**< [  3:  3](R/W) Mask core filter to handle flush request. */
13306         uint32_t m_ln_vend1_drop       : 1;  /**< [  4:  4](R/W) Mask LN messages dropped silently. */
13307         uint32_t m_unmask_ur_pois      : 1;  /**< [  5:  5](R/W) Not Supported. */
13308         uint32_t m_unmask_td           : 1;  /**< [  6:  6](R/W) Not Supported. */
13309         uint32_t m_prs                 : 1;  /**< [  7:  7](R/W) Mask PRS messages dropped silently. */
13310         uint32_t reserved_8_31         : 24;
13311 #endif /* Word 0 - End */
13312     } s;
13313     struct bdk_pciercx_cfg456_cn81xx
13314     {
13315 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13316         uint32_t reserved_4_31         : 28;
13317         uint32_t m_handle_flush        : 1;  /**< [  3:  3](R/W) Mask core filter to handle flush request. */
13318         uint32_t m_dabort_4ucpl        : 1;  /**< [  2:  2](R/W) Mask DLLP abort for unexpected CPL. */
13319         uint32_t m_vend1_drp           : 1;  /**< [  1:  1](R/W) Mask vendor MSG type 1 dropped silently. */
13320         uint32_t m_vend0_drp           : 1;  /**< [  0:  0](R/W) Mask vendor MSG type 0 dropped with UR error reporting. */
13321 #else /* Word 0 - Little Endian */
13322         uint32_t m_vend0_drp           : 1;  /**< [  0:  0](R/W) Mask vendor MSG type 0 dropped with UR error reporting. */
13323         uint32_t m_vend1_drp           : 1;  /**< [  1:  1](R/W) Mask vendor MSG type 1 dropped silently. */
13324         uint32_t m_dabort_4ucpl        : 1;  /**< [  2:  2](R/W) Mask DLLP abort for unexpected CPL. */
13325         uint32_t m_handle_flush        : 1;  /**< [  3:  3](R/W) Mask core filter to handle flush request. */
13326         uint32_t reserved_4_31         : 28;
13327 #endif /* Word 0 - End */
13328     } cn81xx;
13329     /* struct bdk_pciercx_cfg456_cn81xx cn88xx; */
13330     /* struct bdk_pciercx_cfg456_s cn83xx; */
13331 };
13332 typedef union bdk_pciercx_cfg456 bdk_pciercx_cfg456_t;
13333 
13334 static inline uint64_t BDK_PCIERCX_CFG456(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG456(unsigned long a)13335 static inline uint64_t BDK_PCIERCX_CFG456(unsigned long a)
13336 {
13337     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13338         return 0x20000000720ll + 0x100000000ll * ((a) & 0x3);
13339     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13340         return 0x20000000720ll + 0x100000000ll * ((a) & 0x3);
13341     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13342         return 0x20000000720ll + 0x100000000ll * ((a) & 0x7);
13343     __bdk_csr_fatal("PCIERCX_CFG456", 1, a, 0, 0, 0);
13344 }
13345 
13346 #define typedef_BDK_PCIERCX_CFG456(a) bdk_pciercx_cfg456_t
13347 #define bustype_BDK_PCIERCX_CFG456(a) BDK_CSR_TYPE_PCICONFIGRC
13348 #define basename_BDK_PCIERCX_CFG456(a) "PCIERCX_CFG456"
13349 #define busnum_BDK_PCIERCX_CFG456(a) (a)
13350 #define arguments_BDK_PCIERCX_CFG456(a) (a),-1,-1,-1
13351 
13352 /**
13353  * Register (PCICONFIGRC) pcierc#_cfg458
13354  *
13355  * PCIe RC Debug Register 0
13356  * This register contains the four hundred fifty-ninth 32-bits of PCIe type 1 configuration space.
13357  */
13358 union bdk_pciercx_cfg458
13359 {
13360     uint32_t u;
13361     struct bdk_pciercx_cfg458_s
13362     {
13363 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13364         uint32_t dbg_info_l32          : 32; /**< [ 31:  0](RO/H) Debug info lower 32 bits. */
13365 #else /* Word 0 - Little Endian */
13366         uint32_t dbg_info_l32          : 32; /**< [ 31:  0](RO/H) Debug info lower 32 bits. */
13367 #endif /* Word 0 - End */
13368     } s;
13369     /* struct bdk_pciercx_cfg458_s cn; */
13370 };
13371 typedef union bdk_pciercx_cfg458 bdk_pciercx_cfg458_t;
13372 
13373 static inline uint64_t BDK_PCIERCX_CFG458(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG458(unsigned long a)13374 static inline uint64_t BDK_PCIERCX_CFG458(unsigned long a)
13375 {
13376     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13377         return 0x20000000728ll + 0x100000000ll * ((a) & 0x3);
13378     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13379         return 0x20000000728ll + 0x100000000ll * ((a) & 0x3);
13380     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13381         return 0x20000000728ll + 0x100000000ll * ((a) & 0x7);
13382     __bdk_csr_fatal("PCIERCX_CFG458", 1, a, 0, 0, 0);
13383 }
13384 
13385 #define typedef_BDK_PCIERCX_CFG458(a) bdk_pciercx_cfg458_t
13386 #define bustype_BDK_PCIERCX_CFG458(a) BDK_CSR_TYPE_PCICONFIGRC
13387 #define basename_BDK_PCIERCX_CFG458(a) "PCIERCX_CFG458"
13388 #define busnum_BDK_PCIERCX_CFG458(a) (a)
13389 #define arguments_BDK_PCIERCX_CFG458(a) (a),-1,-1,-1
13390 
13391 /**
13392  * Register (PCICONFIGRC) pcierc#_cfg459
13393  *
13394  * PCIe RC Debug Register 1
13395  * This register contains the four hundred sixtieth 32-bits of PCIe type 1 configuration space.
13396  */
13397 union bdk_pciercx_cfg459
13398 {
13399     uint32_t u;
13400     struct bdk_pciercx_cfg459_s
13401     {
13402 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13403         uint32_t dbg_info_u32          : 32; /**< [ 31:  0](RO/H) Debug info upper 32 bits. */
13404 #else /* Word 0 - Little Endian */
13405         uint32_t dbg_info_u32          : 32; /**< [ 31:  0](RO/H) Debug info upper 32 bits. */
13406 #endif /* Word 0 - End */
13407     } s;
13408     /* struct bdk_pciercx_cfg459_s cn; */
13409 };
13410 typedef union bdk_pciercx_cfg459 bdk_pciercx_cfg459_t;
13411 
13412 static inline uint64_t BDK_PCIERCX_CFG459(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG459(unsigned long a)13413 static inline uint64_t BDK_PCIERCX_CFG459(unsigned long a)
13414 {
13415     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13416         return 0x2000000072cll + 0x100000000ll * ((a) & 0x3);
13417     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13418         return 0x2000000072cll + 0x100000000ll * ((a) & 0x3);
13419     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13420         return 0x2000000072cll + 0x100000000ll * ((a) & 0x7);
13421     __bdk_csr_fatal("PCIERCX_CFG459", 1, a, 0, 0, 0);
13422 }
13423 
13424 #define typedef_BDK_PCIERCX_CFG459(a) bdk_pciercx_cfg459_t
13425 #define bustype_BDK_PCIERCX_CFG459(a) BDK_CSR_TYPE_PCICONFIGRC
13426 #define basename_BDK_PCIERCX_CFG459(a) "PCIERCX_CFG459"
13427 #define busnum_BDK_PCIERCX_CFG459(a) (a)
13428 #define arguments_BDK_PCIERCX_CFG459(a) (a),-1,-1,-1
13429 
13430 /**
13431  * Register (PCICONFIGRC) pcierc#_cfg460
13432  *
13433  * PCIe RC Transmit Posted FC Credit Status Register
13434  * This register contains the four hundred sixty-first 32-bits of PCIe type 1 configuration space.
13435  */
13436 union bdk_pciercx_cfg460
13437 {
13438     uint32_t u;
13439     struct bdk_pciercx_cfg460_s
13440     {
13441 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13442         uint32_t reserved_20_31        : 12;
13443         uint32_t tphfcc                : 8;  /**< [ 19: 12](RO/H) Transmit posted header FC credits. The posted header credits advertised by the receiver at
13444                                                                  the other end of the link, updated with each UpdateFC DLLP. */
13445         uint32_t tpdfcc                : 12; /**< [ 11:  0](RO/H) Transmit posted data FC credits. The posted data credits advertised by the receiver at the
13446                                                                  other end of the link, updated with each UpdateFC DLLP. */
13447 #else /* Word 0 - Little Endian */
13448         uint32_t tpdfcc                : 12; /**< [ 11:  0](RO/H) Transmit posted data FC credits. The posted data credits advertised by the receiver at the
13449                                                                  other end of the link, updated with each UpdateFC DLLP. */
13450         uint32_t tphfcc                : 8;  /**< [ 19: 12](RO/H) Transmit posted header FC credits. The posted header credits advertised by the receiver at
13451                                                                  the other end of the link, updated with each UpdateFC DLLP. */
13452         uint32_t reserved_20_31        : 12;
13453 #endif /* Word 0 - End */
13454     } s;
13455     /* struct bdk_pciercx_cfg460_s cn; */
13456 };
13457 typedef union bdk_pciercx_cfg460 bdk_pciercx_cfg460_t;
13458 
13459 static inline uint64_t BDK_PCIERCX_CFG460(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG460(unsigned long a)13460 static inline uint64_t BDK_PCIERCX_CFG460(unsigned long a)
13461 {
13462     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13463         return 0x20000000730ll + 0x100000000ll * ((a) & 0x3);
13464     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13465         return 0x20000000730ll + 0x100000000ll * ((a) & 0x3);
13466     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13467         return 0x20000000730ll + 0x100000000ll * ((a) & 0x7);
13468     __bdk_csr_fatal("PCIERCX_CFG460", 1, a, 0, 0, 0);
13469 }
13470 
13471 #define typedef_BDK_PCIERCX_CFG460(a) bdk_pciercx_cfg460_t
13472 #define bustype_BDK_PCIERCX_CFG460(a) BDK_CSR_TYPE_PCICONFIGRC
13473 #define basename_BDK_PCIERCX_CFG460(a) "PCIERCX_CFG460"
13474 #define busnum_BDK_PCIERCX_CFG460(a) (a)
13475 #define arguments_BDK_PCIERCX_CFG460(a) (a),-1,-1,-1
13476 
13477 /**
13478  * Register (PCICONFIGRC) pcierc#_cfg461
13479  *
13480  * PCIe RC Transmit Nonposted FC Credit Status Register
13481  * This register contains the four hundred sixty-second 32-bits of PCIe type 1 configuration space.
13482  */
13483 union bdk_pciercx_cfg461
13484 {
13485     uint32_t u;
13486     struct bdk_pciercx_cfg461_s
13487     {
13488 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13489         uint32_t reserved_20_31        : 12;
13490         uint32_t tchfcc                : 8;  /**< [ 19: 12](RO/H) Transmit nonposted header FC credits. The nonposted header credits advertised by the
13491                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
13492         uint32_t tcdfcc                : 12; /**< [ 11:  0](RO/H) Transmit nonposted data FC credits. The nonposted data credits advertised by the receiver
13493                                                                  at the other end of the link, updated with each UpdateFC DLLP. */
13494 #else /* Word 0 - Little Endian */
13495         uint32_t tcdfcc                : 12; /**< [ 11:  0](RO/H) Transmit nonposted data FC credits. The nonposted data credits advertised by the receiver
13496                                                                  at the other end of the link, updated with each UpdateFC DLLP. */
13497         uint32_t tchfcc                : 8;  /**< [ 19: 12](RO/H) Transmit nonposted header FC credits. The nonposted header credits advertised by the
13498                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
13499         uint32_t reserved_20_31        : 12;
13500 #endif /* Word 0 - End */
13501     } s;
13502     /* struct bdk_pciercx_cfg461_s cn; */
13503 };
13504 typedef union bdk_pciercx_cfg461 bdk_pciercx_cfg461_t;
13505 
13506 static inline uint64_t BDK_PCIERCX_CFG461(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG461(unsigned long a)13507 static inline uint64_t BDK_PCIERCX_CFG461(unsigned long a)
13508 {
13509     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13510         return 0x20000000734ll + 0x100000000ll * ((a) & 0x3);
13511     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13512         return 0x20000000734ll + 0x100000000ll * ((a) & 0x3);
13513     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13514         return 0x20000000734ll + 0x100000000ll * ((a) & 0x7);
13515     __bdk_csr_fatal("PCIERCX_CFG461", 1, a, 0, 0, 0);
13516 }
13517 
13518 #define typedef_BDK_PCIERCX_CFG461(a) bdk_pciercx_cfg461_t
13519 #define bustype_BDK_PCIERCX_CFG461(a) BDK_CSR_TYPE_PCICONFIGRC
13520 #define basename_BDK_PCIERCX_CFG461(a) "PCIERCX_CFG461"
13521 #define busnum_BDK_PCIERCX_CFG461(a) (a)
13522 #define arguments_BDK_PCIERCX_CFG461(a) (a),-1,-1,-1
13523 
13524 /**
13525  * Register (PCICONFIGRC) pcierc#_cfg462
13526  *
13527  * PCIe RC Transmit Completion FC Credit Status Register
13528  * This register contains the four hundred sixty-third 32-bits of PCIe type 1 configuration space.
13529  */
13530 union bdk_pciercx_cfg462
13531 {
13532     uint32_t u;
13533     struct bdk_pciercx_cfg462_s
13534     {
13535 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13536         uint32_t reserved_20_31        : 12;
13537         uint32_t tchfcc                : 8;  /**< [ 19: 12](RO/H) Transmit completion header FC credits. The completion header credits advertised by the
13538                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
13539         uint32_t tcdfcc                : 12; /**< [ 11:  0](RO/H) Transmit completion data FC credits. The completion data credits advertised by the
13540                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
13541 #else /* Word 0 - Little Endian */
13542         uint32_t tcdfcc                : 12; /**< [ 11:  0](RO/H) Transmit completion data FC credits. The completion data credits advertised by the
13543                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
13544         uint32_t tchfcc                : 8;  /**< [ 19: 12](RO/H) Transmit completion header FC credits. The completion header credits advertised by the
13545                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
13546         uint32_t reserved_20_31        : 12;
13547 #endif /* Word 0 - End */
13548     } s;
13549     /* struct bdk_pciercx_cfg462_s cn; */
13550 };
13551 typedef union bdk_pciercx_cfg462 bdk_pciercx_cfg462_t;
13552 
13553 static inline uint64_t BDK_PCIERCX_CFG462(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG462(unsigned long a)13554 static inline uint64_t BDK_PCIERCX_CFG462(unsigned long a)
13555 {
13556     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13557         return 0x20000000738ll + 0x100000000ll * ((a) & 0x3);
13558     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13559         return 0x20000000738ll + 0x100000000ll * ((a) & 0x3);
13560     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13561         return 0x20000000738ll + 0x100000000ll * ((a) & 0x7);
13562     __bdk_csr_fatal("PCIERCX_CFG462", 1, a, 0, 0, 0);
13563 }
13564 
13565 #define typedef_BDK_PCIERCX_CFG462(a) bdk_pciercx_cfg462_t
13566 #define bustype_BDK_PCIERCX_CFG462(a) BDK_CSR_TYPE_PCICONFIGRC
13567 #define basename_BDK_PCIERCX_CFG462(a) "PCIERCX_CFG462"
13568 #define busnum_BDK_PCIERCX_CFG462(a) (a)
13569 #define arguments_BDK_PCIERCX_CFG462(a) (a),-1,-1,-1
13570 
13571 /**
13572  * Register (PCICONFIGRC) pcierc#_cfg463
13573  *
13574  * PCIe RC Queue Status Register
13575  * This register contains the four hundred sixty-fourth 32-bits of PCIe type 1 configuration space.
13576  */
13577 union bdk_pciercx_cfg463
13578 {
13579     uint32_t u;
13580     struct bdk_pciercx_cfg463_s
13581     {
13582 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13583         uint32_t fcltoe                : 1;  /**< [ 31: 31](R/W) FC latency timer override enable. When this bit is set, the value in
13584                                                                  PCIERC()_CFG453[FCLTOV] will override the FC latency timer value that the core
13585                                                                  calculates according to the PCIe specification. */
13586         uint32_t reserved_29_30        : 2;
13587         uint32_t fcltov                : 13; /**< [ 28: 16](R/W) FC latency timer override value. When you set PCIERC()_CFG453[FCLTOE], the value in
13588                                                                  this field will override the FC latency timer value that the core calculates according to
13589                                                                  the PCIe specification. */
13590         uint32_t reserved_3_15         : 13;
13591         uint32_t rqne                  : 1;  /**< [  2:  2](RO/H) Received queue not empty. Indicates there is data in one or more of the receive buffers. */
13592         uint32_t trbne                 : 1;  /**< [  1:  1](RO/H) Transmit retry buffer not empty. Indicates that there is data in the transmit retry buffer. */
13593         uint32_t rtlpfccnr             : 1;  /**< [  0:  0](RO/H) Received TLP FC credits not returned. Indicates that the PCI Express bus has sent a TLP
13594                                                                  but has not yet received an UpdateFC DLLP indicating that the credits for that TLP have
13595                                                                  been restored by the receiver at the other end of the link. */
13596 #else /* Word 0 - Little Endian */
13597         uint32_t rtlpfccnr             : 1;  /**< [  0:  0](RO/H) Received TLP FC credits not returned. Indicates that the PCI Express bus has sent a TLP
13598                                                                  but has not yet received an UpdateFC DLLP indicating that the credits for that TLP have
13599                                                                  been restored by the receiver at the other end of the link. */
13600         uint32_t trbne                 : 1;  /**< [  1:  1](RO/H) Transmit retry buffer not empty. Indicates that there is data in the transmit retry buffer. */
13601         uint32_t rqne                  : 1;  /**< [  2:  2](RO/H) Received queue not empty. Indicates there is data in one or more of the receive buffers. */
13602         uint32_t reserved_3_15         : 13;
13603         uint32_t fcltov                : 13; /**< [ 28: 16](R/W) FC latency timer override value. When you set PCIERC()_CFG453[FCLTOE], the value in
13604                                                                  this field will override the FC latency timer value that the core calculates according to
13605                                                                  the PCIe specification. */
13606         uint32_t reserved_29_30        : 2;
13607         uint32_t fcltoe                : 1;  /**< [ 31: 31](R/W) FC latency timer override enable. When this bit is set, the value in
13608                                                                  PCIERC()_CFG453[FCLTOV] will override the FC latency timer value that the core
13609                                                                  calculates according to the PCIe specification. */
13610 #endif /* Word 0 - End */
13611     } s;
13612     /* struct bdk_pciercx_cfg463_s cn; */
13613 };
13614 typedef union bdk_pciercx_cfg463 bdk_pciercx_cfg463_t;
13615 
13616 static inline uint64_t BDK_PCIERCX_CFG463(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG463(unsigned long a)13617 static inline uint64_t BDK_PCIERCX_CFG463(unsigned long a)
13618 {
13619     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13620         return 0x2000000073cll + 0x100000000ll * ((a) & 0x3);
13621     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13622         return 0x2000000073cll + 0x100000000ll * ((a) & 0x3);
13623     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13624         return 0x2000000073cll + 0x100000000ll * ((a) & 0x7);
13625     __bdk_csr_fatal("PCIERCX_CFG463", 1, a, 0, 0, 0);
13626 }
13627 
13628 #define typedef_BDK_PCIERCX_CFG463(a) bdk_pciercx_cfg463_t
13629 #define bustype_BDK_PCIERCX_CFG463(a) BDK_CSR_TYPE_PCICONFIGRC
13630 #define basename_BDK_PCIERCX_CFG463(a) "PCIERCX_CFG463"
13631 #define busnum_BDK_PCIERCX_CFG463(a) (a)
13632 #define arguments_BDK_PCIERCX_CFG463(a) (a),-1,-1,-1
13633 
13634 /**
13635  * Register (PCICONFIGRC) pcierc#_cfg464
13636  *
13637  * PCIe RC VC Transmit Arbitration Register 1
13638  * This register contains the four hundred sixty-fifth 32-bits of PCIe type 1 configuration space.
13639  */
13640 union bdk_pciercx_cfg464
13641 {
13642     uint32_t u;
13643     struct bdk_pciercx_cfg464_s
13644     {
13645 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13646         uint32_t wrr_vc3               : 8;  /**< [ 31: 24](RO/H) WRR weight for VC3. */
13647         uint32_t wrr_vc2               : 8;  /**< [ 23: 16](RO/H) WRR weight for VC2. */
13648         uint32_t wrr_vc1               : 8;  /**< [ 15:  8](RO/H) WRR weight for VC1. */
13649         uint32_t wrr_vc0               : 8;  /**< [  7:  0](RO/H) WRR weight for VC0. */
13650 #else /* Word 0 - Little Endian */
13651         uint32_t wrr_vc0               : 8;  /**< [  7:  0](RO/H) WRR weight for VC0. */
13652         uint32_t wrr_vc1               : 8;  /**< [ 15:  8](RO/H) WRR weight for VC1. */
13653         uint32_t wrr_vc2               : 8;  /**< [ 23: 16](RO/H) WRR weight for VC2. */
13654         uint32_t wrr_vc3               : 8;  /**< [ 31: 24](RO/H) WRR weight for VC3. */
13655 #endif /* Word 0 - End */
13656     } s;
13657     /* struct bdk_pciercx_cfg464_s cn81xx; */
13658     /* struct bdk_pciercx_cfg464_s cn88xx; */
13659     struct bdk_pciercx_cfg464_cn83xx
13660     {
13661 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13662         uint32_t wrr_vc3               : 8;  /**< [ 31: 24](RO) WRR weight for VC3. */
13663         uint32_t wrr_vc2               : 8;  /**< [ 23: 16](RO) WRR weight for VC2. */
13664         uint32_t wrr_vc1               : 8;  /**< [ 15:  8](RO) WRR weight for VC1. */
13665         uint32_t wrr_vc0               : 8;  /**< [  7:  0](RO) WRR weight for VC0. */
13666 #else /* Word 0 - Little Endian */
13667         uint32_t wrr_vc0               : 8;  /**< [  7:  0](RO) WRR weight for VC0. */
13668         uint32_t wrr_vc1               : 8;  /**< [ 15:  8](RO) WRR weight for VC1. */
13669         uint32_t wrr_vc2               : 8;  /**< [ 23: 16](RO) WRR weight for VC2. */
13670         uint32_t wrr_vc3               : 8;  /**< [ 31: 24](RO) WRR weight for VC3. */
13671 #endif /* Word 0 - End */
13672     } cn83xx;
13673 };
13674 typedef union bdk_pciercx_cfg464 bdk_pciercx_cfg464_t;
13675 
13676 static inline uint64_t BDK_PCIERCX_CFG464(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG464(unsigned long a)13677 static inline uint64_t BDK_PCIERCX_CFG464(unsigned long a)
13678 {
13679     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13680         return 0x20000000740ll + 0x100000000ll * ((a) & 0x3);
13681     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13682         return 0x20000000740ll + 0x100000000ll * ((a) & 0x3);
13683     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13684         return 0x20000000740ll + 0x100000000ll * ((a) & 0x7);
13685     __bdk_csr_fatal("PCIERCX_CFG464", 1, a, 0, 0, 0);
13686 }
13687 
13688 #define typedef_BDK_PCIERCX_CFG464(a) bdk_pciercx_cfg464_t
13689 #define bustype_BDK_PCIERCX_CFG464(a) BDK_CSR_TYPE_PCICONFIGRC
13690 #define basename_BDK_PCIERCX_CFG464(a) "PCIERCX_CFG464"
13691 #define busnum_BDK_PCIERCX_CFG464(a) (a)
13692 #define arguments_BDK_PCIERCX_CFG464(a) (a),-1,-1,-1
13693 
13694 /**
13695  * Register (PCICONFIGRC) pcierc#_cfg465
13696  *
13697  * PCIe RC VC Transmit Arbitration Register 2
13698  * This register contains the four hundred sixty-sixth 32-bits of configuration space.
13699  */
13700 union bdk_pciercx_cfg465
13701 {
13702     uint32_t u;
13703     struct bdk_pciercx_cfg465_s
13704     {
13705 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13706         uint32_t wrr_vc7               : 8;  /**< [ 31: 24](RO/H) WRR weight for VC7. */
13707         uint32_t wrr_vc6               : 8;  /**< [ 23: 16](RO/H) WRR weight for VC6. */
13708         uint32_t wrr_vc5               : 8;  /**< [ 15:  8](RO/H) WRR weight for VC5. */
13709         uint32_t wrr_vc4               : 8;  /**< [  7:  0](RO/H) WRR weight for VC4. */
13710 #else /* Word 0 - Little Endian */
13711         uint32_t wrr_vc4               : 8;  /**< [  7:  0](RO/H) WRR weight for VC4. */
13712         uint32_t wrr_vc5               : 8;  /**< [ 15:  8](RO/H) WRR weight for VC5. */
13713         uint32_t wrr_vc6               : 8;  /**< [ 23: 16](RO/H) WRR weight for VC6. */
13714         uint32_t wrr_vc7               : 8;  /**< [ 31: 24](RO/H) WRR weight for VC7. */
13715 #endif /* Word 0 - End */
13716     } s;
13717     /* struct bdk_pciercx_cfg465_s cn81xx; */
13718     /* struct bdk_pciercx_cfg465_s cn88xx; */
13719     struct bdk_pciercx_cfg465_cn83xx
13720     {
13721 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13722         uint32_t wrr_vc7               : 8;  /**< [ 31: 24](RO) WRR weight for VC7. */
13723         uint32_t wrr_vc6               : 8;  /**< [ 23: 16](RO) WRR weight for VC6. */
13724         uint32_t wrr_vc5               : 8;  /**< [ 15:  8](RO) WRR weight for VC5. */
13725         uint32_t wrr_vc4               : 8;  /**< [  7:  0](RO) WRR weight for VC4. */
13726 #else /* Word 0 - Little Endian */
13727         uint32_t wrr_vc4               : 8;  /**< [  7:  0](RO) WRR weight for VC4. */
13728         uint32_t wrr_vc5               : 8;  /**< [ 15:  8](RO) WRR weight for VC5. */
13729         uint32_t wrr_vc6               : 8;  /**< [ 23: 16](RO) WRR weight for VC6. */
13730         uint32_t wrr_vc7               : 8;  /**< [ 31: 24](RO) WRR weight for VC7. */
13731 #endif /* Word 0 - End */
13732     } cn83xx;
13733 };
13734 typedef union bdk_pciercx_cfg465 bdk_pciercx_cfg465_t;
13735 
13736 static inline uint64_t BDK_PCIERCX_CFG465(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG465(unsigned long a)13737 static inline uint64_t BDK_PCIERCX_CFG465(unsigned long a)
13738 {
13739     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13740         return 0x20000000744ll + 0x100000000ll * ((a) & 0x3);
13741     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13742         return 0x20000000744ll + 0x100000000ll * ((a) & 0x3);
13743     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13744         return 0x20000000744ll + 0x100000000ll * ((a) & 0x7);
13745     __bdk_csr_fatal("PCIERCX_CFG465", 1, a, 0, 0, 0);
13746 }
13747 
13748 #define typedef_BDK_PCIERCX_CFG465(a) bdk_pciercx_cfg465_t
13749 #define bustype_BDK_PCIERCX_CFG465(a) BDK_CSR_TYPE_PCICONFIGRC
13750 #define basename_BDK_PCIERCX_CFG465(a) "PCIERCX_CFG465"
13751 #define busnum_BDK_PCIERCX_CFG465(a) (a)
13752 #define arguments_BDK_PCIERCX_CFG465(a) (a),-1,-1,-1
13753 
13754 /**
13755  * Register (PCICONFIGRC) pcierc#_cfg466
13756  *
13757  * PCIe RC VC0 Posted Receive Queue Control Register
13758  * This register contains the four hundred sixty-seventh 32-bits of PCIe type 1 configuration space.
13759  */
13760 union bdk_pciercx_cfg466
13761 {
13762     uint32_t u;
13763     struct bdk_pciercx_cfg466_s
13764     {
13765 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13766         uint32_t rx_queue_order        : 1;  /**< [ 31: 31](R/W) VC ordering for receive queues. Determines the VC ordering rule for the receive queues,
13767                                                                  used only in the segmented-buffer configuration, writable through PEM()_CFG_WR:
13768                                                                  0 = Round robin.
13769                                                                  1 = Strict ordering, higher numbered VCs have higher priority.
13770 
13771                                                                  However, the application must not change this field. */
13772         uint32_t type_ordering         : 1;  /**< [ 30: 30](RO/WRSL) TLP type ordering for VC0. Determines the TLP type ordering rule for VC0 receive queues,
13773                                                                  used only in the segmented-buffer configuration, writable through
13774                                                                  PEM()_CFG_WR:
13775                                                                  0 = Strict ordering for received TLPs: Posted, then completion, then NonPosted.
13776                                                                  1 = Ordering of received TLPs follows the rules in PCI Express Base Specification.
13777 
13778                                                                  The application must not change this field. */
13779         uint32_t reserved_24_29        : 6;
13780         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 posted TLP queue mode. The operating mode of the posted receive queue for VC0, used
13781                                                                  only in the segmented-buffer configuration, writable through PEM()_CFG_WR. However,
13782                                                                  the application must not change this field.
13783                                                                  Only one bit can be set at a time:
13784 
13785                                                                  _ Bit 23 = Bypass.
13786 
13787                                                                  _ Bit 22 = Cut-through.
13788 
13789                                                                  _ Bit 21 = Store-and-forward. */
13790         uint32_t reserved_20           : 1;
13791         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL) VC0 posted header credits. The number of initial posted header credits for VC0, used for
13792                                                                  all receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
13793                                                                  However, the application must not change this field. */
13794         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL) VC0 posted data credits. The number of initial posted data credits for VC0, used for all
13795                                                                  receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
13796                                                                  However, the application must not change this field. */
13797 #else /* Word 0 - Little Endian */
13798         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL) VC0 posted data credits. The number of initial posted data credits for VC0, used for all
13799                                                                  receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
13800                                                                  However, the application must not change this field. */
13801         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL) VC0 posted header credits. The number of initial posted header credits for VC0, used for
13802                                                                  all receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
13803                                                                  However, the application must not change this field. */
13804         uint32_t reserved_20           : 1;
13805         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 posted TLP queue mode. The operating mode of the posted receive queue for VC0, used
13806                                                                  only in the segmented-buffer configuration, writable through PEM()_CFG_WR. However,
13807                                                                  the application must not change this field.
13808                                                                  Only one bit can be set at a time:
13809 
13810                                                                  _ Bit 23 = Bypass.
13811 
13812                                                                  _ Bit 22 = Cut-through.
13813 
13814                                                                  _ Bit 21 = Store-and-forward. */
13815         uint32_t reserved_24_29        : 6;
13816         uint32_t type_ordering         : 1;  /**< [ 30: 30](RO/WRSL) TLP type ordering for VC0. Determines the TLP type ordering rule for VC0 receive queues,
13817                                                                  used only in the segmented-buffer configuration, writable through
13818                                                                  PEM()_CFG_WR:
13819                                                                  0 = Strict ordering for received TLPs: Posted, then completion, then NonPosted.
13820                                                                  1 = Ordering of received TLPs follows the rules in PCI Express Base Specification.
13821 
13822                                                                  The application must not change this field. */
13823         uint32_t rx_queue_order        : 1;  /**< [ 31: 31](R/W) VC ordering for receive queues. Determines the VC ordering rule for the receive queues,
13824                                                                  used only in the segmented-buffer configuration, writable through PEM()_CFG_WR:
13825                                                                  0 = Round robin.
13826                                                                  1 = Strict ordering, higher numbered VCs have higher priority.
13827 
13828                                                                  However, the application must not change this field. */
13829 #endif /* Word 0 - End */
13830     } s;
13831     /* struct bdk_pciercx_cfg466_s cn; */
13832 };
13833 typedef union bdk_pciercx_cfg466 bdk_pciercx_cfg466_t;
13834 
13835 static inline uint64_t BDK_PCIERCX_CFG466(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG466(unsigned long a)13836 static inline uint64_t BDK_PCIERCX_CFG466(unsigned long a)
13837 {
13838     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13839         return 0x20000000748ll + 0x100000000ll * ((a) & 0x3);
13840     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13841         return 0x20000000748ll + 0x100000000ll * ((a) & 0x3);
13842     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13843         return 0x20000000748ll + 0x100000000ll * ((a) & 0x7);
13844     __bdk_csr_fatal("PCIERCX_CFG466", 1, a, 0, 0, 0);
13845 }
13846 
13847 #define typedef_BDK_PCIERCX_CFG466(a) bdk_pciercx_cfg466_t
13848 #define bustype_BDK_PCIERCX_CFG466(a) BDK_CSR_TYPE_PCICONFIGRC
13849 #define basename_BDK_PCIERCX_CFG466(a) "PCIERCX_CFG466"
13850 #define busnum_BDK_PCIERCX_CFG466(a) (a)
13851 #define arguments_BDK_PCIERCX_CFG466(a) (a),-1,-1,-1
13852 
13853 /**
13854  * Register (PCICONFIGRC) pcierc#_cfg467
13855  *
13856  * PCIe RC VC0 Nonposted Receive Queue Control Register
13857  * This register contains the four hundred sixty-eighth 32-bits of PCIe type 1 configuration space.
13858  */
13859 union bdk_pciercx_cfg467
13860 {
13861     uint32_t u;
13862     struct bdk_pciercx_cfg467_s
13863     {
13864 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13865         uint32_t reserved_24_31        : 8;
13866         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 nonposted TLP queue mode. The operating mode of the nonposted receive queue for VC0,
13867                                                                  used only in the segmented-buffer configuration, writable through PEM()_CFG_WR.
13868                                                                  Only one bit can be set at a time:
13869 
13870                                                                  _ Bit 23 = Bypass.
13871 
13872                                                                  _ Bit 22 = Cut-through.
13873 
13874                                                                  _ Bit 21 = Store-and-forward.
13875 
13876                                                                  The application must not change this field. */
13877         uint32_t reserved_20           : 1;
13878         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL) VC0 nonposted header credits. The number of initial nonposted header credits for VC0, used
13879                                                                  for all receive queue buffer configurations. This field is writable through
13880                                                                  PEM()_CFG_WR. However, the application must not change this field. */
13881         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL) VC0 nonposted data credits. The number of initial nonposted data credits for VC0, used for
13882                                                                  all receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
13883                                                                  However, the application must not change this field. */
13884 #else /* Word 0 - Little Endian */
13885         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL) VC0 nonposted data credits. The number of initial nonposted data credits for VC0, used for
13886                                                                  all receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
13887                                                                  However, the application must not change this field. */
13888         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL) VC0 nonposted header credits. The number of initial nonposted header credits for VC0, used
13889                                                                  for all receive queue buffer configurations. This field is writable through
13890                                                                  PEM()_CFG_WR. However, the application must not change this field. */
13891         uint32_t reserved_20           : 1;
13892         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 nonposted TLP queue mode. The operating mode of the nonposted receive queue for VC0,
13893                                                                  used only in the segmented-buffer configuration, writable through PEM()_CFG_WR.
13894                                                                  Only one bit can be set at a time:
13895 
13896                                                                  _ Bit 23 = Bypass.
13897 
13898                                                                  _ Bit 22 = Cut-through.
13899 
13900                                                                  _ Bit 21 = Store-and-forward.
13901 
13902                                                                  The application must not change this field. */
13903         uint32_t reserved_24_31        : 8;
13904 #endif /* Word 0 - End */
13905     } s;
13906     /* struct bdk_pciercx_cfg467_s cn; */
13907 };
13908 typedef union bdk_pciercx_cfg467 bdk_pciercx_cfg467_t;
13909 
13910 static inline uint64_t BDK_PCIERCX_CFG467(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG467(unsigned long a)13911 static inline uint64_t BDK_PCIERCX_CFG467(unsigned long a)
13912 {
13913     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13914         return 0x2000000074cll + 0x100000000ll * ((a) & 0x3);
13915     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13916         return 0x2000000074cll + 0x100000000ll * ((a) & 0x3);
13917     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13918         return 0x2000000074cll + 0x100000000ll * ((a) & 0x7);
13919     __bdk_csr_fatal("PCIERCX_CFG467", 1, a, 0, 0, 0);
13920 }
13921 
13922 #define typedef_BDK_PCIERCX_CFG467(a) bdk_pciercx_cfg467_t
13923 #define bustype_BDK_PCIERCX_CFG467(a) BDK_CSR_TYPE_PCICONFIGRC
13924 #define basename_BDK_PCIERCX_CFG467(a) "PCIERCX_CFG467"
13925 #define busnum_BDK_PCIERCX_CFG467(a) (a)
13926 #define arguments_BDK_PCIERCX_CFG467(a) (a),-1,-1,-1
13927 
13928 /**
13929  * Register (PCICONFIGRC) pcierc#_cfg468
13930  *
13931  * PCIe RC VC0 Completion Receive Queue Control Register
13932  * This register contains the four hundred sixty-ninth 32-bits of PCIe type 1 configuration space.
13933  */
13934 union bdk_pciercx_cfg468
13935 {
13936     uint32_t u;
13937     struct bdk_pciercx_cfg468_s
13938     {
13939 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
13940         uint32_t reserved_24_31        : 8;
13941         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 completion TLP queue mode. The operating mode of the completion receive queue for VC0,
13942                                                                  used only in the segmented-buffer configuration, writable through
13943                                                                  PEM()_CFG_WR.
13944                                                                  Only one bit can be set at a time:
13945 
13946                                                                  _ Bit 23 = Bypass.
13947 
13948                                                                  _ Bit 22 = Cut-through.
13949 
13950                                                                  _ Bit 21 = Store-and-forward.
13951 
13952                                                                  The application must not change this field. */
13953         uint32_t reserved_20           : 1;
13954         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL) VC0 completion header credits. The number of initial completion header credits for VC0,
13955                                                                  used for all receive queue buffer configurations. This field is writable through
13956                                                                  PEM()_CFG_WR. However, the application must not change this field. */
13957         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL) VC0 completion data credits. The number of initial completion data credits for VC0, used
13958                                                                  for all receive queue buffer configurations. This field is writable through
13959                                                                  PEM()_CFG_WR. However, the application must not change this field. */
13960 #else /* Word 0 - Little Endian */
13961         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL) VC0 completion data credits. The number of initial completion data credits for VC0, used
13962                                                                  for all receive queue buffer configurations. This field is writable through
13963                                                                  PEM()_CFG_WR. However, the application must not change this field. */
13964         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL) VC0 completion header credits. The number of initial completion header credits for VC0,
13965                                                                  used for all receive queue buffer configurations. This field is writable through
13966                                                                  PEM()_CFG_WR. However, the application must not change this field. */
13967         uint32_t reserved_20           : 1;
13968         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 completion TLP queue mode. The operating mode of the completion receive queue for VC0,
13969                                                                  used only in the segmented-buffer configuration, writable through
13970                                                                  PEM()_CFG_WR.
13971                                                                  Only one bit can be set at a time:
13972 
13973                                                                  _ Bit 23 = Bypass.
13974 
13975                                                                  _ Bit 22 = Cut-through.
13976 
13977                                                                  _ Bit 21 = Store-and-forward.
13978 
13979                                                                  The application must not change this field. */
13980         uint32_t reserved_24_31        : 8;
13981 #endif /* Word 0 - End */
13982     } s;
13983     /* struct bdk_pciercx_cfg468_s cn; */
13984 };
13985 typedef union bdk_pciercx_cfg468 bdk_pciercx_cfg468_t;
13986 
13987 static inline uint64_t BDK_PCIERCX_CFG468(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG468(unsigned long a)13988 static inline uint64_t BDK_PCIERCX_CFG468(unsigned long a)
13989 {
13990     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
13991         return 0x20000000750ll + 0x100000000ll * ((a) & 0x3);
13992     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
13993         return 0x20000000750ll + 0x100000000ll * ((a) & 0x3);
13994     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
13995         return 0x20000000750ll + 0x100000000ll * ((a) & 0x7);
13996     __bdk_csr_fatal("PCIERCX_CFG468", 1, a, 0, 0, 0);
13997 }
13998 
13999 #define typedef_BDK_PCIERCX_CFG468(a) bdk_pciercx_cfg468_t
14000 #define bustype_BDK_PCIERCX_CFG468(a) BDK_CSR_TYPE_PCICONFIGRC
14001 #define basename_BDK_PCIERCX_CFG468(a) "PCIERCX_CFG468"
14002 #define busnum_BDK_PCIERCX_CFG468(a) (a)
14003 #define arguments_BDK_PCIERCX_CFG468(a) (a),-1,-1,-1
14004 
14005 /**
14006  * Register (PCICONFIGRC) pcierc#_cfg515
14007  *
14008  * PCIe RC Gen2 Port Logic Register
14009  * This register contains the five hundred sixteenth 32-bits of PCIe type 1 configuration space.
14010  */
14011 union bdk_pciercx_cfg515
14012 {
14013     uint32_t u;
14014     struct bdk_pciercx_cfg515_s
14015     {
14016 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14017         uint32_t reserved_21_31        : 11;
14018         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) SEL_DE_EMPHASIS. Used to set the deemphasis level for upstream ports. */
14019         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to 1, signals LTSSM to transmit TS ordered sets
14020                                                                  with the compliance receive bit assert (equal to 1). */
14021         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to 1,
14022                                                                  indicates full swing. When set to 0, indicates low swing. */
14023         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of 1 initiates a speed change.
14024                                                                  When the speed change occurs, the controller will clear the contents of this field. */
14025         uint32_t reserved_8_16         : 9;
14026         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) N_FTS. Sets the number of fast training sequences (N_FTS) that the core advertises as its
14027                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
14028                                                                  PHY's ability to recover synchronization after a low power state.
14029 
14030                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
14031                                                                  state when exiting from L0s. */
14032 #else /* Word 0 - Little Endian */
14033         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) N_FTS. Sets the number of fast training sequences (N_FTS) that the core advertises as its
14034                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
14035                                                                  PHY's ability to recover synchronization after a low power state.
14036 
14037                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
14038                                                                  state when exiting from L0s. */
14039         uint32_t reserved_8_16         : 9;
14040         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of 1 initiates a speed change.
14041                                                                  When the speed change occurs, the controller will clear the contents of this field. */
14042         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to 1,
14043                                                                  indicates full swing. When set to 0, indicates low swing. */
14044         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to 1, signals LTSSM to transmit TS ordered sets
14045                                                                  with the compliance receive bit assert (equal to 1). */
14046         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) SEL_DE_EMPHASIS. Used to set the deemphasis level for upstream ports. */
14047         uint32_t reserved_21_31        : 11;
14048 #endif /* Word 0 - End */
14049     } s;
14050     struct bdk_pciercx_cfg515_cn81xx
14051     {
14052 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14053         uint32_t reserved_22_31        : 10;
14054         uint32_t reserved_21           : 1;
14055         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) SEL_DE_EMPHASIS. Used to set the deemphasis level for upstream ports. */
14056         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to 1, signals LTSSM to transmit TS ordered sets
14057                                                                  with the compliance receive bit assert (equal to 1). */
14058         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to 1,
14059                                                                  indicates full swing. When set to 0, indicates low swing. */
14060         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of 1 initiates a speed change.
14061                                                                  When the speed change occurs, the controller will clear the contents of this field. */
14062         uint32_t alfpce                : 1;  /**< [ 16: 16](R/W) Auto lane flip control enable.  When set to 1, the core will try to flip the lanes
14063                                                                  autonomously in Detect LTSSM state when lane0 is not detected. */
14064         uint32_t pdl                   : 3;  /**< [ 15: 13](R/W) Predetermined lane for Auto Flip.  This field defines which physical lane is connected
14065                                                                  to logical Lane0 by the flip operation performed in Detect. 0x0 = connect logical Lane0
14066                                                                  to physical lane0 or CX_NL or CX_NL/2-1 or CX_NL/4-1 or CX_NL/8-1, depending on which lane
14067                                                                  is detected, 0x1 = logical Lane0 to physical lane 1, 0x2 = logical Lane0 to physical lane
14068                                                                  3,
14069                                                                  0x3 = logical Lane0 to physical Lane 7, 0x4 = logical Lane0 to physical lane 15. */
14070         uint32_t le                    : 5;  /**< [ 12:  8](R/W) Lane enable. Indicates the number of lanes to check for exit from electrical idle in
14071                                                                  Polling.Active and Polling.Compliance. 0x1 = x1, 0x2 = x2, etc. Used to limit the maximum
14072                                                                  link width to ignore broken lanes that detect a receiver, but will not exit electrical
14073                                                                  idle and would otherwise prevent a valid link from being configured. */
14074         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) N_FTS. Sets the number of fast training sequences (N_FTS) that the core advertises as its
14075                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
14076                                                                  PHY's ability to recover synchronization after a low power state.
14077 
14078                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
14079                                                                  state when exiting from L0s. */
14080 #else /* Word 0 - Little Endian */
14081         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) N_FTS. Sets the number of fast training sequences (N_FTS) that the core advertises as its
14082                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
14083                                                                  PHY's ability to recover synchronization after a low power state.
14084 
14085                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
14086                                                                  state when exiting from L0s. */
14087         uint32_t le                    : 5;  /**< [ 12:  8](R/W) Lane enable. Indicates the number of lanes to check for exit from electrical idle in
14088                                                                  Polling.Active and Polling.Compliance. 0x1 = x1, 0x2 = x2, etc. Used to limit the maximum
14089                                                                  link width to ignore broken lanes that detect a receiver, but will not exit electrical
14090                                                                  idle and would otherwise prevent a valid link from being configured. */
14091         uint32_t pdl                   : 3;  /**< [ 15: 13](R/W) Predetermined lane for Auto Flip.  This field defines which physical lane is connected
14092                                                                  to logical Lane0 by the flip operation performed in Detect. 0x0 = connect logical Lane0
14093                                                                  to physical lane0 or CX_NL or CX_NL/2-1 or CX_NL/4-1 or CX_NL/8-1, depending on which lane
14094                                                                  is detected, 0x1 = logical Lane0 to physical lane 1, 0x2 = logical Lane0 to physical lane
14095                                                                  3,
14096                                                                  0x3 = logical Lane0 to physical Lane 7, 0x4 = logical Lane0 to physical lane 15. */
14097         uint32_t alfpce                : 1;  /**< [ 16: 16](R/W) Auto lane flip control enable.  When set to 1, the core will try to flip the lanes
14098                                                                  autonomously in Detect LTSSM state when lane0 is not detected. */
14099         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of 1 initiates a speed change.
14100                                                                  When the speed change occurs, the controller will clear the contents of this field. */
14101         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to 1,
14102                                                                  indicates full swing. When set to 0, indicates low swing. */
14103         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to 1, signals LTSSM to transmit TS ordered sets
14104                                                                  with the compliance receive bit assert (equal to 1). */
14105         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) SEL_DE_EMPHASIS. Used to set the deemphasis level for upstream ports. */
14106         uint32_t reserved_21           : 1;
14107         uint32_t reserved_22_31        : 10;
14108 #endif /* Word 0 - End */
14109     } cn81xx;
14110     struct bdk_pciercx_cfg515_cn88xx
14111     {
14112 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14113         uint32_t reserved_22_31        : 10;
14114         uint32_t reserved_21           : 1;
14115         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) SEL_DE_EMPHASIS. Used to set the deemphasis level for upstream ports. */
14116         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to 1, signals LTSSM to transmit TS ordered sets
14117                                                                  with the compliance receive bit assert (equal to 1). */
14118         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to 1,
14119                                                                  indicates full swing. When set to 0, indicates low swing. */
14120         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of 1 initiates a speed change.
14121                                                                  When the speed change occurs, the controller will clear the contents of this field. */
14122         uint32_t le                    : 9;  /**< [ 16:  8](R/W) Lane enable. Indicates the number of lanes to check for exit from electrical idle in
14123                                                                  Polling.Active and Polling.Compliance. 0x1 = x1, 0x2 = x2, etc. Used to limit the maximum
14124                                                                  link width to ignore broken lanes that detect a receiver, but will not exit electrical
14125                                                                  idle and would otherwise prevent a valid link from being configured. */
14126         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) N_FTS. Sets the number of fast training sequences (N_FTS) that the core advertises as its
14127                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
14128                                                                  PHY's ability to recover synchronization after a low power state.
14129 
14130                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
14131                                                                  state when exiting from L0s. */
14132 #else /* Word 0 - Little Endian */
14133         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) N_FTS. Sets the number of fast training sequences (N_FTS) that the core advertises as its
14134                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
14135                                                                  PHY's ability to recover synchronization after a low power state.
14136 
14137                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
14138                                                                  state when exiting from L0s. */
14139         uint32_t le                    : 9;  /**< [ 16:  8](R/W) Lane enable. Indicates the number of lanes to check for exit from electrical idle in
14140                                                                  Polling.Active and Polling.Compliance. 0x1 = x1, 0x2 = x2, etc. Used to limit the maximum
14141                                                                  link width to ignore broken lanes that detect a receiver, but will not exit electrical
14142                                                                  idle and would otherwise prevent a valid link from being configured. */
14143         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of 1 initiates a speed change.
14144                                                                  When the speed change occurs, the controller will clear the contents of this field. */
14145         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to 1,
14146                                                                  indicates full swing. When set to 0, indicates low swing. */
14147         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to 1, signals LTSSM to transmit TS ordered sets
14148                                                                  with the compliance receive bit assert (equal to 1). */
14149         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) SEL_DE_EMPHASIS. Used to set the deemphasis level for upstream ports. */
14150         uint32_t reserved_21           : 1;
14151         uint32_t reserved_22_31        : 10;
14152 #endif /* Word 0 - End */
14153     } cn88xx;
14154     struct bdk_pciercx_cfg515_cn83xx
14155     {
14156 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14157         uint32_t reserved_22_31        : 10;
14158         uint32_t reserved_21           : 1;
14159         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) SEL_DE_EMPHASIS. Used to set the deemphasis level for upstream ports.
14160                                                                  1 = -3.5 dB.
14161                                                                  0 = -6 dB. */
14162         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to 1, signals LTSSM to transmit TS ordered sets
14163                                                                  with the compliance receive bit assert (equal to 1). */
14164         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to 1,
14165                                                                  indicates low swing. When set to 0, indicates full swing. */
14166         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of 1 initiates a speed change.
14167                                                                  When the speed change occurs, the controller will clear the contents of this field. */
14168         uint32_t alaneflip             : 1;  /**< [ 16: 16](R/W) Enable auto flipping of the lanes. */
14169         uint32_t pdetlane              : 3;  /**< [ 15: 13](R/W) Predetermined lane for auto flip. This field defines which
14170                                                                  physical lane is connected to logical Lane0 by the flip
14171                                                                  operation performed in detect.
14172                                                                    0x0 = Reserved.
14173                                                                    0x1 = Connect logical Lane0 to physical lane 1.
14174                                                                    0x2 = Connect logical Lane0 to physical lane 3.
14175                                                                    0x3 = Connect logical Lane0 to physical lane 7.
14176                                                                    0x4 = Connect logical Lane0 to physical lane 15.
14177                                                                    0x5 - 0x7 = Reserved. */
14178         uint32_t nlanes                : 5;  /**< [ 12:  8](R/W) Predetermined number of lanes.  Defines the number of
14179                                                                  lanes which are connected and not bad. Used to limit the
14180                                                                  effective link width to ignore "broken" or "unused" lanes that
14181                                                                  detect a receiver. Indicates the number of lanes to check for
14182                                                                  exit from electrical idle in Polling.Active and L2.Idle.
14183                                                                  0x1 = 1 lane.
14184                                                                  0x2 = 2 lanes.
14185                                                                  0x3 = 3 lanes.
14186                                                                  ...
14187                                                                  0x8 = 8 lanes.
14188                                                                  0x9-0x1F = Reserved.
14189 
14190                                                                  When there are unused lanes in the system, then this value must reflect the
14191                                                                  number of lanes. PCIEEP()_CFG452[LME] must also be changed likewise. */
14192         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) N_FTS. Sets the number of fast training sequences (N_FTS) that the core advertises as its
14193                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
14194                                                                  PHY's ability to recover synchronization after a low power state.
14195 
14196                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
14197                                                                  state when exiting from L0s. */
14198 #else /* Word 0 - Little Endian */
14199         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) N_FTS. Sets the number of fast training sequences (N_FTS) that the core advertises as its
14200                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
14201                                                                  PHY's ability to recover synchronization after a low power state.
14202 
14203                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
14204                                                                  state when exiting from L0s. */
14205         uint32_t nlanes                : 5;  /**< [ 12:  8](R/W) Predetermined number of lanes.  Defines the number of
14206                                                                  lanes which are connected and not bad. Used to limit the
14207                                                                  effective link width to ignore "broken" or "unused" lanes that
14208                                                                  detect a receiver. Indicates the number of lanes to check for
14209                                                                  exit from electrical idle in Polling.Active and L2.Idle.
14210                                                                  0x1 = 1 lane.
14211                                                                  0x2 = 2 lanes.
14212                                                                  0x3 = 3 lanes.
14213                                                                  ...
14214                                                                  0x8 = 8 lanes.
14215                                                                  0x9-0x1F = Reserved.
14216 
14217                                                                  When there are unused lanes in the system, then this value must reflect the
14218                                                                  number of lanes. PCIEEP()_CFG452[LME] must also be changed likewise. */
14219         uint32_t pdetlane              : 3;  /**< [ 15: 13](R/W) Predetermined lane for auto flip. This field defines which
14220                                                                  physical lane is connected to logical Lane0 by the flip
14221                                                                  operation performed in detect.
14222                                                                    0x0 = Reserved.
14223                                                                    0x1 = Connect logical Lane0 to physical lane 1.
14224                                                                    0x2 = Connect logical Lane0 to physical lane 3.
14225                                                                    0x3 = Connect logical Lane0 to physical lane 7.
14226                                                                    0x4 = Connect logical Lane0 to physical lane 15.
14227                                                                    0x5 - 0x7 = Reserved. */
14228         uint32_t alaneflip             : 1;  /**< [ 16: 16](R/W) Enable auto flipping of the lanes. */
14229         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of 1 initiates a speed change.
14230                                                                  When the speed change occurs, the controller will clear the contents of this field. */
14231         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to 1,
14232                                                                  indicates low swing. When set to 0, indicates full swing. */
14233         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to 1, signals LTSSM to transmit TS ordered sets
14234                                                                  with the compliance receive bit assert (equal to 1). */
14235         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) SEL_DE_EMPHASIS. Used to set the deemphasis level for upstream ports.
14236                                                                  1 = -3.5 dB.
14237                                                                  0 = -6 dB. */
14238         uint32_t reserved_21           : 1;
14239         uint32_t reserved_22_31        : 10;
14240 #endif /* Word 0 - End */
14241     } cn83xx;
14242 };
14243 typedef union bdk_pciercx_cfg515 bdk_pciercx_cfg515_t;
14244 
14245 static inline uint64_t BDK_PCIERCX_CFG515(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG515(unsigned long a)14246 static inline uint64_t BDK_PCIERCX_CFG515(unsigned long a)
14247 {
14248     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
14249         return 0x2000000080cll + 0x100000000ll * ((a) & 0x3);
14250     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
14251         return 0x2000000080cll + 0x100000000ll * ((a) & 0x3);
14252     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
14253         return 0x2000000080cll + 0x100000000ll * ((a) & 0x7);
14254     __bdk_csr_fatal("PCIERCX_CFG515", 1, a, 0, 0, 0);
14255 }
14256 
14257 #define typedef_BDK_PCIERCX_CFG515(a) bdk_pciercx_cfg515_t
14258 #define bustype_BDK_PCIERCX_CFG515(a) BDK_CSR_TYPE_PCICONFIGRC
14259 #define basename_BDK_PCIERCX_CFG515(a) "PCIERCX_CFG515"
14260 #define busnum_BDK_PCIERCX_CFG515(a) (a)
14261 #define arguments_BDK_PCIERCX_CFG515(a) (a),-1,-1,-1
14262 
14263 /**
14264  * Register (PCICONFIGRC) pcierc#_cfg516
14265  *
14266  * PCIe RC PHY Status Register
14267  * This register contains the five hundred seventeenth 32-bits of PCIe type 1 configuration space.
14268  */
14269 union bdk_pciercx_cfg516
14270 {
14271     uint32_t u;
14272     struct bdk_pciercx_cfg516_s
14273     {
14274 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14275         uint32_t phy_stat              : 32; /**< [ 31:  0](RO/H) PHY status. */
14276 #else /* Word 0 - Little Endian */
14277         uint32_t phy_stat              : 32; /**< [ 31:  0](RO/H) PHY status. */
14278 #endif /* Word 0 - End */
14279     } s;
14280     /* struct bdk_pciercx_cfg516_s cn; */
14281 };
14282 typedef union bdk_pciercx_cfg516 bdk_pciercx_cfg516_t;
14283 
14284 static inline uint64_t BDK_PCIERCX_CFG516(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG516(unsigned long a)14285 static inline uint64_t BDK_PCIERCX_CFG516(unsigned long a)
14286 {
14287     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
14288         return 0x20000000810ll + 0x100000000ll * ((a) & 0x3);
14289     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
14290         return 0x20000000810ll + 0x100000000ll * ((a) & 0x3);
14291     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
14292         return 0x20000000810ll + 0x100000000ll * ((a) & 0x7);
14293     __bdk_csr_fatal("PCIERCX_CFG516", 1, a, 0, 0, 0);
14294 }
14295 
14296 #define typedef_BDK_PCIERCX_CFG516(a) bdk_pciercx_cfg516_t
14297 #define bustype_BDK_PCIERCX_CFG516(a) BDK_CSR_TYPE_PCICONFIGRC
14298 #define basename_BDK_PCIERCX_CFG516(a) "PCIERCX_CFG516"
14299 #define busnum_BDK_PCIERCX_CFG516(a) (a)
14300 #define arguments_BDK_PCIERCX_CFG516(a) (a),-1,-1,-1
14301 
14302 /**
14303  * Register (PCICONFIGRC) pcierc#_cfg517
14304  *
14305  * PCIe RC PHY Control Register
14306  * This register contains the five hundred eighteenth 32-bits of PCIe type 1 configuration space.
14307  */
14308 union bdk_pciercx_cfg517
14309 {
14310     uint32_t u;
14311     struct bdk_pciercx_cfg517_s
14312     {
14313 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14314         uint32_t phy_ctrl              : 32; /**< [ 31:  0](R/W) PHY control. */
14315 #else /* Word 0 - Little Endian */
14316         uint32_t phy_ctrl              : 32; /**< [ 31:  0](R/W) PHY control. */
14317 #endif /* Word 0 - End */
14318     } s;
14319     /* struct bdk_pciercx_cfg517_s cn; */
14320 };
14321 typedef union bdk_pciercx_cfg517 bdk_pciercx_cfg517_t;
14322 
14323 static inline uint64_t BDK_PCIERCX_CFG517(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG517(unsigned long a)14324 static inline uint64_t BDK_PCIERCX_CFG517(unsigned long a)
14325 {
14326     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
14327         return 0x20000000814ll + 0x100000000ll * ((a) & 0x3);
14328     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
14329         return 0x20000000814ll + 0x100000000ll * ((a) & 0x3);
14330     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
14331         return 0x20000000814ll + 0x100000000ll * ((a) & 0x7);
14332     __bdk_csr_fatal("PCIERCX_CFG517", 1, a, 0, 0, 0);
14333 }
14334 
14335 #define typedef_BDK_PCIERCX_CFG517(a) bdk_pciercx_cfg517_t
14336 #define bustype_BDK_PCIERCX_CFG517(a) BDK_CSR_TYPE_PCICONFIGRC
14337 #define basename_BDK_PCIERCX_CFG517(a) "PCIERCX_CFG517"
14338 #define busnum_BDK_PCIERCX_CFG517(a) (a)
14339 #define arguments_BDK_PCIERCX_CFG517(a) (a),-1,-1,-1
14340 
14341 /**
14342  * Register (PCICONFIGRC) pcierc#_cfg548
14343  *
14344  * PCIe RC Gen3 Control Register
14345  * This register contains the five hundred forty-ninth 32-bits of type 0 PCIe configuration space.
14346  */
14347 union bdk_pciercx_cfg548
14348 {
14349     uint32_t u;
14350     struct bdk_pciercx_cfg548_s
14351     {
14352 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14353         uint32_t reserved_26_31        : 6;
14354         uint32_t rss                   : 2;  /**< [ 25: 24](RO) Data rate for shadow register.  Hard-wired for Gen3. */
14355         uint32_t eiedd                 : 1;  /**< [ 23: 23](R/W) Eq InvalidRequest and RxEqEval Different Time Assertion Disable.  Disable the assertion of
14356                                                                  Eq InvalidRequest and RxEqEval at different time. */
14357         uint32_t reserved_19_22        : 4;
14358         uint32_t dcbd                  : 1;  /**< [ 18: 18](R/W) Disable balance disable. Disable DC balance feature. */
14359         uint32_t dtdd                  : 1;  /**< [ 17: 17](R/W) DLLP transmission delay disable. Disable delay transmission of DLLPs before equalization. */
14360         uint32_t ed                    : 1;  /**< [ 16: 16](R/W) Equalization disable. Disable equalization feature. */
14361         uint32_t reserved_14_15        : 2;
14362         uint32_t rxeq_rgrdless_rsts    : 1;  /**< [ 13: 13](R/W) The controller as Gen3 EQ master asserts RxEqEval to instruct the
14363                                                                  PHY to do Rx adaptation and evaluation.
14364                                                                  0x0 = Asserts after 1 us and 2 TS1 received from remote partner.
14365                                                                  0x1 = Asserts after 500 ns regardless of TS's received or not. */
14366         uint32_t rxeq_ph01_en          : 1;  /**< [ 12: 12](R/W) Rx Equalization Phase 0/Phase 1 Hold Enable. */
14367         uint32_t erd                   : 1;  /**< [ 11: 11](R/W) Equalization redo disable. Disable requesting reset of EIEOS count during equalization. */
14368         uint32_t ecrd                  : 1;  /**< [ 10: 10](R/W) Equalization EIEOS count reset disable. Disable requesting reset of EIEOS count during
14369                                                                  equalization. */
14370         uint32_t ep2p3d                : 1;  /**< [  9:  9](R/W) Equalization phase 2 and phase 3 disable. This applies to downstream ports only. */
14371         uint32_t dsg3                  : 1;  /**< [  8:  8](R/W) Disable scrambler for Gen3 data rate. The Gen3 scrambler/descrambler within the core needs
14372                                                                  to be disabled when the scrambling function is implemented outside of the core (within the
14373                                                                  PHY). */
14374         uint32_t reserved_1_7          : 7;
14375         uint32_t grizdnc               : 1;  /**< [  0:  0](R/W) Gen3 receiver impedance ZRX-DC not compliant. */
14376 #else /* Word 0 - Little Endian */
14377         uint32_t grizdnc               : 1;  /**< [  0:  0](R/W) Gen3 receiver impedance ZRX-DC not compliant. */
14378         uint32_t reserved_1_7          : 7;
14379         uint32_t dsg3                  : 1;  /**< [  8:  8](R/W) Disable scrambler for Gen3 data rate. The Gen3 scrambler/descrambler within the core needs
14380                                                                  to be disabled when the scrambling function is implemented outside of the core (within the
14381                                                                  PHY). */
14382         uint32_t ep2p3d                : 1;  /**< [  9:  9](R/W) Equalization phase 2 and phase 3 disable. This applies to downstream ports only. */
14383         uint32_t ecrd                  : 1;  /**< [ 10: 10](R/W) Equalization EIEOS count reset disable. Disable requesting reset of EIEOS count during
14384                                                                  equalization. */
14385         uint32_t erd                   : 1;  /**< [ 11: 11](R/W) Equalization redo disable. Disable requesting reset of EIEOS count during equalization. */
14386         uint32_t rxeq_ph01_en          : 1;  /**< [ 12: 12](R/W) Rx Equalization Phase 0/Phase 1 Hold Enable. */
14387         uint32_t rxeq_rgrdless_rsts    : 1;  /**< [ 13: 13](R/W) The controller as Gen3 EQ master asserts RxEqEval to instruct the
14388                                                                  PHY to do Rx adaptation and evaluation.
14389                                                                  0x0 = Asserts after 1 us and 2 TS1 received from remote partner.
14390                                                                  0x1 = Asserts after 500 ns regardless of TS's received or not. */
14391         uint32_t reserved_14_15        : 2;
14392         uint32_t ed                    : 1;  /**< [ 16: 16](R/W) Equalization disable. Disable equalization feature. */
14393         uint32_t dtdd                  : 1;  /**< [ 17: 17](R/W) DLLP transmission delay disable. Disable delay transmission of DLLPs before equalization. */
14394         uint32_t dcbd                  : 1;  /**< [ 18: 18](R/W) Disable balance disable. Disable DC balance feature. */
14395         uint32_t reserved_19_22        : 4;
14396         uint32_t eiedd                 : 1;  /**< [ 23: 23](R/W) Eq InvalidRequest and RxEqEval Different Time Assertion Disable.  Disable the assertion of
14397                                                                  Eq InvalidRequest and RxEqEval at different time. */
14398         uint32_t rss                   : 2;  /**< [ 25: 24](RO) Data rate for shadow register.  Hard-wired for Gen3. */
14399         uint32_t reserved_26_31        : 6;
14400 #endif /* Word 0 - End */
14401     } s;
14402     struct bdk_pciercx_cfg548_cn81xx
14403     {
14404 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14405         uint32_t reserved_26_31        : 6;
14406         uint32_t rss                   : 2;  /**< [ 25: 24](RO) Data rate for shadow register.  Hard-wired for Gen3. */
14407         uint32_t eiedd                 : 1;  /**< [ 23: 23](R/W) Eq InvalidRequest and RxEqEval Different Time Assertion Disable.  Disable the assertion of
14408                                                                  Eq InvalidRequest and RxEqEval at different time. */
14409         uint32_t reserved_19_22        : 4;
14410         uint32_t dcbd                  : 1;  /**< [ 18: 18](R/W) Disable balance disable. Disable DC balance feature. */
14411         uint32_t dtdd                  : 1;  /**< [ 17: 17](R/W) DLLP transmission delay disable. Disable delay transmission of DLLPs before equalization. */
14412         uint32_t ed                    : 1;  /**< [ 16: 16](R/W) Equalization disable. Disable equalization feature. */
14413         uint32_t reserved_13_15        : 3;
14414         uint32_t reserved_12           : 1;
14415         uint32_t erd                   : 1;  /**< [ 11: 11](R/W) Equalization redo disable. Disable requesting reset of EIEOS count during equalization. */
14416         uint32_t ecrd                  : 1;  /**< [ 10: 10](R/W) Equalization EIEOS count reset disable. Disable requesting reset of EIEOS count during
14417                                                                  equalization. */
14418         uint32_t ep2p3d                : 1;  /**< [  9:  9](R/W) Equalization phase 2 and phase 3 disable. This applies to downstream ports only. */
14419         uint32_t dsg3                  : 1;  /**< [  8:  8](R/W) Disable scrambler for Gen3 data rate. The Gen3 scrambler/descrambler within the core needs
14420                                                                  to be disabled when the scrambling function is implemented outside of the core (within the
14421                                                                  PHY). */
14422         uint32_t reserved_1_7          : 7;
14423         uint32_t grizdnc               : 1;  /**< [  0:  0](R/W) Gen3 receiver impedance ZRX-DC not compliant. */
14424 #else /* Word 0 - Little Endian */
14425         uint32_t grizdnc               : 1;  /**< [  0:  0](R/W) Gen3 receiver impedance ZRX-DC not compliant. */
14426         uint32_t reserved_1_7          : 7;
14427         uint32_t dsg3                  : 1;  /**< [  8:  8](R/W) Disable scrambler for Gen3 data rate. The Gen3 scrambler/descrambler within the core needs
14428                                                                  to be disabled when the scrambling function is implemented outside of the core (within the
14429                                                                  PHY). */
14430         uint32_t ep2p3d                : 1;  /**< [  9:  9](R/W) Equalization phase 2 and phase 3 disable. This applies to downstream ports only. */
14431         uint32_t ecrd                  : 1;  /**< [ 10: 10](R/W) Equalization EIEOS count reset disable. Disable requesting reset of EIEOS count during
14432                                                                  equalization. */
14433         uint32_t erd                   : 1;  /**< [ 11: 11](R/W) Equalization redo disable. Disable requesting reset of EIEOS count during equalization. */
14434         uint32_t reserved_12           : 1;
14435         uint32_t reserved_13_15        : 3;
14436         uint32_t ed                    : 1;  /**< [ 16: 16](R/W) Equalization disable. Disable equalization feature. */
14437         uint32_t dtdd                  : 1;  /**< [ 17: 17](R/W) DLLP transmission delay disable. Disable delay transmission of DLLPs before equalization. */
14438         uint32_t dcbd                  : 1;  /**< [ 18: 18](R/W) Disable balance disable. Disable DC balance feature. */
14439         uint32_t reserved_19_22        : 4;
14440         uint32_t eiedd                 : 1;  /**< [ 23: 23](R/W) Eq InvalidRequest and RxEqEval Different Time Assertion Disable.  Disable the assertion of
14441                                                                  Eq InvalidRequest and RxEqEval at different time. */
14442         uint32_t rss                   : 2;  /**< [ 25: 24](RO) Data rate for shadow register.  Hard-wired for Gen3. */
14443         uint32_t reserved_26_31        : 6;
14444 #endif /* Word 0 - End */
14445     } cn81xx;
14446     struct bdk_pciercx_cfg548_cn88xx
14447     {
14448 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14449         uint32_t reserved_19_31        : 13;
14450         uint32_t dcbd                  : 1;  /**< [ 18: 18](R/W) Disable balance disable. Disable DC balance feature. */
14451         uint32_t dtdd                  : 1;  /**< [ 17: 17](R/W) DLLP transmission delay disable. Disable delay transmission of DLLPs before equalization. */
14452         uint32_t ed                    : 1;  /**< [ 16: 16](R/W) Equalization disable. Disable equalization feature. */
14453         uint32_t reserved_13_15        : 3;
14454         uint32_t reserved_12           : 1;
14455         uint32_t erd                   : 1;  /**< [ 11: 11](R/W) Equalization redo disable. Disable requesting reset of EIEOS count during equalization. */
14456         uint32_t ecrd                  : 1;  /**< [ 10: 10](R/W) Equalization EIEOS count reset disable. Disable requesting reset of EIEOS count during
14457                                                                  equalization. */
14458         uint32_t ep2p3d                : 1;  /**< [  9:  9](R/W) Equalization phase 2 and phase 3 disable. This applies to downstream ports only. */
14459         uint32_t dsg3                  : 1;  /**< [  8:  8](R/W) Disable scrambler for Gen3 data rate. The Gen3 scrambler/descrambler within the core needs
14460                                                                  to be disabled when the scrambling function is implemented outside of the core (within the
14461                                                                  PHY). */
14462         uint32_t reserved_1_7          : 7;
14463         uint32_t grizdnc               : 1;  /**< [  0:  0](R/W) Gen3 receiver impedance ZRX-DC not compliant. */
14464 #else /* Word 0 - Little Endian */
14465         uint32_t grizdnc               : 1;  /**< [  0:  0](R/W) Gen3 receiver impedance ZRX-DC not compliant. */
14466         uint32_t reserved_1_7          : 7;
14467         uint32_t dsg3                  : 1;  /**< [  8:  8](R/W) Disable scrambler for Gen3 data rate. The Gen3 scrambler/descrambler within the core needs
14468                                                                  to be disabled when the scrambling function is implemented outside of the core (within the
14469                                                                  PHY). */
14470         uint32_t ep2p3d                : 1;  /**< [  9:  9](R/W) Equalization phase 2 and phase 3 disable. This applies to downstream ports only. */
14471         uint32_t ecrd                  : 1;  /**< [ 10: 10](R/W) Equalization EIEOS count reset disable. Disable requesting reset of EIEOS count during
14472                                                                  equalization. */
14473         uint32_t erd                   : 1;  /**< [ 11: 11](R/W) Equalization redo disable. Disable requesting reset of EIEOS count during equalization. */
14474         uint32_t reserved_12           : 1;
14475         uint32_t reserved_13_15        : 3;
14476         uint32_t ed                    : 1;  /**< [ 16: 16](R/W) Equalization disable. Disable equalization feature. */
14477         uint32_t dtdd                  : 1;  /**< [ 17: 17](R/W) DLLP transmission delay disable. Disable delay transmission of DLLPs before equalization. */
14478         uint32_t dcbd                  : 1;  /**< [ 18: 18](R/W) Disable balance disable. Disable DC balance feature. */
14479         uint32_t reserved_19_31        : 13;
14480 #endif /* Word 0 - End */
14481     } cn88xx;
14482     /* struct bdk_pciercx_cfg548_s cn83xx; */
14483 };
14484 typedef union bdk_pciercx_cfg548 bdk_pciercx_cfg548_t;
14485 
14486 static inline uint64_t BDK_PCIERCX_CFG548(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG548(unsigned long a)14487 static inline uint64_t BDK_PCIERCX_CFG548(unsigned long a)
14488 {
14489     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
14490         return 0x20000000890ll + 0x100000000ll * ((a) & 0x3);
14491     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
14492         return 0x20000000890ll + 0x100000000ll * ((a) & 0x3);
14493     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
14494         return 0x20000000890ll + 0x100000000ll * ((a) & 0x7);
14495     __bdk_csr_fatal("PCIERCX_CFG548", 1, a, 0, 0, 0);
14496 }
14497 
14498 #define typedef_BDK_PCIERCX_CFG548(a) bdk_pciercx_cfg548_t
14499 #define bustype_BDK_PCIERCX_CFG548(a) BDK_CSR_TYPE_PCICONFIGRC
14500 #define basename_BDK_PCIERCX_CFG548(a) "PCIERCX_CFG548"
14501 #define busnum_BDK_PCIERCX_CFG548(a) (a)
14502 #define arguments_BDK_PCIERCX_CFG548(a) (a),-1,-1,-1
14503 
14504 /**
14505  * Register (PCICONFIGRC) pcierc#_cfg554
14506  *
14507  * PCIe RC Gen3 EQ Control Register
14508  * This register contains the five hundred fifty-fifth 32-bits of type 0 PCIe configuration space.
14509  */
14510 union bdk_pciercx_cfg554
14511 {
14512     uint32_t u;
14513     struct bdk_pciercx_cfg554_s
14514     {
14515 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14516         uint32_t reserved_27_31        : 5;
14517         uint32_t scefpm                : 1;  /**< [ 26: 26](R/W) Request core to send back-to-back EIEOS in Recovery.RcvrLock state until
14518                                                                  presets to coefficient mapping is complete. */
14519         uint32_t reserved_25           : 1;
14520         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
14521                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
14522         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part
14523                                                                  of the EQ master
14524                                                                  phase. Encoding scheme as follows:
14525 
14526                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
14527 
14528                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
14529 
14530                                                                  _ 0b0000000000000000 = No preset req/evaluated in EQ master phase.
14531 
14532                                                                  _ 0b00000xxxxxxxxxx1 = Preset 0 req/evaluated in EQ master phase.
14533 
14534                                                                  _ 0b00000xxxxxxxxx1x = Preset 1 req/evaluated in EQ master phase.
14535 
14536                                                                  _ 0b00000xxxxxxxx1xx = Preset 2 req/evaluated in EQ master phase.
14537 
14538                                                                  _ 0b00000xxxxxxx1xxx = Preset 3 req/evaluated in EQ master phase.
14539 
14540                                                                  _ 0b00000xxxxxx1xxxx = Preset 4 req/evaluated in EQ master phase.
14541 
14542                                                                  _ 0b00000xxxxx1xxxxx = Preset 5 req/evaluated in EQ master phase.
14543 
14544                                                                  _ 0b00000xxxx1xxxxxx = Preset 6 req/evaluated in EQ master phase.
14545 
14546                                                                  _ 0b00000xxx1xxxxxxx = Preset 7 req/evaluated in EQ master phase.
14547 
14548                                                                  _ 0b00000xx1xxxxxxxx = Preset 8 req/evaluated in EQ master phase.
14549 
14550                                                                  _ 0b00000x1xxxxxxxxx = Preset 9 req/evaluated in EQ master phase.
14551 
14552                                                                  _ 0b000001xxxxxxxxxx = Preset 10 req/evaluated in EQ master phase.
14553 
14554                                                                  _ All other encodings = Reserved. */
14555         uint32_t reserved_6_7          : 2;
14556         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
14557                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
14558                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
14559                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
14560                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
14561                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
14562         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
14563 
14564                                                                  For a USP: determine the next LTSSM state from Phase2:
14565                                                                  0 = Recovery.Speed.
14566                                                                  1 = Recovry.Equalization.Phase3.
14567 
14568                                                                  For a DSP: determine the next LTSSM state from Phase3:
14569                                                                  0 = Recovery.Speed.
14570                                                                  1 = Recovry.Equalization.RcrLock.
14571 
14572                                                                  When optimal settings are not found:
14573                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
14574                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
14575         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
14576                                                                  0 = Direction of change (not supported).
14577                                                                  1 = Figure of merit.
14578                                                                  2-15 = Reserved. */
14579 #else /* Word 0 - Little Endian */
14580         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
14581                                                                  0 = Direction of change (not supported).
14582                                                                  1 = Figure of merit.
14583                                                                  2-15 = Reserved. */
14584         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
14585 
14586                                                                  For a USP: determine the next LTSSM state from Phase2:
14587                                                                  0 = Recovery.Speed.
14588                                                                  1 = Recovry.Equalization.Phase3.
14589 
14590                                                                  For a DSP: determine the next LTSSM state from Phase3:
14591                                                                  0 = Recovery.Speed.
14592                                                                  1 = Recovry.Equalization.RcrLock.
14593 
14594                                                                  When optimal settings are not found:
14595                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
14596                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
14597         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
14598                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
14599                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
14600                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
14601                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
14602                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
14603         uint32_t reserved_6_7          : 2;
14604         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part
14605                                                                  of the EQ master
14606                                                                  phase. Encoding scheme as follows:
14607 
14608                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
14609 
14610                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
14611 
14612                                                                  _ 0b0000000000000000 = No preset req/evaluated in EQ master phase.
14613 
14614                                                                  _ 0b00000xxxxxxxxxx1 = Preset 0 req/evaluated in EQ master phase.
14615 
14616                                                                  _ 0b00000xxxxxxxxx1x = Preset 1 req/evaluated in EQ master phase.
14617 
14618                                                                  _ 0b00000xxxxxxxx1xx = Preset 2 req/evaluated in EQ master phase.
14619 
14620                                                                  _ 0b00000xxxxxxx1xxx = Preset 3 req/evaluated in EQ master phase.
14621 
14622                                                                  _ 0b00000xxxxxx1xxxx = Preset 4 req/evaluated in EQ master phase.
14623 
14624                                                                  _ 0b00000xxxxx1xxxxx = Preset 5 req/evaluated in EQ master phase.
14625 
14626                                                                  _ 0b00000xxxx1xxxxxx = Preset 6 req/evaluated in EQ master phase.
14627 
14628                                                                  _ 0b00000xxx1xxxxxxx = Preset 7 req/evaluated in EQ master phase.
14629 
14630                                                                  _ 0b00000xx1xxxxxxxx = Preset 8 req/evaluated in EQ master phase.
14631 
14632                                                                  _ 0b00000x1xxxxxxxxx = Preset 9 req/evaluated in EQ master phase.
14633 
14634                                                                  _ 0b000001xxxxxxxxxx = Preset 10 req/evaluated in EQ master phase.
14635 
14636                                                                  _ All other encodings = Reserved. */
14637         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
14638                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
14639         uint32_t reserved_25           : 1;
14640         uint32_t scefpm                : 1;  /**< [ 26: 26](R/W) Request core to send back-to-back EIEOS in Recovery.RcvrLock state until
14641                                                                  presets to coefficient mapping is complete. */
14642         uint32_t reserved_27_31        : 5;
14643 #endif /* Word 0 - End */
14644     } s;
14645     struct bdk_pciercx_cfg554_cn88xxp1
14646     {
14647 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14648         uint32_t reserved_26_31        : 6;
14649         uint32_t reserved_25           : 1;
14650         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
14651                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
14652         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part of the EQ master
14653                                                                  phase. Encoding scheme as follows:
14654 
14655                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
14656 
14657                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
14658 
14659                                                                  _ 0000000000000000: No preset req/evaluated in EQ master phase
14660 
14661                                                                  _ 00000xxxxxxxxxx1: Preset 0 req/evaluated in EQ master phase
14662 
14663                                                                  _ 00000xxxxxxxxx1x: Preset 1 req/evaluated in EQ master phase
14664 
14665                                                                  _ 00000xxxxxxxx1xx: Preset 2 req/evaluated in EQ master phase
14666 
14667                                                                  _ 00000xxxxxxx1xxx: Preset 3 req/evaluated in EQ master phase
14668 
14669                                                                  _ 00000xxxxxx1xxxx: Preset 4 req/evaluated in EQ master phase
14670 
14671                                                                  _ 00000xxxxx1xxxxx: Preset 5 req/evaluated in EQ master phase
14672 
14673                                                                  _ 00000xxxx1xxxxxx: Preset 6 req/evaluated in EQ master phase
14674 
14675                                                                  _ 00000xxx1xxxxxxx: Preset 7 req/evaluated in EQ master phase
14676 
14677                                                                  _ 00000xx1xxxxxxxx: Preset 8 req/evaluated in EQ master phase
14678 
14679                                                                  _ 00000x1xxxxxxxxx: Preset 9 req/evaluated in EQ master phase
14680 
14681                                                                  _ 000001xxxxxxxxxx: Preset 10 req/evaluated in EQ master phase
14682 
14683                                                                  _ All other encodings: Reserved */
14684         uint32_t reserved_6_7          : 2;
14685         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
14686                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
14687                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
14688                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
14689                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
14690                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
14691         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
14692 
14693                                                                  For a USP: determine the next LTSSM state from Phase2:
14694                                                                  0 = Recovery.Speed.
14695                                                                  1 = Recovry.Equalization.Phase3.
14696 
14697                                                                  For a DSP: determine the next LTSSM state from Phase3:
14698                                                                  0 = Recovery.Speed.
14699                                                                  1 = Recovry.Equalization.RcrLock.
14700 
14701                                                                  When optimal settings are not found:
14702                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
14703                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
14704         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
14705                                                                  0 = Direction of change (not supported).
14706                                                                  1 = Figure of merit.
14707                                                                  2-15 = Reserved. */
14708 #else /* Word 0 - Little Endian */
14709         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
14710                                                                  0 = Direction of change (not supported).
14711                                                                  1 = Figure of merit.
14712                                                                  2-15 = Reserved. */
14713         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
14714 
14715                                                                  For a USP: determine the next LTSSM state from Phase2:
14716                                                                  0 = Recovery.Speed.
14717                                                                  1 = Recovry.Equalization.Phase3.
14718 
14719                                                                  For a DSP: determine the next LTSSM state from Phase3:
14720                                                                  0 = Recovery.Speed.
14721                                                                  1 = Recovry.Equalization.RcrLock.
14722 
14723                                                                  When optimal settings are not found:
14724                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
14725                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
14726         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
14727                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
14728                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
14729                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
14730                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
14731                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
14732         uint32_t reserved_6_7          : 2;
14733         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part of the EQ master
14734                                                                  phase. Encoding scheme as follows:
14735 
14736                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
14737 
14738                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
14739 
14740                                                                  _ 0000000000000000: No preset req/evaluated in EQ master phase
14741 
14742                                                                  _ 00000xxxxxxxxxx1: Preset 0 req/evaluated in EQ master phase
14743 
14744                                                                  _ 00000xxxxxxxxx1x: Preset 1 req/evaluated in EQ master phase
14745 
14746                                                                  _ 00000xxxxxxxx1xx: Preset 2 req/evaluated in EQ master phase
14747 
14748                                                                  _ 00000xxxxxxx1xxx: Preset 3 req/evaluated in EQ master phase
14749 
14750                                                                  _ 00000xxxxxx1xxxx: Preset 4 req/evaluated in EQ master phase
14751 
14752                                                                  _ 00000xxxxx1xxxxx: Preset 5 req/evaluated in EQ master phase
14753 
14754                                                                  _ 00000xxxx1xxxxxx: Preset 6 req/evaluated in EQ master phase
14755 
14756                                                                  _ 00000xxx1xxxxxxx: Preset 7 req/evaluated in EQ master phase
14757 
14758                                                                  _ 00000xx1xxxxxxxx: Preset 8 req/evaluated in EQ master phase
14759 
14760                                                                  _ 00000x1xxxxxxxxx: Preset 9 req/evaluated in EQ master phase
14761 
14762                                                                  _ 000001xxxxxxxxxx: Preset 10 req/evaluated in EQ master phase
14763 
14764                                                                  _ All other encodings: Reserved */
14765         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
14766                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
14767         uint32_t reserved_25           : 1;
14768         uint32_t reserved_26_31        : 6;
14769 #endif /* Word 0 - End */
14770     } cn88xxp1;
14771     /* struct bdk_pciercx_cfg554_s cn81xx; */
14772     struct bdk_pciercx_cfg554_cn83xx
14773     {
14774 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14775         uint32_t reserved_27_31        : 5;
14776         uint32_t scefpm                : 1;  /**< [ 26: 26](R/W) Request core to send back-to-back EIEOS in Recovery.RcvrLock state until
14777                                                                  presets to coefficient mapping is complete. */
14778         uint32_t reserved_25           : 1;
14779         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
14780                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
14781         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part of the EQ master
14782                                                                  phase. Encoding scheme as follows:
14783 
14784                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
14785 
14786                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
14787 
14788                                                                  _ 0b0000000000000000 = No preset req/evaluated in EQ master phase.
14789 
14790                                                                  _ 0b00000xxxxxxxxxx1 = Preset 0 req/evaluated in EQ master phase.
14791 
14792                                                                  _ 0b00000xxxxxxxxx1x = Preset 1 req/evaluated in EQ master phase.
14793 
14794                                                                  _ 0b00000xxxxxxxx1xx = Preset 2 req/evaluated in EQ master phase.
14795 
14796                                                                  _ 0b00000xxxxxxx1xxx = Preset 3 req/evaluated in EQ master phase.
14797 
14798                                                                  _ 0b00000xxxxxx1xxxx = Preset 4 req/evaluated in EQ master phase.
14799 
14800                                                                  _ 0b00000xxxxx1xxxxx = Preset 5 req/evaluated in EQ master phase.
14801 
14802                                                                  _ 0b00000xxxx1xxxxxx = Preset 6 req/evaluated in EQ master phase.
14803 
14804                                                                  _ 0b00000xxx1xxxxxxx = Preset 7 req/evaluated in EQ master phase.
14805 
14806                                                                  _ 0b00000xx1xxxxxxxx = Preset 8 req/evaluated in EQ master phase.
14807 
14808                                                                  _ 0b00000x1xxxxxxxxx = Preset 9 req/evaluated in EQ master phase.
14809 
14810                                                                  _ 0b000001xxxxxxxxxx = Preset 10 req/evaluated in EQ master phase.
14811 
14812                                                                  _ All other encodings = Reserved. */
14813         uint32_t reserved_6_7          : 2;
14814         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
14815                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
14816                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
14817                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
14818                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
14819                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
14820         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
14821 
14822                                                                  For a USP: determine the next LTSSM state from Phase2:
14823                                                                  0 = Recovery.Speed.
14824                                                                  1 = Recovry.Equalization.Phase3.
14825 
14826                                                                  For a DSP: determine the next LTSSM state from Phase3:
14827                                                                  0 = Recovery.Speed.
14828                                                                  1 = Recovry.Equalization.RcrLock.
14829 
14830                                                                  When optimal settings are not found:
14831                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
14832                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
14833         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
14834                                                                  0 = Direction of change (not supported).
14835                                                                  1 = Figure of merit.
14836                                                                  2-15 = Reserved. */
14837 #else /* Word 0 - Little Endian */
14838         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
14839                                                                  0 = Direction of change (not supported).
14840                                                                  1 = Figure of merit.
14841                                                                  2-15 = Reserved. */
14842         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
14843 
14844                                                                  For a USP: determine the next LTSSM state from Phase2:
14845                                                                  0 = Recovery.Speed.
14846                                                                  1 = Recovry.Equalization.Phase3.
14847 
14848                                                                  For a DSP: determine the next LTSSM state from Phase3:
14849                                                                  0 = Recovery.Speed.
14850                                                                  1 = Recovry.Equalization.RcrLock.
14851 
14852                                                                  When optimal settings are not found:
14853                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
14854                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
14855         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
14856                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
14857                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
14858                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
14859                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
14860                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
14861         uint32_t reserved_6_7          : 2;
14862         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part of the EQ master
14863                                                                  phase. Encoding scheme as follows:
14864 
14865                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
14866 
14867                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
14868 
14869                                                                  _ 0b0000000000000000 = No preset req/evaluated in EQ master phase.
14870 
14871                                                                  _ 0b00000xxxxxxxxxx1 = Preset 0 req/evaluated in EQ master phase.
14872 
14873                                                                  _ 0b00000xxxxxxxxx1x = Preset 1 req/evaluated in EQ master phase.
14874 
14875                                                                  _ 0b00000xxxxxxxx1xx = Preset 2 req/evaluated in EQ master phase.
14876 
14877                                                                  _ 0b00000xxxxxxx1xxx = Preset 3 req/evaluated in EQ master phase.
14878 
14879                                                                  _ 0b00000xxxxxx1xxxx = Preset 4 req/evaluated in EQ master phase.
14880 
14881                                                                  _ 0b00000xxxxx1xxxxx = Preset 5 req/evaluated in EQ master phase.
14882 
14883                                                                  _ 0b00000xxxx1xxxxxx = Preset 6 req/evaluated in EQ master phase.
14884 
14885                                                                  _ 0b00000xxx1xxxxxxx = Preset 7 req/evaluated in EQ master phase.
14886 
14887                                                                  _ 0b00000xx1xxxxxxxx = Preset 8 req/evaluated in EQ master phase.
14888 
14889                                                                  _ 0b00000x1xxxxxxxxx = Preset 9 req/evaluated in EQ master phase.
14890 
14891                                                                  _ 0b000001xxxxxxxxxx = Preset 10 req/evaluated in EQ master phase.
14892 
14893                                                                  _ All other encodings = Reserved. */
14894         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
14895                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
14896         uint32_t reserved_25           : 1;
14897         uint32_t scefpm                : 1;  /**< [ 26: 26](R/W) Request core to send back-to-back EIEOS in Recovery.RcvrLock state until
14898                                                                  presets to coefficient mapping is complete. */
14899         uint32_t reserved_27_31        : 5;
14900 #endif /* Word 0 - End */
14901     } cn83xx;
14902     struct bdk_pciercx_cfg554_cn88xxp2
14903     {
14904 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
14905         uint32_t reserved_26_31        : 6;
14906         uint32_t reserved_25           : 1;
14907         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
14908                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
14909         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part
14910                                                                  of the EQ master
14911                                                                  phase. Encoding scheme as follows:
14912 
14913                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
14914 
14915                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
14916 
14917                                                                  _ 0000000000000000: No preset req/evaluated in EQ master phase
14918 
14919                                                                  _ 00000xxxxxxxxxx1: Preset 0 req/evaluated in EQ master phase
14920 
14921                                                                  _ 00000xxxxxxxxx1x: Preset 1 req/evaluated in EQ master phase
14922 
14923                                                                  _ 00000xxxxxxxx1xx: Preset 2 req/evaluated in EQ master phase
14924 
14925                                                                  _ 00000xxxxxxx1xxx: Preset 3 req/evaluated in EQ master phase
14926 
14927                                                                  _ 00000xxxxxx1xxxx: Preset 4 req/evaluated in EQ master phase
14928 
14929                                                                  _ 00000xxxxx1xxxxx: Preset 5 req/evaluated in EQ master phase
14930 
14931                                                                  _ 00000xxxx1xxxxxx: Preset 6 req/evaluated in EQ master phase
14932 
14933                                                                  _ 00000xxx1xxxxxxx: Preset 7 req/evaluated in EQ master phase
14934 
14935                                                                  _ 00000xx1xxxxxxxx: Preset 8 req/evaluated in EQ master phase
14936 
14937                                                                  _ 00000x1xxxxxxxxx: Preset 9 req/evaluated in EQ master phase
14938 
14939                                                                  _ 000001xxxxxxxxxx: Preset 10 req/evaluated in EQ master phase
14940 
14941                                                                  _ All other encodings: Reserved */
14942         uint32_t reserved_6_7          : 2;
14943         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
14944                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
14945                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
14946                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
14947                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
14948                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
14949         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
14950 
14951                                                                  For a USP: determine the next LTSSM state from Phase2:
14952                                                                  0 = Recovery.Speed.
14953                                                                  1 = Recovry.Equalization.Phase3.
14954 
14955                                                                  For a DSP: determine the next LTSSM state from Phase3:
14956                                                                  0 = Recovery.Speed.
14957                                                                  1 = Recovry.Equalization.RcrLock.
14958 
14959                                                                  When optimal settings are not found:
14960                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
14961                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
14962         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
14963                                                                  0 = Direction of change (not supported).
14964                                                                  1 = Figure of merit.
14965                                                                  2-15 = Reserved. */
14966 #else /* Word 0 - Little Endian */
14967         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
14968                                                                  0 = Direction of change (not supported).
14969                                                                  1 = Figure of merit.
14970                                                                  2-15 = Reserved. */
14971         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
14972 
14973                                                                  For a USP: determine the next LTSSM state from Phase2:
14974                                                                  0 = Recovery.Speed.
14975                                                                  1 = Recovry.Equalization.Phase3.
14976 
14977                                                                  For a DSP: determine the next LTSSM state from Phase3:
14978                                                                  0 = Recovery.Speed.
14979                                                                  1 = Recovry.Equalization.RcrLock.
14980 
14981                                                                  When optimal settings are not found:
14982                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
14983                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
14984         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
14985                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
14986                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
14987                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
14988                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
14989                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
14990         uint32_t reserved_6_7          : 2;
14991         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part
14992                                                                  of the EQ master
14993                                                                  phase. Encoding scheme as follows:
14994 
14995                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
14996 
14997                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
14998 
14999                                                                  _ 0000000000000000: No preset req/evaluated in EQ master phase
15000 
15001                                                                  _ 00000xxxxxxxxxx1: Preset 0 req/evaluated in EQ master phase
15002 
15003                                                                  _ 00000xxxxxxxxx1x: Preset 1 req/evaluated in EQ master phase
15004 
15005                                                                  _ 00000xxxxxxxx1xx: Preset 2 req/evaluated in EQ master phase
15006 
15007                                                                  _ 00000xxxxxxx1xxx: Preset 3 req/evaluated in EQ master phase
15008 
15009                                                                  _ 00000xxxxxx1xxxx: Preset 4 req/evaluated in EQ master phase
15010 
15011                                                                  _ 00000xxxxx1xxxxx: Preset 5 req/evaluated in EQ master phase
15012 
15013                                                                  _ 00000xxxx1xxxxxx: Preset 6 req/evaluated in EQ master phase
15014 
15015                                                                  _ 00000xxx1xxxxxxx: Preset 7 req/evaluated in EQ master phase
15016 
15017                                                                  _ 00000xx1xxxxxxxx: Preset 8 req/evaluated in EQ master phase
15018 
15019                                                                  _ 00000x1xxxxxxxxx: Preset 9 req/evaluated in EQ master phase
15020 
15021                                                                  _ 000001xxxxxxxxxx: Preset 10 req/evaluated in EQ master phase
15022 
15023                                                                  _ All other encodings: Reserved */
15024         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
15025                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
15026         uint32_t reserved_25           : 1;
15027         uint32_t reserved_26_31        : 6;
15028 #endif /* Word 0 - End */
15029     } cn88xxp2;
15030 };
15031 typedef union bdk_pciercx_cfg554 bdk_pciercx_cfg554_t;
15032 
15033 static inline uint64_t BDK_PCIERCX_CFG554(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG554(unsigned long a)15034 static inline uint64_t BDK_PCIERCX_CFG554(unsigned long a)
15035 {
15036     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
15037         return 0x200000008a8ll + 0x100000000ll * ((a) & 0x3);
15038     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
15039         return 0x200000008a8ll + 0x100000000ll * ((a) & 0x3);
15040     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
15041         return 0x200000008a8ll + 0x100000000ll * ((a) & 0x7);
15042     __bdk_csr_fatal("PCIERCX_CFG554", 1, a, 0, 0, 0);
15043 }
15044 
15045 #define typedef_BDK_PCIERCX_CFG554(a) bdk_pciercx_cfg554_t
15046 #define bustype_BDK_PCIERCX_CFG554(a) BDK_CSR_TYPE_PCICONFIGRC
15047 #define basename_BDK_PCIERCX_CFG554(a) "PCIERCX_CFG554"
15048 #define busnum_BDK_PCIERCX_CFG554(a) (a)
15049 #define arguments_BDK_PCIERCX_CFG554(a) (a),-1,-1,-1
15050 
15051 /**
15052  * Register (PCICONFIGRC) pcierc#_cfg558
15053  *
15054  * PCIe RC Gen3 PIPE Loopback Register
15055  * This register contains the five hundred fifty-ninth 32-bits of type 0 PCIe configuration space.
15056  */
15057 union bdk_pciercx_cfg558
15058 {
15059     uint32_t u;
15060     struct bdk_pciercx_cfg558_s
15061     {
15062 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15063         uint32_t ple                   : 1;  /**< [ 31: 31](R/W) Pipe loopback enable. */
15064         uint32_t reserved_0_30         : 31;
15065 #else /* Word 0 - Little Endian */
15066         uint32_t reserved_0_30         : 31;
15067         uint32_t ple                   : 1;  /**< [ 31: 31](R/W) Pipe loopback enable. */
15068 #endif /* Word 0 - End */
15069     } s;
15070     struct bdk_pciercx_cfg558_cn81xx
15071     {
15072 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15073         uint32_t ple                   : 1;  /**< [ 31: 31](R/W) Pipe loopback enable. */
15074         uint32_t rxstatus              : 31; /**< [ 30:  0](RO/H) Reserved. */
15075 #else /* Word 0 - Little Endian */
15076         uint32_t rxstatus              : 31; /**< [ 30:  0](RO/H) Reserved. */
15077         uint32_t ple                   : 1;  /**< [ 31: 31](R/W) Pipe loopback enable. */
15078 #endif /* Word 0 - End */
15079     } cn81xx;
15080     /* struct bdk_pciercx_cfg558_cn81xx cn88xx; */
15081     struct bdk_pciercx_cfg558_cn83xx
15082     {
15083 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15084         uint32_t ple                   : 1;  /**< [ 31: 31](R/W) Pipe loopback enable. */
15085         uint32_t reserved_16_30        : 15;
15086         uint32_t lpbk_rxvalid          : 16; /**< [ 15:  0](R/W) Loopback rxvalid (lane enable - 1 bit per lane) */
15087 #else /* Word 0 - Little Endian */
15088         uint32_t lpbk_rxvalid          : 16; /**< [ 15:  0](R/W) Loopback rxvalid (lane enable - 1 bit per lane) */
15089         uint32_t reserved_16_30        : 15;
15090         uint32_t ple                   : 1;  /**< [ 31: 31](R/W) Pipe loopback enable. */
15091 #endif /* Word 0 - End */
15092     } cn83xx;
15093 };
15094 typedef union bdk_pciercx_cfg558 bdk_pciercx_cfg558_t;
15095 
15096 static inline uint64_t BDK_PCIERCX_CFG558(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG558(unsigned long a)15097 static inline uint64_t BDK_PCIERCX_CFG558(unsigned long a)
15098 {
15099     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
15100         return 0x200000008b8ll + 0x100000000ll * ((a) & 0x3);
15101     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
15102         return 0x200000008b8ll + 0x100000000ll * ((a) & 0x3);
15103     if (CAVIUM_IS_MODEL(CAVIUM_CN88XX) && (a<=5))
15104         return 0x200000008b8ll + 0x100000000ll * ((a) & 0x7);
15105     __bdk_csr_fatal("PCIERCX_CFG558", 1, a, 0, 0, 0);
15106 }
15107 
15108 #define typedef_BDK_PCIERCX_CFG558(a) bdk_pciercx_cfg558_t
15109 #define bustype_BDK_PCIERCX_CFG558(a) BDK_CSR_TYPE_PCICONFIGRC
15110 #define basename_BDK_PCIERCX_CFG558(a) "PCIERCX_CFG558"
15111 #define busnum_BDK_PCIERCX_CFG558(a) (a)
15112 #define arguments_BDK_PCIERCX_CFG558(a) (a),-1,-1,-1
15113 
15114 /**
15115  * Register (PCICONFIGRC) pcierc#_cfg559
15116  *
15117  * PCIe RC Miscellaneous Control 1 Register
15118  * This register contains the five hundred sixtieth 32-bits of PCIe type 0 configuration space.
15119  */
15120 union bdk_pciercx_cfg559
15121 {
15122     uint32_t u;
15123     struct bdk_pciercx_cfg559_s
15124     {
15125 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15126         uint32_t reserved_4_31         : 28;
15127         uint32_t simp_replay_timer     : 1;  /**< [  3:  3](R/W) Not Supported. */
15128         uint32_t ur_c4_mask_4_trgt1    : 1;  /**< [  2:  2](R/W) This field only applies to request TLPs (with UR filtering status) that are
15129                                                                  chosen to forward to the application (when [DEFAULT_TARGET] is set).
15130 
15131                                                                  When set, the core suppresses error logging, error message generation, and CPL
15132                                                                  generation (for non-posted requests). */
15133         uint32_t def_target            : 1;  /**< [  1:  1](R/W) Default target a received IO or MEM request with UR/CA/CRS
15134                                                                  is sent to be the controller.
15135                                                                  0x0 = The controller drops all incoming I/O or Mem (after
15136                                                                       corresponding error reporting). A completion with
15137                                                                       UR status will be generated for non-posted requests.
15138                                                                  0x1 = The controller forwards all incoming I/O or MEM
15139                                                                       requests with UR/CA/CRS status to your application. */
15140         uint32_t dbi_ro_wr_en          : 1;  /**< [  0:  0](R/W) Write to RO registers using DBI.  This bit should not be cleared in normal operation. */
15141 #else /* Word 0 - Little Endian */
15142         uint32_t dbi_ro_wr_en          : 1;  /**< [  0:  0](R/W) Write to RO registers using DBI.  This bit should not be cleared in normal operation. */
15143         uint32_t def_target            : 1;  /**< [  1:  1](R/W) Default target a received IO or MEM request with UR/CA/CRS
15144                                                                  is sent to be the controller.
15145                                                                  0x0 = The controller drops all incoming I/O or Mem (after
15146                                                                       corresponding error reporting). A completion with
15147                                                                       UR status will be generated for non-posted requests.
15148                                                                  0x1 = The controller forwards all incoming I/O or MEM
15149                                                                       requests with UR/CA/CRS status to your application. */
15150         uint32_t ur_c4_mask_4_trgt1    : 1;  /**< [  2:  2](R/W) This field only applies to request TLPs (with UR filtering status) that are
15151                                                                  chosen to forward to the application (when [DEFAULT_TARGET] is set).
15152 
15153                                                                  When set, the core suppresses error logging, error message generation, and CPL
15154                                                                  generation (for non-posted requests). */
15155         uint32_t simp_replay_timer     : 1;  /**< [  3:  3](R/W) Not Supported. */
15156         uint32_t reserved_4_31         : 28;
15157 #endif /* Word 0 - End */
15158     } s;
15159     struct bdk_pciercx_cfg559_cn81xx
15160     {
15161 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15162         uint32_t reserved_1_31         : 31;
15163         uint32_t dbi_ro_wr_en          : 1;  /**< [  0:  0](R/W) Write to RO registers using DBI.  This bit should not be cleared in normal operation. */
15164 #else /* Word 0 - Little Endian */
15165         uint32_t dbi_ro_wr_en          : 1;  /**< [  0:  0](R/W) Write to RO registers using DBI.  This bit should not be cleared in normal operation. */
15166         uint32_t reserved_1_31         : 31;
15167 #endif /* Word 0 - End */
15168     } cn81xx;
15169     struct bdk_pciercx_cfg559_cn83xx
15170     {
15171 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15172         uint32_t reserved_4_31         : 28;
15173         uint32_t simp_replay_timer     : 1;  /**< [  3:  3](R/W) Not Supported. */
15174         uint32_t ur_c4_mask_4_trgt1    : 1;  /**< [  2:  2](R/W) This field only applies to request TLPs (with UR filtering status) that are
15175                                                                  chosen to forward to the application (when [DEFAULT_TARGET] is set).
15176 
15177                                                                  When set, the core suppresses error logging, error message generation, and CPL
15178                                                                  generation (for non-posted requests). */
15179         uint32_t def_target            : 1;  /**< [  1:  1](R/W) Default target a received IO or MEM request with UR/CA/CRS
15180                                                                  is sent to be the controller.
15181                                                                  0x0 = The controller drops all incoming I/O or Mem (after
15182                                                                       corresponding error reporting). A completion with
15183                                                                       UR status will be generated for non-posted requests.
15184                                                                  0x1 = The controller forwards all incoming I/O or MEM
15185                                                                       requests with UR/CA/CRS status to your application. */
15186         uint32_t dbi_ro_wr_en          : 1;  /**< [  0:  0](R/W) Write to RO registers using DBI.  When you set this bit, then some
15187                                                                  RO bits are writable from the DBI. */
15188 #else /* Word 0 - Little Endian */
15189         uint32_t dbi_ro_wr_en          : 1;  /**< [  0:  0](R/W) Write to RO registers using DBI.  When you set this bit, then some
15190                                                                  RO bits are writable from the DBI. */
15191         uint32_t def_target            : 1;  /**< [  1:  1](R/W) Default target a received IO or MEM request with UR/CA/CRS
15192                                                                  is sent to be the controller.
15193                                                                  0x0 = The controller drops all incoming I/O or Mem (after
15194                                                                       corresponding error reporting). A completion with
15195                                                                       UR status will be generated for non-posted requests.
15196                                                                  0x1 = The controller forwards all incoming I/O or MEM
15197                                                                       requests with UR/CA/CRS status to your application. */
15198         uint32_t ur_c4_mask_4_trgt1    : 1;  /**< [  2:  2](R/W) This field only applies to request TLPs (with UR filtering status) that are
15199                                                                  chosen to forward to the application (when [DEFAULT_TARGET] is set).
15200 
15201                                                                  When set, the core suppresses error logging, error message generation, and CPL
15202                                                                  generation (for non-posted requests). */
15203         uint32_t simp_replay_timer     : 1;  /**< [  3:  3](R/W) Not Supported. */
15204         uint32_t reserved_4_31         : 28;
15205 #endif /* Word 0 - End */
15206     } cn83xx;
15207 };
15208 typedef union bdk_pciercx_cfg559 bdk_pciercx_cfg559_t;
15209 
15210 static inline uint64_t BDK_PCIERCX_CFG559(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG559(unsigned long a)15211 static inline uint64_t BDK_PCIERCX_CFG559(unsigned long a)
15212 {
15213     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
15214         return 0x200000008bcll + 0x100000000ll * ((a) & 0x3);
15215     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
15216         return 0x200000008bcll + 0x100000000ll * ((a) & 0x3);
15217     __bdk_csr_fatal("PCIERCX_CFG559", 1, a, 0, 0, 0);
15218 }
15219 
15220 #define typedef_BDK_PCIERCX_CFG559(a) bdk_pciercx_cfg559_t
15221 #define bustype_BDK_PCIERCX_CFG559(a) BDK_CSR_TYPE_PCICONFIGRC
15222 #define basename_BDK_PCIERCX_CFG559(a) "PCIERCX_CFG559"
15223 #define busnum_BDK_PCIERCX_CFG559(a) (a)
15224 #define arguments_BDK_PCIERCX_CFG559(a) (a),-1,-1,-1
15225 
15226 /**
15227  * Register (PCICONFIGRC) pcierc#_cfg560
15228  *
15229  * PCIe RC UpConfigure Multi-lane Control Register
15230  * This register contains the five hundred sixty-first 32-bits of PCIe type 0 configuration space.
15231  */
15232 union bdk_pciercx_cfg560
15233 {
15234     uint32_t u;
15235     struct bdk_pciercx_cfg560_s
15236     {
15237 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15238         uint32_t reserved_8_31         : 24;
15239         uint32_t upc_supp              : 1;  /**< [  7:  7](R/W) Upconfigure support.
15240                                                                  The core sends this value to the link upconfigure capability in TS2 ordered
15241                                                                  sets in Configuration.Complete state. */
15242         uint32_t dir_lnk_wdth_chg      : 1;  /**< [  6:  6](R/W/H) Directed link width change.
15243                                                                  The core always moves to configuration state through recovery state
15244                                                                  when this bit is set.
15245 
15246                                                                  If PCIERC()_CFG144[LTSSM_VAR] is set and PCIERC()_CFG040[HASD]
15247                                                                  is 0, the core starts upconfigure or autonomous width
15248                                                                  downsizing (to the TRGT_LNK_WDTH value) in the configuration
15249                                                                  state.
15250 
15251                                                                  If TRGT_LNK_WDTH value is 0x0, the core does not
15252                                                                  start upconfigure or autonomous width downsizing in the
15253                                                                  configuration state.
15254 
15255                                                                  The core self-clears this field when the core accepts this
15256                                                                  request. */
15257         uint32_t trgt_lnk_wdth         : 6;  /**< [  5:  0](R/W/H) Target link width.
15258                                                                  0x0  = Core does not start upconfigure or autonomous width downsizing in configuration
15259                                                                  state.
15260                                                                  0x1  = x1.
15261                                                                  0x2  = x2.
15262                                                                  0x4  = x4.
15263                                                                  0x8  = x8.
15264                                                                  0x10 = x16 (Not Supported).
15265                                                                  0x20 = x32 (Not Supported). */
15266 #else /* Word 0 - Little Endian */
15267         uint32_t trgt_lnk_wdth         : 6;  /**< [  5:  0](R/W/H) Target link width.
15268                                                                  0x0  = Core does not start upconfigure or autonomous width downsizing in configuration
15269                                                                  state.
15270                                                                  0x1  = x1.
15271                                                                  0x2  = x2.
15272                                                                  0x4  = x4.
15273                                                                  0x8  = x8.
15274                                                                  0x10 = x16 (Not Supported).
15275                                                                  0x20 = x32 (Not Supported). */
15276         uint32_t dir_lnk_wdth_chg      : 1;  /**< [  6:  6](R/W/H) Directed link width change.
15277                                                                  The core always moves to configuration state through recovery state
15278                                                                  when this bit is set.
15279 
15280                                                                  If PCIERC()_CFG144[LTSSM_VAR] is set and PCIERC()_CFG040[HASD]
15281                                                                  is 0, the core starts upconfigure or autonomous width
15282                                                                  downsizing (to the TRGT_LNK_WDTH value) in the configuration
15283                                                                  state.
15284 
15285                                                                  If TRGT_LNK_WDTH value is 0x0, the core does not
15286                                                                  start upconfigure or autonomous width downsizing in the
15287                                                                  configuration state.
15288 
15289                                                                  The core self-clears this field when the core accepts this
15290                                                                  request. */
15291         uint32_t upc_supp              : 1;  /**< [  7:  7](R/W) Upconfigure support.
15292                                                                  The core sends this value to the link upconfigure capability in TS2 ordered
15293                                                                  sets in Configuration.Complete state. */
15294         uint32_t reserved_8_31         : 24;
15295 #endif /* Word 0 - End */
15296     } s;
15297     /* struct bdk_pciercx_cfg560_s cn; */
15298 };
15299 typedef union bdk_pciercx_cfg560 bdk_pciercx_cfg560_t;
15300 
15301 static inline uint64_t BDK_PCIERCX_CFG560(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG560(unsigned long a)15302 static inline uint64_t BDK_PCIERCX_CFG560(unsigned long a)
15303 {
15304     if (CAVIUM_IS_MODEL(CAVIUM_CN83XX) && (a<=3))
15305         return 0x200000008c0ll + 0x100000000ll * ((a) & 0x3);
15306     __bdk_csr_fatal("PCIERCX_CFG560", 1, a, 0, 0, 0);
15307 }
15308 
15309 #define typedef_BDK_PCIERCX_CFG560(a) bdk_pciercx_cfg560_t
15310 #define bustype_BDK_PCIERCX_CFG560(a) BDK_CSR_TYPE_PCICONFIGRC
15311 #define basename_BDK_PCIERCX_CFG560(a) "PCIERCX_CFG560"
15312 #define busnum_BDK_PCIERCX_CFG560(a) (a)
15313 #define arguments_BDK_PCIERCX_CFG560(a) (a),-1,-1,-1
15314 
15315 /**
15316  * Register (PCICONFIGRC) pcierc#_cfg568
15317  *
15318  * PCIe RC ACE Cache Coherency Control 1 Register
15319  * This register contains the five hundred sixty-eigth 32-bits of type 0 PCIe configuration space.
15320  */
15321 union bdk_pciercx_cfg568
15322 {
15323     uint32_t u;
15324     struct bdk_pciercx_cfg568_s
15325     {
15326 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15327         uint32_t cfg_memtype_boundary_l_addr : 30;/**< [ 31:  2](R/W) Reserved. */
15328         uint32_t reserved_1            : 1;
15329         uint32_t cfg_memtype_value     : 1;  /**< [  0:  0](R/W) Reserved. */
15330 #else /* Word 0 - Little Endian */
15331         uint32_t cfg_memtype_value     : 1;  /**< [  0:  0](R/W) Reserved. */
15332         uint32_t reserved_1            : 1;
15333         uint32_t cfg_memtype_boundary_l_addr : 30;/**< [ 31:  2](R/W) Reserved. */
15334 #endif /* Word 0 - End */
15335     } s;
15336     /* struct bdk_pciercx_cfg568_s cn; */
15337 };
15338 typedef union bdk_pciercx_cfg568 bdk_pciercx_cfg568_t;
15339 
15340 static inline uint64_t BDK_PCIERCX_CFG568(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG568(unsigned long a)15341 static inline uint64_t BDK_PCIERCX_CFG568(unsigned long a)
15342 {
15343     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
15344         return 0x200000008e0ll + 0x100000000ll * ((a) & 0x3);
15345     __bdk_csr_fatal("PCIERCX_CFG568", 1, a, 0, 0, 0);
15346 }
15347 
15348 #define typedef_BDK_PCIERCX_CFG568(a) bdk_pciercx_cfg568_t
15349 #define bustype_BDK_PCIERCX_CFG568(a) BDK_CSR_TYPE_PCICONFIGRC
15350 #define basename_BDK_PCIERCX_CFG568(a) "PCIERCX_CFG568"
15351 #define busnum_BDK_PCIERCX_CFG568(a) (a)
15352 #define arguments_BDK_PCIERCX_CFG568(a) (a),-1,-1,-1
15353 
15354 /**
15355  * Register (PCICONFIGRC) pcierc#_cfg569
15356  *
15357  * PCIe RC ACE Cache Coherency Control 2 Register
15358  * This register contains the five hundred sixty-eigth 32-bits of type 0 PCIe configuration space.
15359  */
15360 union bdk_pciercx_cfg569
15361 {
15362     uint32_t u;
15363     struct bdk_pciercx_cfg569_s
15364     {
15365 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15366         uint32_t cfg_memtype_boundary_h_addr : 32;/**< [ 31:  0](R/W) Reserved. */
15367 #else /* Word 0 - Little Endian */
15368         uint32_t cfg_memtype_boundary_h_addr : 32;/**< [ 31:  0](R/W) Reserved. */
15369 #endif /* Word 0 - End */
15370     } s;
15371     /* struct bdk_pciercx_cfg569_s cn; */
15372 };
15373 typedef union bdk_pciercx_cfg569 bdk_pciercx_cfg569_t;
15374 
15375 static inline uint64_t BDK_PCIERCX_CFG569(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CFG569(unsigned long a)15376 static inline uint64_t BDK_PCIERCX_CFG569(unsigned long a)
15377 {
15378     if (CAVIUM_IS_MODEL(CAVIUM_CN81XX) && (a<=2))
15379         return 0x200000008e4ll + 0x100000000ll * ((a) & 0x3);
15380     __bdk_csr_fatal("PCIERCX_CFG569", 1, a, 0, 0, 0);
15381 }
15382 
15383 #define typedef_BDK_PCIERCX_CFG569(a) bdk_pciercx_cfg569_t
15384 #define bustype_BDK_PCIERCX_CFG569(a) BDK_CSR_TYPE_PCICONFIGRC
15385 #define basename_BDK_PCIERCX_CFG569(a) "PCIERCX_CFG569"
15386 #define busnum_BDK_PCIERCX_CFG569(a) (a)
15387 #define arguments_BDK_PCIERCX_CFG569(a) (a),-1,-1,-1
15388 
15389 /**
15390  * Register (PCICONFIGRC) pcierc#_clk_gating_ctl
15391  *
15392  * PCIe RC RADM Clock Gating Enable Control Register
15393  */
15394 union bdk_pciercx_clk_gating_ctl
15395 {
15396     uint32_t u;
15397     struct bdk_pciercx_clk_gating_ctl_s
15398     {
15399 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15400         uint32_t reserved_1_31         : 31;
15401         uint32_t radm_clk_gating_en    : 1;  /**< [  0:  0](R/W) Enable RADM clock gating feature when there is no
15402                                                                  receive traffic, receive queues and pre/post-queue pipelines
15403                                                                  are empty, RADM completion LUT is empty, and there
15404                                                                  are no FLR actions pending.
15405                                                                  0x0 = Disable.
15406                                                                  0x1 = Enable. */
15407 #else /* Word 0 - Little Endian */
15408         uint32_t radm_clk_gating_en    : 1;  /**< [  0:  0](R/W) Enable RADM clock gating feature when there is no
15409                                                                  receive traffic, receive queues and pre/post-queue pipelines
15410                                                                  are empty, RADM completion LUT is empty, and there
15411                                                                  are no FLR actions pending.
15412                                                                  0x0 = Disable.
15413                                                                  0x1 = Enable. */
15414         uint32_t reserved_1_31         : 31;
15415 #endif /* Word 0 - End */
15416     } s;
15417     /* struct bdk_pciercx_clk_gating_ctl_s cn; */
15418 };
15419 typedef union bdk_pciercx_clk_gating_ctl bdk_pciercx_clk_gating_ctl_t;
15420 
15421 static inline uint64_t BDK_PCIERCX_CLK_GATING_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CLK_GATING_CTL(unsigned long a)15422 static inline uint64_t BDK_PCIERCX_CLK_GATING_CTL(unsigned long a)
15423 {
15424     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
15425         return 0x88cll + 0x100000000ll * ((a) & 0x3);
15426     __bdk_csr_fatal("PCIERCX_CLK_GATING_CTL", 1, a, 0, 0, 0);
15427 }
15428 
15429 #define typedef_BDK_PCIERCX_CLK_GATING_CTL(a) bdk_pciercx_clk_gating_ctl_t
15430 #define bustype_BDK_PCIERCX_CLK_GATING_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
15431 #define basename_BDK_PCIERCX_CLK_GATING_CTL(a) "PCIERCX_CLK_GATING_CTL"
15432 #define busnum_BDK_PCIERCX_CLK_GATING_CTL(a) (a)
15433 #define arguments_BDK_PCIERCX_CLK_GATING_CTL(a) (a),-1,-1,-1
15434 
15435 /**
15436  * Register (PCICONFIGRC) pcierc#_clsize
15437  *
15438  * PCIe RC BIST, Header Type, Master Latency Timer, Cache Line Size Register
15439  */
15440 union bdk_pciercx_clsize
15441 {
15442     uint32_t u;
15443     struct bdk_pciercx_clsize_s
15444     {
15445 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15446         uint32_t bist                  : 8;  /**< [ 31: 24](RO) The BIST register functions are not supported. All 8 bits of the BIST register
15447                                                                  are hardwired to zero. */
15448         uint32_t mfd                   : 1;  /**< [ 23: 23](RO) Multi function device. */
15449         uint32_t chf                   : 7;  /**< [ 22: 16](RO) Configuration header format. Hardwired to 0x1. */
15450         uint32_t lt                    : 8;  /**< [ 15:  8](RO) Master latency timer. Not applicable for PCI Express, hardwired to 0x0. */
15451         uint32_t cls                   : 8;  /**< [  7:  0](R/W) Cache line size. The cache line size register is R/W for legacy compatibility purposes and
15452                                                                  is not applicable to PCI Express device functionality. Writing to the cache line size
15453                                                                  register does not impact functionality of the PCI Express bus. */
15454 #else /* Word 0 - Little Endian */
15455         uint32_t cls                   : 8;  /**< [  7:  0](R/W) Cache line size. The cache line size register is R/W for legacy compatibility purposes and
15456                                                                  is not applicable to PCI Express device functionality. Writing to the cache line size
15457                                                                  register does not impact functionality of the PCI Express bus. */
15458         uint32_t lt                    : 8;  /**< [ 15:  8](RO) Master latency timer. Not applicable for PCI Express, hardwired to 0x0. */
15459         uint32_t chf                   : 7;  /**< [ 22: 16](RO) Configuration header format. Hardwired to 0x1. */
15460         uint32_t mfd                   : 1;  /**< [ 23: 23](RO) Multi function device. */
15461         uint32_t bist                  : 8;  /**< [ 31: 24](RO) The BIST register functions are not supported. All 8 bits of the BIST register
15462                                                                  are hardwired to zero. */
15463 #endif /* Word 0 - End */
15464     } s;
15465     /* struct bdk_pciercx_clsize_s cn; */
15466 };
15467 typedef union bdk_pciercx_clsize bdk_pciercx_clsize_t;
15468 
15469 static inline uint64_t BDK_PCIERCX_CLSIZE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CLSIZE(unsigned long a)15470 static inline uint64_t BDK_PCIERCX_CLSIZE(unsigned long a)
15471 {
15472     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
15473         return 0xcll + 0x100000000ll * ((a) & 0x3);
15474     __bdk_csr_fatal("PCIERCX_CLSIZE", 1, a, 0, 0, 0);
15475 }
15476 
15477 #define typedef_BDK_PCIERCX_CLSIZE(a) bdk_pciercx_clsize_t
15478 #define bustype_BDK_PCIERCX_CLSIZE(a) BDK_CSR_TYPE_PCICONFIGRC
15479 #define basename_BDK_PCIERCX_CLSIZE(a) "PCIERCX_CLSIZE"
15480 #define busnum_BDK_PCIERCX_CLSIZE(a) (a)
15481 #define arguments_BDK_PCIERCX_CLSIZE(a) (a),-1,-1,-1
15482 
15483 /**
15484  * Register (PCICONFIGRC) pcierc#_cmd
15485  *
15486  * PCIe RC Command/Status Register
15487  */
15488 union bdk_pciercx_cmd
15489 {
15490     uint32_t u;
15491     struct bdk_pciercx_cmd_s
15492     {
15493 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15494         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
15495         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
15496         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
15497         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
15498         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
15499         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to 0x0. */
15500         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error. */
15501         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to zero. */
15502         uint32_t reserved_22           : 1;
15503         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to zero. */
15504         uint32_t cl                    : 1;  /**< [ 20: 20](RO) Capabilities list. Indicates presence of an extended capability item. Hardwired to one. */
15505         uint32_t i_stat                : 1;  /**< [ 19: 19](RO) INTx status. */
15506         uint32_t reserved_11_18        : 8;
15507         uint32_t i_dis                 : 1;  /**< [ 10: 10](R/W) INTx assertion disable. */
15508         uint32_t fbbe                  : 1;  /**< [  9:  9](RO) Fast back-to-back transaction enable. Not applicable for PCI Express. Must be hardwired to zero. */
15509         uint32_t see                   : 1;  /**< [  8:  8](R/W) SERR# enable. */
15510         uint32_t ids_wcc               : 1;  /**< [  7:  7](RO) IDSEL stepping/wait cycle control. Not applicable for PCI Express. Must be hardwired to zero. */
15511         uint32_t per                   : 1;  /**< [  6:  6](R/W) Parity error response. */
15512         uint32_t vps                   : 1;  /**< [  5:  5](RO) VGA palette snoop. Not applicable for PCI Express. Must be hardwired to zero. */
15513         uint32_t mwice                 : 1;  /**< [  4:  4](RO) Memory write and invalidate. Not applicable for PCI Express. Must be hardwired to zero. */
15514         uint32_t scse                  : 1;  /**< [  3:  3](RO) Special cycle enable. Not applicable for PCI Express. Must be hardwired to zero. */
15515         uint32_t me                    : 1;  /**< [  2:  2](R/W) Bus master enable. */
15516         uint32_t msae                  : 1;  /**< [  1:  1](R/W) Memory space access enable. */
15517         uint32_t isae                  : 1;  /**< [  0:  0](R/W) I/O space access enable.
15518                                                                  There are no I/O BARs supported. */
15519 #else /* Word 0 - Little Endian */
15520         uint32_t isae                  : 1;  /**< [  0:  0](R/W) I/O space access enable.
15521                                                                  There are no I/O BARs supported. */
15522         uint32_t msae                  : 1;  /**< [  1:  1](R/W) Memory space access enable. */
15523         uint32_t me                    : 1;  /**< [  2:  2](R/W) Bus master enable. */
15524         uint32_t scse                  : 1;  /**< [  3:  3](RO) Special cycle enable. Not applicable for PCI Express. Must be hardwired to zero. */
15525         uint32_t mwice                 : 1;  /**< [  4:  4](RO) Memory write and invalidate. Not applicable for PCI Express. Must be hardwired to zero. */
15526         uint32_t vps                   : 1;  /**< [  5:  5](RO) VGA palette snoop. Not applicable for PCI Express. Must be hardwired to zero. */
15527         uint32_t per                   : 1;  /**< [  6:  6](R/W) Parity error response. */
15528         uint32_t ids_wcc               : 1;  /**< [  7:  7](RO) IDSEL stepping/wait cycle control. Not applicable for PCI Express. Must be hardwired to zero. */
15529         uint32_t see                   : 1;  /**< [  8:  8](R/W) SERR# enable. */
15530         uint32_t fbbe                  : 1;  /**< [  9:  9](RO) Fast back-to-back transaction enable. Not applicable for PCI Express. Must be hardwired to zero. */
15531         uint32_t i_dis                 : 1;  /**< [ 10: 10](R/W) INTx assertion disable. */
15532         uint32_t reserved_11_18        : 8;
15533         uint32_t i_stat                : 1;  /**< [ 19: 19](RO) INTx status. */
15534         uint32_t cl                    : 1;  /**< [ 20: 20](RO) Capabilities list. Indicates presence of an extended capability item. Hardwired to one. */
15535         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to zero. */
15536         uint32_t reserved_22           : 1;
15537         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to zero. */
15538         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error. */
15539         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to 0x0. */
15540         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
15541         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
15542         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
15543         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
15544         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
15545 #endif /* Word 0 - End */
15546     } s;
15547     /* struct bdk_pciercx_cmd_s cn; */
15548 };
15549 typedef union bdk_pciercx_cmd bdk_pciercx_cmd_t;
15550 
15551 static inline uint64_t BDK_PCIERCX_CMD(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_CMD(unsigned long a)15552 static inline uint64_t BDK_PCIERCX_CMD(unsigned long a)
15553 {
15554     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
15555         return 4ll + 0x100000000ll * ((a) & 0x3);
15556     __bdk_csr_fatal("PCIERCX_CMD", 1, a, 0, 0, 0);
15557 }
15558 
15559 #define typedef_BDK_PCIERCX_CMD(a) bdk_pciercx_cmd_t
15560 #define bustype_BDK_PCIERCX_CMD(a) BDK_CSR_TYPE_PCICONFIGRC
15561 #define basename_BDK_PCIERCX_CMD(a) "PCIERCX_CMD"
15562 #define busnum_BDK_PCIERCX_CMD(a) (a)
15563 #define arguments_BDK_PCIERCX_CMD(a) (a),-1,-1,-1
15564 
15565 /**
15566  * Register (PCICONFIGRC) pcierc#_cor_err_msk
15567  *
15568  * PCIe RC Correctable Error Mask Register
15569  */
15570 union bdk_pciercx_cor_err_msk
15571 {
15572     uint32_t u;
15573     struct bdk_pciercx_cor_err_msk_s
15574     {
15575 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15576         uint32_t reserved_16_31        : 16;
15577         uint32_t chlom                 : 1;  /**< [ 15: 15](R/W) Corrected header log overflow error mask. */
15578         uint32_t ciem                  : 1;  /**< [ 14: 14](R/W) Corrected internal error mask. */
15579         uint32_t anfem                 : 1;  /**< [ 13: 13](R/W) Advisory nonfatal error mask. */
15580         uint32_t rttm                  : 1;  /**< [ 12: 12](R/W) Replay timer timeout mask. */
15581         uint32_t reserved_9_11         : 3;
15582         uint32_t rnrm                  : 1;  /**< [  8:  8](R/W) REPLAY_NUM rollover mask. */
15583         uint32_t bdllpm                : 1;  /**< [  7:  7](R/W) Bad DLLP mask. */
15584         uint32_t btlpm                 : 1;  /**< [  6:  6](R/W) Bad TLP mask. */
15585         uint32_t reserved_1_5          : 5;
15586         uint32_t rem                   : 1;  /**< [  0:  0](R/W) Receiver error mask. */
15587 #else /* Word 0 - Little Endian */
15588         uint32_t rem                   : 1;  /**< [  0:  0](R/W) Receiver error mask. */
15589         uint32_t reserved_1_5          : 5;
15590         uint32_t btlpm                 : 1;  /**< [  6:  6](R/W) Bad TLP mask. */
15591         uint32_t bdllpm                : 1;  /**< [  7:  7](R/W) Bad DLLP mask. */
15592         uint32_t rnrm                  : 1;  /**< [  8:  8](R/W) REPLAY_NUM rollover mask. */
15593         uint32_t reserved_9_11         : 3;
15594         uint32_t rttm                  : 1;  /**< [ 12: 12](R/W) Replay timer timeout mask. */
15595         uint32_t anfem                 : 1;  /**< [ 13: 13](R/W) Advisory nonfatal error mask. */
15596         uint32_t ciem                  : 1;  /**< [ 14: 14](R/W) Corrected internal error mask. */
15597         uint32_t chlom                 : 1;  /**< [ 15: 15](R/W) Corrected header log overflow error mask. */
15598         uint32_t reserved_16_31        : 16;
15599 #endif /* Word 0 - End */
15600     } s;
15601     /* struct bdk_pciercx_cor_err_msk_s cn; */
15602 };
15603 typedef union bdk_pciercx_cor_err_msk bdk_pciercx_cor_err_msk_t;
15604 
15605 static inline uint64_t BDK_PCIERCX_COR_ERR_MSK(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_COR_ERR_MSK(unsigned long a)15606 static inline uint64_t BDK_PCIERCX_COR_ERR_MSK(unsigned long a)
15607 {
15608     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
15609         return 0x114ll + 0x100000000ll * ((a) & 0x3);
15610     __bdk_csr_fatal("PCIERCX_COR_ERR_MSK", 1, a, 0, 0, 0);
15611 }
15612 
15613 #define typedef_BDK_PCIERCX_COR_ERR_MSK(a) bdk_pciercx_cor_err_msk_t
15614 #define bustype_BDK_PCIERCX_COR_ERR_MSK(a) BDK_CSR_TYPE_PCICONFIGRC
15615 #define basename_BDK_PCIERCX_COR_ERR_MSK(a) "PCIERCX_COR_ERR_MSK"
15616 #define busnum_BDK_PCIERCX_COR_ERR_MSK(a) (a)
15617 #define arguments_BDK_PCIERCX_COR_ERR_MSK(a) (a),-1,-1,-1
15618 
15619 /**
15620  * Register (PCICONFIGRC) pcierc#_cor_err_stat
15621  *
15622  * PCIe RC Correctable Error Status Register
15623  */
15624 union bdk_pciercx_cor_err_stat
15625 {
15626     uint32_t u;
15627     struct bdk_pciercx_cor_err_stat_s
15628     {
15629 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15630         uint32_t reserved_16_31        : 16;
15631         uint32_t chlo                  : 1;  /**< [ 15: 15](R/W1C/H) Corrected header log overflow status. */
15632         uint32_t cies                  : 1;  /**< [ 14: 14](R/W1C/H) Corrected internal error status. */
15633         uint32_t anfes                 : 1;  /**< [ 13: 13](R/W1C/H) Advisory nonfatal error status. */
15634         uint32_t rtts                  : 1;  /**< [ 12: 12](R/W1C/H) Replay timer timeout status. */
15635         uint32_t reserved_9_11         : 3;
15636         uint32_t rnrs                  : 1;  /**< [  8:  8](R/W1C/H) REPLAY_NUM rollover status. */
15637         uint32_t bdllps                : 1;  /**< [  7:  7](R/W1C/H) Bad DLLP status. */
15638         uint32_t btlps                 : 1;  /**< [  6:  6](R/W1C/H) Bad TLP status. */
15639         uint32_t reserved_1_5          : 5;
15640         uint32_t res                   : 1;  /**< [  0:  0](R/W1C/H) Receiver error status. */
15641 #else /* Word 0 - Little Endian */
15642         uint32_t res                   : 1;  /**< [  0:  0](R/W1C/H) Receiver error status. */
15643         uint32_t reserved_1_5          : 5;
15644         uint32_t btlps                 : 1;  /**< [  6:  6](R/W1C/H) Bad TLP status. */
15645         uint32_t bdllps                : 1;  /**< [  7:  7](R/W1C/H) Bad DLLP status. */
15646         uint32_t rnrs                  : 1;  /**< [  8:  8](R/W1C/H) REPLAY_NUM rollover status. */
15647         uint32_t reserved_9_11         : 3;
15648         uint32_t rtts                  : 1;  /**< [ 12: 12](R/W1C/H) Replay timer timeout status. */
15649         uint32_t anfes                 : 1;  /**< [ 13: 13](R/W1C/H) Advisory nonfatal error status. */
15650         uint32_t cies                  : 1;  /**< [ 14: 14](R/W1C/H) Corrected internal error status. */
15651         uint32_t chlo                  : 1;  /**< [ 15: 15](R/W1C/H) Corrected header log overflow status. */
15652         uint32_t reserved_16_31        : 16;
15653 #endif /* Word 0 - End */
15654     } s;
15655     /* struct bdk_pciercx_cor_err_stat_s cn; */
15656 };
15657 typedef union bdk_pciercx_cor_err_stat bdk_pciercx_cor_err_stat_t;
15658 
15659 static inline uint64_t BDK_PCIERCX_COR_ERR_STAT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_COR_ERR_STAT(unsigned long a)15660 static inline uint64_t BDK_PCIERCX_COR_ERR_STAT(unsigned long a)
15661 {
15662     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
15663         return 0x110ll + 0x100000000ll * ((a) & 0x3);
15664     __bdk_csr_fatal("PCIERCX_COR_ERR_STAT", 1, a, 0, 0, 0);
15665 }
15666 
15667 #define typedef_BDK_PCIERCX_COR_ERR_STAT(a) bdk_pciercx_cor_err_stat_t
15668 #define bustype_BDK_PCIERCX_COR_ERR_STAT(a) BDK_CSR_TYPE_PCICONFIGRC
15669 #define basename_BDK_PCIERCX_COR_ERR_STAT(a) "PCIERCX_COR_ERR_STAT"
15670 #define busnum_BDK_PCIERCX_COR_ERR_STAT(a) (a)
15671 #define arguments_BDK_PCIERCX_COR_ERR_STAT(a) (a),-1,-1,-1
15672 
15673 /**
15674  * Register (PCICONFIGRC) pcierc#_dbg0
15675  *
15676  * PCIe RC Debug Register 0
15677  */
15678 union bdk_pciercx_dbg0
15679 {
15680     uint32_t u;
15681     struct bdk_pciercx_dbg0_s
15682     {
15683 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15684         uint32_t dbg_info_l32          : 32; /**< [ 31:  0](RO/H) Debug info lower 32 bits. */
15685 #else /* Word 0 - Little Endian */
15686         uint32_t dbg_info_l32          : 32; /**< [ 31:  0](RO/H) Debug info lower 32 bits. */
15687 #endif /* Word 0 - End */
15688     } s;
15689     /* struct bdk_pciercx_dbg0_s cn; */
15690 };
15691 typedef union bdk_pciercx_dbg0 bdk_pciercx_dbg0_t;
15692 
15693 static inline uint64_t BDK_PCIERCX_DBG0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_DBG0(unsigned long a)15694 static inline uint64_t BDK_PCIERCX_DBG0(unsigned long a)
15695 {
15696     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
15697         return 0x728ll + 0x100000000ll * ((a) & 0x3);
15698     __bdk_csr_fatal("PCIERCX_DBG0", 1, a, 0, 0, 0);
15699 }
15700 
15701 #define typedef_BDK_PCIERCX_DBG0(a) bdk_pciercx_dbg0_t
15702 #define bustype_BDK_PCIERCX_DBG0(a) BDK_CSR_TYPE_PCICONFIGRC
15703 #define basename_BDK_PCIERCX_DBG0(a) "PCIERCX_DBG0"
15704 #define busnum_BDK_PCIERCX_DBG0(a) (a)
15705 #define arguments_BDK_PCIERCX_DBG0(a) (a),-1,-1,-1
15706 
15707 /**
15708  * Register (PCICONFIGRC) pcierc#_dbg1
15709  *
15710  * PCIe RC Debug Register 1
15711  */
15712 union bdk_pciercx_dbg1
15713 {
15714     uint32_t u;
15715     struct bdk_pciercx_dbg1_s
15716     {
15717 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15718         uint32_t dbg_info_u32          : 32; /**< [ 31:  0](RO/H) Debug info upper 32 bits. */
15719 #else /* Word 0 - Little Endian */
15720         uint32_t dbg_info_u32          : 32; /**< [ 31:  0](RO/H) Debug info upper 32 bits. */
15721 #endif /* Word 0 - End */
15722     } s;
15723     /* struct bdk_pciercx_dbg1_s cn; */
15724 };
15725 typedef union bdk_pciercx_dbg1 bdk_pciercx_dbg1_t;
15726 
15727 static inline uint64_t BDK_PCIERCX_DBG1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_DBG1(unsigned long a)15728 static inline uint64_t BDK_PCIERCX_DBG1(unsigned long a)
15729 {
15730     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
15731         return 0x72cll + 0x100000000ll * ((a) & 0x3);
15732     __bdk_csr_fatal("PCIERCX_DBG1", 1, a, 0, 0, 0);
15733 }
15734 
15735 #define typedef_BDK_PCIERCX_DBG1(a) bdk_pciercx_dbg1_t
15736 #define bustype_BDK_PCIERCX_DBG1(a) BDK_CSR_TYPE_PCICONFIGRC
15737 #define basename_BDK_PCIERCX_DBG1(a) "PCIERCX_DBG1"
15738 #define busnum_BDK_PCIERCX_DBG1(a) (a)
15739 #define arguments_BDK_PCIERCX_DBG1(a) (a),-1,-1,-1
15740 
15741 /**
15742  * Register (PCICONFIGRC) pcierc#_dev_cap
15743  *
15744  * PCIe RC Device Capabilities Register
15745  */
15746 union bdk_pciercx_dev_cap
15747 {
15748     uint32_t u;
15749     struct bdk_pciercx_dev_cap_s
15750     {
15751 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15752         uint32_t reserved_29_31        : 3;
15753         uint32_t flr_cap               : 1;  /**< [ 28: 28](RO) Function level reset capability. This bit applies to endpoints only. */
15754         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
15755         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
15756         uint32_t reserved_16_17        : 2;
15757         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
15758                                                                  must not change this field. */
15759         uint32_t reserved_12_14        : 3;
15760         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
15761                                                                  endpoint devices. */
15762         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
15763                                                                  endpoint devices. */
15764         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
15765                                                                  PEM()_CFG_WR. However, the application must not change this field. */
15766         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
15767                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
15768                                                                  must not write any value other than 0x0 to this field. */
15769         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
15770                                                                  must not change this field. */
15771 #else /* Word 0 - Little Endian */
15772         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
15773                                                                  must not change this field. */
15774         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
15775                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
15776                                                                  must not write any value other than 0x0 to this field. */
15777         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
15778                                                                  PEM()_CFG_WR. However, the application must not change this field. */
15779         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
15780                                                                  endpoint devices. */
15781         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
15782                                                                  endpoint devices. */
15783         uint32_t reserved_12_14        : 3;
15784         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
15785                                                                  must not change this field. */
15786         uint32_t reserved_16_17        : 2;
15787         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
15788         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
15789         uint32_t flr_cap               : 1;  /**< [ 28: 28](RO) Function level reset capability. This bit applies to endpoints only. */
15790         uint32_t reserved_29_31        : 3;
15791 #endif /* Word 0 - End */
15792     } s;
15793     struct bdk_pciercx_dev_cap_cn
15794     {
15795 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15796         uint32_t reserved_29_31        : 3;
15797         uint32_t flr_cap               : 1;  /**< [ 28: 28](RO) Function level reset capability. This bit applies to endpoints only. */
15798         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
15799         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
15800         uint32_t reserved_16_17        : 2;
15801         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
15802                                                                  must not change this field. */
15803         uint32_t reserved_14           : 1;
15804         uint32_t reserved_13           : 1;
15805         uint32_t reserved_12           : 1;
15806         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
15807                                                                  endpoint devices. */
15808         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
15809                                                                  endpoint devices. */
15810         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
15811                                                                  PEM()_CFG_WR. However, the application must not change this field. */
15812         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
15813                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
15814                                                                  must not write any value other than 0x0 to this field. */
15815         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
15816                                                                  must not change this field. */
15817 #else /* Word 0 - Little Endian */
15818         uint32_t mpss                  : 3;  /**< [  2:  0](RO/WRSL) Max_Payload_Size supported, writable through PEM()_CFG_WR. However, the application
15819                                                                  must not change this field. */
15820         uint32_t pfs                   : 2;  /**< [  4:  3](RO/WRSL) Phantom function supported. This field is writable through
15821                                                                  PEM()_CFG_WR. However, phantom function is not supported. Therefore, the application
15822                                                                  must not write any value other than 0x0 to this field. */
15823         uint32_t etfs                  : 1;  /**< [  5:  5](RO/WRSL) Extended tag field supported. This bit is writable through
15824                                                                  PEM()_CFG_WR. However, the application must not change this field. */
15825         uint32_t el0al                 : 3;  /**< [  8:  6](RO) Endpoint L0s acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
15826                                                                  endpoint devices. */
15827         uint32_t el1al                 : 3;  /**< [ 11:  9](RO) Endpoint L1 acceptable latency, writable through PEM()_CFG_WR. Must be 0x0 for non-
15828                                                                  endpoint devices. */
15829         uint32_t reserved_12           : 1;
15830         uint32_t reserved_13           : 1;
15831         uint32_t reserved_14           : 1;
15832         uint32_t rber                  : 1;  /**< [ 15: 15](RO/WRSL) Role-based error reporting, writable through PEM()_CFG_WR. However, the application
15833                                                                  must not change this field. */
15834         uint32_t reserved_16_17        : 2;
15835         uint32_t csplv                 : 8;  /**< [ 25: 18](RO) Captured slot power limit value. Not applicable for RC port, upstream port only. */
15836         uint32_t cspls                 : 2;  /**< [ 27: 26](RO) Captured slot power limit scale. Not applicable for RC port, upstream port only */
15837         uint32_t flr_cap               : 1;  /**< [ 28: 28](RO) Function level reset capability. This bit applies to endpoints only. */
15838         uint32_t reserved_29_31        : 3;
15839 #endif /* Word 0 - End */
15840     } cn;
15841 };
15842 typedef union bdk_pciercx_dev_cap bdk_pciercx_dev_cap_t;
15843 
15844 static inline uint64_t BDK_PCIERCX_DEV_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_DEV_CAP(unsigned long a)15845 static inline uint64_t BDK_PCIERCX_DEV_CAP(unsigned long a)
15846 {
15847     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
15848         return 0x74ll + 0x100000000ll * ((a) & 0x3);
15849     __bdk_csr_fatal("PCIERCX_DEV_CAP", 1, a, 0, 0, 0);
15850 }
15851 
15852 #define typedef_BDK_PCIERCX_DEV_CAP(a) bdk_pciercx_dev_cap_t
15853 #define bustype_BDK_PCIERCX_DEV_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
15854 #define basename_BDK_PCIERCX_DEV_CAP(a) "PCIERCX_DEV_CAP"
15855 #define busnum_BDK_PCIERCX_DEV_CAP(a) (a)
15856 #define arguments_BDK_PCIERCX_DEV_CAP(a) (a),-1,-1,-1
15857 
15858 /**
15859  * Register (PCICONFIGRC) pcierc#_dev_cap2
15860  *
15861  * PCIe RC Device Capabilities 2 Register
15862  */
15863 union bdk_pciercx_dev_cap2
15864 {
15865     uint32_t u;
15866     struct bdk_pciercx_dev_cap2_s
15867     {
15868 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15869         uint32_t reserved_24_31        : 8;
15870         uint32_t meetp                 : 2;  /**< [ 23: 22](RO/WRSL) Max end-end TLP prefixes.
15871                                                                  0x1 = 1.
15872                                                                  0x2 = 2.
15873                                                                  0x3 = 3.
15874                                                                  0x0 = 4. */
15875         uint32_t eetps                 : 1;  /**< [ 21: 21](RO/WRSL) End-end TLP prefix supported. */
15876         uint32_t effs                  : 1;  /**< [ 20: 20](RO/WRSL) Extended fmt field supported. */
15877         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported. */
15878         uint32_t tag10b_req_supp       : 1;  /**< [ 17: 17](RO/H) 10-bit tag requestor supported.
15879 
15880                                                                  Reset values:
15881                                                                  _ UPEM:       0x1.
15882                                                                  _ BPEM:       0x0. */
15883         uint32_t tag10b_cpl_supp       : 1;  /**< [ 16: 16](RO) 10-bit tag completer supported. */
15884         uint32_t ln_sys_cls            : 2;  /**< [ 15: 14](RO) LN System CLS (not supported). */
15885         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported. */
15886         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported. */
15887         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
15888                                                                  permitted in the relaxed ordering model. */
15889         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported.
15890                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
15891                                                                  unsupported request. */
15892         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported.
15893                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
15894                                                                  unsupported request. */
15895         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported.
15896                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
15897                                                                  unsupported request. */
15898         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
15899         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
15900         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
15901         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
15902 #else /* Word 0 - Little Endian */
15903         uint32_t ctrs                  : 4;  /**< [  3:  0](RO/H) Completion timeout ranges supported. */
15904         uint32_t ctds                  : 1;  /**< [  4:  4](RO) Completion timeout disable supported. */
15905         uint32_t ari_fw                : 1;  /**< [  5:  5](RO) Alternate routing ID forwarding supported. */
15906         uint32_t atom_ops              : 1;  /**< [  6:  6](RO) AtomicOp routing supported. */
15907         uint32_t atom32s               : 1;  /**< [  7:  7](RO) 32-bit AtomicOp supported.
15908                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
15909                                                                  unsupported request. */
15910         uint32_t atom64s               : 1;  /**< [  8:  8](RO) 64-bit AtomicOp supported.
15911                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
15912                                                                  unsupported request. */
15913         uint32_t atom128s              : 1;  /**< [  9:  9](RO) 128-bit AtomicOp supported.
15914                                                                  Note that inbound AtomicOps targeting BAR0 are not supported and are dropped as an
15915                                                                  unsupported request. */
15916         uint32_t noroprpr              : 1;  /**< [ 10: 10](RO/H) No RO-enabled PR-PR passing. When set, the routing element never carries out the passing
15917                                                                  permitted in the relaxed ordering model. */
15918         uint32_t ltrs                  : 1;  /**< [ 11: 11](RO) Latency tolerance reporting (LTR) mechanism supported. */
15919         uint32_t tph                   : 2;  /**< [ 13: 12](RO) TPH completer supported. */
15920         uint32_t ln_sys_cls            : 2;  /**< [ 15: 14](RO) LN System CLS (not supported). */
15921         uint32_t tag10b_cpl_supp       : 1;  /**< [ 16: 16](RO) 10-bit tag completer supported. */
15922         uint32_t tag10b_req_supp       : 1;  /**< [ 17: 17](RO/H) 10-bit tag requestor supported.
15923 
15924                                                                  Reset values:
15925                                                                  _ UPEM:       0x1.
15926                                                                  _ BPEM:       0x0. */
15927         uint32_t obffs                 : 2;  /**< [ 19: 18](RO) Optimized buffer flush fill (OBFF) supported. */
15928         uint32_t effs                  : 1;  /**< [ 20: 20](RO/WRSL) Extended fmt field supported. */
15929         uint32_t eetps                 : 1;  /**< [ 21: 21](RO/WRSL) End-end TLP prefix supported. */
15930         uint32_t meetp                 : 2;  /**< [ 23: 22](RO/WRSL) Max end-end TLP prefixes.
15931                                                                  0x1 = 1.
15932                                                                  0x2 = 2.
15933                                                                  0x3 = 3.
15934                                                                  0x0 = 4. */
15935         uint32_t reserved_24_31        : 8;
15936 #endif /* Word 0 - End */
15937     } s;
15938     /* struct bdk_pciercx_dev_cap2_s cn; */
15939 };
15940 typedef union bdk_pciercx_dev_cap2 bdk_pciercx_dev_cap2_t;
15941 
15942 static inline uint64_t BDK_PCIERCX_DEV_CAP2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_DEV_CAP2(unsigned long a)15943 static inline uint64_t BDK_PCIERCX_DEV_CAP2(unsigned long a)
15944 {
15945     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
15946         return 0x94ll + 0x100000000ll * ((a) & 0x3);
15947     __bdk_csr_fatal("PCIERCX_DEV_CAP2", 1, a, 0, 0, 0);
15948 }
15949 
15950 #define typedef_BDK_PCIERCX_DEV_CAP2(a) bdk_pciercx_dev_cap2_t
15951 #define bustype_BDK_PCIERCX_DEV_CAP2(a) BDK_CSR_TYPE_PCICONFIGRC
15952 #define basename_BDK_PCIERCX_DEV_CAP2(a) "PCIERCX_DEV_CAP2"
15953 #define busnum_BDK_PCIERCX_DEV_CAP2(a) (a)
15954 #define arguments_BDK_PCIERCX_DEV_CAP2(a) (a),-1,-1,-1
15955 
15956 /**
15957  * Register (PCICONFIGRC) pcierc#_dev_ctl
15958  *
15959  * PCIe RC Device Control/Device Status Register
15960  */
15961 union bdk_pciercx_dev_ctl
15962 {
15963     uint32_t u;
15964     struct bdk_pciercx_dev_ctl_s
15965     {
15966 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
15967         uint32_t reserved_22_31        : 10;
15968         uint32_t tp                    : 1;  /**< [ 21: 21](RO) Transaction pending. Hardwired to zero. */
15969         uint32_t ap_d                  : 1;  /**< [ 20: 20](RO) AUX power detected. Set to one if AUX power detected. */
15970         uint32_t ur_d                  : 1;  /**< [ 19: 19](R/W1C/H) Unsupported request detected. Errors are logged in this register regardless of whether or
15971                                                                  not error reporting is enabled in the device control register. [UR_D] occurs when PEM receives
15972                                                                  something unsupported. Unsupported requests are nonfatal errors, so [UR_D] should cause
15973                                                                  [NFE_D]. Receiving a vendor-defined message should cause an unsupported request. */
15974         uint32_t fe_d                  : 1;  /**< [ 18: 18](R/W1C/H) Fatal error detected. Errors are logged in this register regardless of whether or not
15975                                                                  error reporting is enabled in the device control register. This field is set if we receive
15976                                                                  any of the errors in PCIERC_UCOR_ERR_MSK that has a severity set to fatal. Malformed
15977                                                                  TLPs generally fit into this category. */
15978         uint32_t nfe_d                 : 1;  /**< [ 17: 17](R/W1C/H) Nonfatal error detected. Errors are logged in this register regardless of whether or not
15979                                                                  error reporting is enabled in the device control register. This field is set if we receive
15980                                                                  any of the errors in PCIERC_UCOR_ERR_MSK that has a severity set to Nonfatal and does
15981                                                                  not meet advisory nonfatal criteria, which most poisoned TLPs should. */
15982         uint32_t ce_d                  : 1;  /**< [ 16: 16](R/W1C/H) Correctable error detected. Errors are logged in this register regardless of whether or
15983                                                                  not error reporting is enabled in the device control register. This field is set if we
15984                                                                  receive any of the errors in PCIERC_COR_ERR_STAT, for example, a replay timer timeout.
15985                                                                  Also, it can be set if we get any of the errors in PCIERC_UCOR_ERR_MSK that has a
15986                                                                  severity set to nonfatal and meets the advisory nonfatal criteria, which most ECRC errors should. */
15987         uint32_t reserved_15           : 1;
15988         uint32_t mrrs                  : 3;  /**< [ 14: 12](R/W) Max read request size.
15989                                                                  0x0 =128 bytes.
15990                                                                  0x1 = 256 bytes.
15991                                                                  0x2 = 512 bytes.
15992                                                                  0x3 = 1024 bytes.
15993                                                                  0x4 = 2048 bytes.
15994                                                                  0x5 = 4096 bytes. */
15995         uint32_t ns_en                 : 1;  /**< [ 11: 11](R/W) Enable no snoop. */
15996         uint32_t ap_en                 : 1;  /**< [ 10: 10](RO) AUX power PM enable (not supported). */
15997         uint32_t pf_en                 : 1;  /**< [  9:  9](R/W/H) Phantom function enable. This bit should never be set; CNXXXX requests never uses phantom
15998                                                                  functions. */
15999         uint32_t etf_en                : 1;  /**< [  8:  8](R/W) Extended tag field enable. Set this bit to enable extended tags. */
16000         uint32_t mps                   : 3;  /**< [  7:  5](R/W) Max payload size. Legal values:
16001                                                                  0x0 = 128 bytes.
16002                                                                  0x1 = 256 bytes.
16003                                                                  0x2 = 512 bytes.
16004                                                                  0x3 = 1024 bytes.
16005                                                                  Larger sizes are not supported by CNXXXX.
16006 
16007                                                                  DPI_SLI_PRT()_CFG[MPS] must be set to the same value as this field for proper
16008                                                                  functionality. */
16009         uint32_t ro_en                 : 1;  /**< [  4:  4](R/W) Enable relaxed ordering. */
16010         uint32_t ur_en                 : 1;  /**< [  3:  3](R/W) Unsupported request reporting enable. */
16011         uint32_t fe_en                 : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
16012         uint32_t nfe_en                : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
16013         uint32_t ce_en                 : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
16014 #else /* Word 0 - Little Endian */
16015         uint32_t ce_en                 : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
16016         uint32_t nfe_en                : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
16017         uint32_t fe_en                 : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
16018         uint32_t ur_en                 : 1;  /**< [  3:  3](R/W) Unsupported request reporting enable. */
16019         uint32_t ro_en                 : 1;  /**< [  4:  4](R/W) Enable relaxed ordering. */
16020         uint32_t mps                   : 3;  /**< [  7:  5](R/W) Max payload size. Legal values:
16021                                                                  0x0 = 128 bytes.
16022                                                                  0x1 = 256 bytes.
16023                                                                  0x2 = 512 bytes.
16024                                                                  0x3 = 1024 bytes.
16025                                                                  Larger sizes are not supported by CNXXXX.
16026 
16027                                                                  DPI_SLI_PRT()_CFG[MPS] must be set to the same value as this field for proper
16028                                                                  functionality. */
16029         uint32_t etf_en                : 1;  /**< [  8:  8](R/W) Extended tag field enable. Set this bit to enable extended tags. */
16030         uint32_t pf_en                 : 1;  /**< [  9:  9](R/W/H) Phantom function enable. This bit should never be set; CNXXXX requests never uses phantom
16031                                                                  functions. */
16032         uint32_t ap_en                 : 1;  /**< [ 10: 10](RO) AUX power PM enable (not supported). */
16033         uint32_t ns_en                 : 1;  /**< [ 11: 11](R/W) Enable no snoop. */
16034         uint32_t mrrs                  : 3;  /**< [ 14: 12](R/W) Max read request size.
16035                                                                  0x0 =128 bytes.
16036                                                                  0x1 = 256 bytes.
16037                                                                  0x2 = 512 bytes.
16038                                                                  0x3 = 1024 bytes.
16039                                                                  0x4 = 2048 bytes.
16040                                                                  0x5 = 4096 bytes. */
16041         uint32_t reserved_15           : 1;
16042         uint32_t ce_d                  : 1;  /**< [ 16: 16](R/W1C/H) Correctable error detected. Errors are logged in this register regardless of whether or
16043                                                                  not error reporting is enabled in the device control register. This field is set if we
16044                                                                  receive any of the errors in PCIERC_COR_ERR_STAT, for example, a replay timer timeout.
16045                                                                  Also, it can be set if we get any of the errors in PCIERC_UCOR_ERR_MSK that has a
16046                                                                  severity set to nonfatal and meets the advisory nonfatal criteria, which most ECRC errors should. */
16047         uint32_t nfe_d                 : 1;  /**< [ 17: 17](R/W1C/H) Nonfatal error detected. Errors are logged in this register regardless of whether or not
16048                                                                  error reporting is enabled in the device control register. This field is set if we receive
16049                                                                  any of the errors in PCIERC_UCOR_ERR_MSK that has a severity set to Nonfatal and does
16050                                                                  not meet advisory nonfatal criteria, which most poisoned TLPs should. */
16051         uint32_t fe_d                  : 1;  /**< [ 18: 18](R/W1C/H) Fatal error detected. Errors are logged in this register regardless of whether or not
16052                                                                  error reporting is enabled in the device control register. This field is set if we receive
16053                                                                  any of the errors in PCIERC_UCOR_ERR_MSK that has a severity set to fatal. Malformed
16054                                                                  TLPs generally fit into this category. */
16055         uint32_t ur_d                  : 1;  /**< [ 19: 19](R/W1C/H) Unsupported request detected. Errors are logged in this register regardless of whether or
16056                                                                  not error reporting is enabled in the device control register. [UR_D] occurs when PEM receives
16057                                                                  something unsupported. Unsupported requests are nonfatal errors, so [UR_D] should cause
16058                                                                  [NFE_D]. Receiving a vendor-defined message should cause an unsupported request. */
16059         uint32_t ap_d                  : 1;  /**< [ 20: 20](RO) AUX power detected. Set to one if AUX power detected. */
16060         uint32_t tp                    : 1;  /**< [ 21: 21](RO) Transaction pending. Hardwired to zero. */
16061         uint32_t reserved_22_31        : 10;
16062 #endif /* Word 0 - End */
16063     } s;
16064     /* struct bdk_pciercx_dev_ctl_s cn; */
16065 };
16066 typedef union bdk_pciercx_dev_ctl bdk_pciercx_dev_ctl_t;
16067 
16068 static inline uint64_t BDK_PCIERCX_DEV_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_DEV_CTL(unsigned long a)16069 static inline uint64_t BDK_PCIERCX_DEV_CTL(unsigned long a)
16070 {
16071     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16072         return 0x78ll + 0x100000000ll * ((a) & 0x3);
16073     __bdk_csr_fatal("PCIERCX_DEV_CTL", 1, a, 0, 0, 0);
16074 }
16075 
16076 #define typedef_BDK_PCIERCX_DEV_CTL(a) bdk_pciercx_dev_ctl_t
16077 #define bustype_BDK_PCIERCX_DEV_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
16078 #define basename_BDK_PCIERCX_DEV_CTL(a) "PCIERCX_DEV_CTL"
16079 #define busnum_BDK_PCIERCX_DEV_CTL(a) (a)
16080 #define arguments_BDK_PCIERCX_DEV_CTL(a) (a),-1,-1,-1
16081 
16082 /**
16083  * Register (PCICONFIGRC) pcierc#_dev_ctl2
16084  *
16085  * PCIe RC Device Control 2 Register/Device Status 2 Register
16086  */
16087 union bdk_pciercx_dev_ctl2
16088 {
16089     uint32_t u;
16090     struct bdk_pciercx_dev_ctl2_s
16091     {
16092 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16093         uint32_t reserved_16_31        : 16;
16094         uint32_t eetpb                 : 1;  /**< [ 15: 15](R/W) End-end TLP prefix blocking.
16095                                                                  Writeable when PCIERC_DEV_CAP2[EETPS] is set. */
16096         uint32_t obffe                 : 2;  /**< [ 14: 13](R/W) Optimized buffer flush fill (OBFF) enabled. */
16097         uint32_t tag10b_req_en         : 1;  /**< [ 12: 12](R/W/H) 10-bit tag requester enabled.
16098 
16099                                                                  For UPEM, this bit is R/W and can be set to enable 10-bit
16100                                                                  tag requester enable.
16101 
16102                                                                  For BPEM, this bit is RO and cannot be written. */
16103         uint32_t reserved_11           : 1;
16104         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
16105         uint32_t id0_cp                : 1;  /**< [  9:  9](R/W) ID based ordering completion enable (not supported). */
16106         uint32_t id0_rq                : 1;  /**< [  8:  8](R/W) ID based ordering request enable. */
16107         uint32_t atom_op_eb            : 1;  /**< [  7:  7](R/W) AtomicOp egress blocking. */
16108         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
16109         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
16110         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
16111         uint32_t ctv                   : 4;  /**< [  3:  0](R/W/H) Completion timeout value.
16112                                                                  0x0 = Default range: 16 ms to 55 ms.
16113                                                                  0x1 = 50 us to 100 us.
16114                                                                  0x2 = 1 ms to 10 ms.
16115                                                                  0x3 = 16 ms to 55 ms.
16116                                                                  0x6 = 65 ms to 210 ms.
16117                                                                  0x9 = 260 ms to 900 ms.
16118                                                                  0xA = 1 s to 3.5 s.
16119                                                                  0xD = 4 s to 13 s.
16120                                                                  0xE = 17 s to 64 s.
16121 
16122                                                                  Values not defined are reserved. */
16123 #else /* Word 0 - Little Endian */
16124         uint32_t ctv                   : 4;  /**< [  3:  0](R/W/H) Completion timeout value.
16125                                                                  0x0 = Default range: 16 ms to 55 ms.
16126                                                                  0x1 = 50 us to 100 us.
16127                                                                  0x2 = 1 ms to 10 ms.
16128                                                                  0x3 = 16 ms to 55 ms.
16129                                                                  0x6 = 65 ms to 210 ms.
16130                                                                  0x9 = 260 ms to 900 ms.
16131                                                                  0xA = 1 s to 3.5 s.
16132                                                                  0xD = 4 s to 13 s.
16133                                                                  0xE = 17 s to 64 s.
16134 
16135                                                                  Values not defined are reserved. */
16136         uint32_t ctd                   : 1;  /**< [  4:  4](R/W) Completion timeout disable. */
16137         uint32_t ari                   : 1;  /**< [  5:  5](R/W) Alternate routing ID forwarding supported. */
16138         uint32_t atom_op               : 1;  /**< [  6:  6](R/W) AtomicOp requester enable. */
16139         uint32_t atom_op_eb            : 1;  /**< [  7:  7](R/W) AtomicOp egress blocking. */
16140         uint32_t id0_rq                : 1;  /**< [  8:  8](R/W) ID based ordering request enable. */
16141         uint32_t id0_cp                : 1;  /**< [  9:  9](R/W) ID based ordering completion enable (not supported). */
16142         uint32_t ltre                  : 1;  /**< [ 10: 10](RO) Latency tolerance reporting (LTR) mechanism enable. (not supported). */
16143         uint32_t reserved_11           : 1;
16144         uint32_t tag10b_req_en         : 1;  /**< [ 12: 12](R/W/H) 10-bit tag requester enabled.
16145 
16146                                                                  For UPEM, this bit is R/W and can be set to enable 10-bit
16147                                                                  tag requester enable.
16148 
16149                                                                  For BPEM, this bit is RO and cannot be written. */
16150         uint32_t obffe                 : 2;  /**< [ 14: 13](R/W) Optimized buffer flush fill (OBFF) enabled. */
16151         uint32_t eetpb                 : 1;  /**< [ 15: 15](R/W) End-end TLP prefix blocking.
16152                                                                  Writeable when PCIERC_DEV_CAP2[EETPS] is set. */
16153         uint32_t reserved_16_31        : 16;
16154 #endif /* Word 0 - End */
16155     } s;
16156     /* struct bdk_pciercx_dev_ctl2_s cn; */
16157 };
16158 typedef union bdk_pciercx_dev_ctl2 bdk_pciercx_dev_ctl2_t;
16159 
16160 static inline uint64_t BDK_PCIERCX_DEV_CTL2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_DEV_CTL2(unsigned long a)16161 static inline uint64_t BDK_PCIERCX_DEV_CTL2(unsigned long a)
16162 {
16163     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16164         return 0x98ll + 0x100000000ll * ((a) & 0x3);
16165     __bdk_csr_fatal("PCIERCX_DEV_CTL2", 1, a, 0, 0, 0);
16166 }
16167 
16168 #define typedef_BDK_PCIERCX_DEV_CTL2(a) bdk_pciercx_dev_ctl2_t
16169 #define bustype_BDK_PCIERCX_DEV_CTL2(a) BDK_CSR_TYPE_PCICONFIGRC
16170 #define basename_BDK_PCIERCX_DEV_CTL2(a) "PCIERCX_DEV_CTL2"
16171 #define busnum_BDK_PCIERCX_DEV_CTL2(a) (a)
16172 #define arguments_BDK_PCIERCX_DEV_CTL2(a) (a),-1,-1,-1
16173 
16174 /**
16175  * Register (PCICONFIGRC) pcierc#_dl_feature_cap
16176  *
16177  * PCIe RC Data Link Feature Capabilities Register
16178  */
16179 union bdk_pciercx_dl_feature_cap
16180 {
16181     uint32_t u;
16182     struct bdk_pciercx_dl_feature_cap_s
16183     {
16184 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16185         uint32_t dl_fex_en             : 1;  /**< [ 31: 31](RO/WRSL) Data link feature exchange enable. */
16186         uint32_t reserved_23_30        : 8;
16187         uint32_t lfdlfs                : 22; /**< [ 22:  1](RO/WRSL) Local future data link feature supported. */
16188         uint32_t lsfcs                 : 1;  /**< [  0:  0](RO/WRSL) Local scaled flow control supported, */
16189 #else /* Word 0 - Little Endian */
16190         uint32_t lsfcs                 : 1;  /**< [  0:  0](RO/WRSL) Local scaled flow control supported, */
16191         uint32_t lfdlfs                : 22; /**< [ 22:  1](RO/WRSL) Local future data link feature supported. */
16192         uint32_t reserved_23_30        : 8;
16193         uint32_t dl_fex_en             : 1;  /**< [ 31: 31](RO/WRSL) Data link feature exchange enable. */
16194 #endif /* Word 0 - End */
16195     } s;
16196     /* struct bdk_pciercx_dl_feature_cap_s cn; */
16197 };
16198 typedef union bdk_pciercx_dl_feature_cap bdk_pciercx_dl_feature_cap_t;
16199 
16200 static inline uint64_t BDK_PCIERCX_DL_FEATURE_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_DL_FEATURE_CAP(unsigned long a)16201 static inline uint64_t BDK_PCIERCX_DL_FEATURE_CAP(unsigned long a)
16202 {
16203     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16204         return 0x454ll + 0x100000000ll * ((a) & 0x3);
16205     __bdk_csr_fatal("PCIERCX_DL_FEATURE_CAP", 1, a, 0, 0, 0);
16206 }
16207 
16208 #define typedef_BDK_PCIERCX_DL_FEATURE_CAP(a) bdk_pciercx_dl_feature_cap_t
16209 #define bustype_BDK_PCIERCX_DL_FEATURE_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
16210 #define basename_BDK_PCIERCX_DL_FEATURE_CAP(a) "PCIERCX_DL_FEATURE_CAP"
16211 #define busnum_BDK_PCIERCX_DL_FEATURE_CAP(a) (a)
16212 #define arguments_BDK_PCIERCX_DL_FEATURE_CAP(a) (a),-1,-1,-1
16213 
16214 /**
16215  * Register (PCICONFIGRC) pcierc#_dl_feature_ext_hdr
16216  *
16217  * PCIe RC Data Link Feature Extended Capability Header Register
16218  */
16219 union bdk_pciercx_dl_feature_ext_hdr
16220 {
16221     uint32_t u;
16222     struct bdk_pciercx_dl_feature_ext_hdr_s
16223     {
16224 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16225         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
16226                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
16227         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
16228                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
16229         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
16230                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
16231 #else /* Word 0 - Little Endian */
16232         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
16233                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
16234         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
16235                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
16236         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
16237                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
16238 #endif /* Word 0 - End */
16239     } s;
16240     /* struct bdk_pciercx_dl_feature_ext_hdr_s cn; */
16241 };
16242 typedef union bdk_pciercx_dl_feature_ext_hdr bdk_pciercx_dl_feature_ext_hdr_t;
16243 
16244 static inline uint64_t BDK_PCIERCX_DL_FEATURE_EXT_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_DL_FEATURE_EXT_HDR(unsigned long a)16245 static inline uint64_t BDK_PCIERCX_DL_FEATURE_EXT_HDR(unsigned long a)
16246 {
16247     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16248         return 0x450ll + 0x100000000ll * ((a) & 0x3);
16249     __bdk_csr_fatal("PCIERCX_DL_FEATURE_EXT_HDR", 1, a, 0, 0, 0);
16250 }
16251 
16252 #define typedef_BDK_PCIERCX_DL_FEATURE_EXT_HDR(a) bdk_pciercx_dl_feature_ext_hdr_t
16253 #define bustype_BDK_PCIERCX_DL_FEATURE_EXT_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
16254 #define basename_BDK_PCIERCX_DL_FEATURE_EXT_HDR(a) "PCIERCX_DL_FEATURE_EXT_HDR"
16255 #define busnum_BDK_PCIERCX_DL_FEATURE_EXT_HDR(a) (a)
16256 #define arguments_BDK_PCIERCX_DL_FEATURE_EXT_HDR(a) (a),-1,-1,-1
16257 
16258 /**
16259  * Register (PCICONFIGRC) pcierc#_dl_feature_status
16260  *
16261  * PCIe RC Data Link Feature Status Register
16262  */
16263 union bdk_pciercx_dl_feature_status
16264 {
16265     uint32_t u;
16266     struct bdk_pciercx_dl_feature_status_s
16267     {
16268 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16269         uint32_t dlfsv                 : 1;  /**< [ 31: 31](RO) Remote data link feature supported valid. */
16270         uint32_t reserved_23_30        : 8;
16271         uint32_t rdlfs                 : 23; /**< [ 22:  0](RO/H) Features Currently defined are: Bit 0 - Remote Scaled Flow Control Supported. */
16272 #else /* Word 0 - Little Endian */
16273         uint32_t rdlfs                 : 23; /**< [ 22:  0](RO/H) Features Currently defined are: Bit 0 - Remote Scaled Flow Control Supported. */
16274         uint32_t reserved_23_30        : 8;
16275         uint32_t dlfsv                 : 1;  /**< [ 31: 31](RO) Remote data link feature supported valid. */
16276 #endif /* Word 0 - End */
16277     } s;
16278     /* struct bdk_pciercx_dl_feature_status_s cn; */
16279 };
16280 typedef union bdk_pciercx_dl_feature_status bdk_pciercx_dl_feature_status_t;
16281 
16282 static inline uint64_t BDK_PCIERCX_DL_FEATURE_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_DL_FEATURE_STATUS(unsigned long a)16283 static inline uint64_t BDK_PCIERCX_DL_FEATURE_STATUS(unsigned long a)
16284 {
16285     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16286         return 0x458ll + 0x100000000ll * ((a) & 0x3);
16287     __bdk_csr_fatal("PCIERCX_DL_FEATURE_STATUS", 1, a, 0, 0, 0);
16288 }
16289 
16290 #define typedef_BDK_PCIERCX_DL_FEATURE_STATUS(a) bdk_pciercx_dl_feature_status_t
16291 #define bustype_BDK_PCIERCX_DL_FEATURE_STATUS(a) BDK_CSR_TYPE_PCICONFIGRC
16292 #define basename_BDK_PCIERCX_DL_FEATURE_STATUS(a) "PCIERCX_DL_FEATURE_STATUS"
16293 #define busnum_BDK_PCIERCX_DL_FEATURE_STATUS(a) (a)
16294 #define arguments_BDK_PCIERCX_DL_FEATURE_STATUS(a) (a),-1,-1,-1
16295 
16296 /**
16297  * Register (PCICONFIGRC) pcierc#_e_cap_list
16298  *
16299  * PCIe RC PCIe Capabilities/PCIe Capabilities List Register
16300  */
16301 union bdk_pciercx_e_cap_list
16302 {
16303     uint32_t u;
16304     struct bdk_pciercx_e_cap_list_s
16305     {
16306 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16307         uint32_t reserved_30_31        : 2;
16308         uint32_t imn                   : 5;  /**< [ 29: 25](RO/WRSL) Interrupt message number. Updated by hardware, writable through
16309                                                                  PEM()_CFG_WR. However, the application must not change this field. */
16310         uint32_t si                    : 1;  /**< [ 24: 24](RO/WRSL) Slot implemented. This bit is writable through PEM()_CFG_WR. */
16311         uint32_t dpt                   : 4;  /**< [ 23: 20](RO) Device port type. */
16312         uint32_t pciecv                : 4;  /**< [ 19: 16](RO) PCI Express capability version. */
16313         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Writable through PEM()_CFG_WR.
16314                                                                  However, the application must not change this field. */
16315         uint32_t pcieid                : 8;  /**< [  7:  0](RO) PCI Express capability ID. */
16316 #else /* Word 0 - Little Endian */
16317         uint32_t pcieid                : 8;  /**< [  7:  0](RO) PCI Express capability ID. */
16318         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Writable through PEM()_CFG_WR.
16319                                                                  However, the application must not change this field. */
16320         uint32_t pciecv                : 4;  /**< [ 19: 16](RO) PCI Express capability version. */
16321         uint32_t dpt                   : 4;  /**< [ 23: 20](RO) Device port type. */
16322         uint32_t si                    : 1;  /**< [ 24: 24](RO/WRSL) Slot implemented. This bit is writable through PEM()_CFG_WR. */
16323         uint32_t imn                   : 5;  /**< [ 29: 25](RO/WRSL) Interrupt message number. Updated by hardware, writable through
16324                                                                  PEM()_CFG_WR. However, the application must not change this field. */
16325         uint32_t reserved_30_31        : 2;
16326 #endif /* Word 0 - End */
16327     } s;
16328     /* struct bdk_pciercx_e_cap_list_s cn; */
16329 };
16330 typedef union bdk_pciercx_e_cap_list bdk_pciercx_e_cap_list_t;
16331 
16332 static inline uint64_t BDK_PCIERCX_E_CAP_LIST(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_E_CAP_LIST(unsigned long a)16333 static inline uint64_t BDK_PCIERCX_E_CAP_LIST(unsigned long a)
16334 {
16335     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16336         return 0x70ll + 0x100000000ll * ((a) & 0x3);
16337     __bdk_csr_fatal("PCIERCX_E_CAP_LIST", 1, a, 0, 0, 0);
16338 }
16339 
16340 #define typedef_BDK_PCIERCX_E_CAP_LIST(a) bdk_pciercx_e_cap_list_t
16341 #define bustype_BDK_PCIERCX_E_CAP_LIST(a) BDK_CSR_TYPE_PCICONFIGRC
16342 #define basename_BDK_PCIERCX_E_CAP_LIST(a) "PCIERCX_E_CAP_LIST"
16343 #define busnum_BDK_PCIERCX_E_CAP_LIST(a) (a)
16344 #define arguments_BDK_PCIERCX_E_CAP_LIST(a) (a),-1,-1,-1
16345 
16346 /**
16347  * Register (PCICONFIGRC) pcierc#_ea_cap_hdr
16348  *
16349  * PCIe RC Enhanced Allocation Capability ID Register
16350  */
16351 union bdk_pciercx_ea_cap_hdr
16352 {
16353     uint32_t u;
16354     struct bdk_pciercx_ea_cap_hdr_s
16355     {
16356 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16357         uint32_t ea_rsvd               : 10; /**< [ 31: 22](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16358                                                                  not change this field. */
16359         uint32_t num_entries           : 6;  /**< [ 21: 16](RO/WRSL) Number of entries following the first DW of the capability.
16360                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16361                                                                  field. */
16362         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer.
16363                                                                  Writable through PEM()_CFG_WR. However, the application must not change this
16364                                                                  field. */
16365         uint32_t eacid                 : 8;  /**< [  7:  0](RO/WRSL) Enhanced allocation capability ID.
16366                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16367                                                                  field. */
16368 #else /* Word 0 - Little Endian */
16369         uint32_t eacid                 : 8;  /**< [  7:  0](RO/WRSL) Enhanced allocation capability ID.
16370                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16371                                                                  field. */
16372         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer.
16373                                                                  Writable through PEM()_CFG_WR. However, the application must not change this
16374                                                                  field. */
16375         uint32_t num_entries           : 6;  /**< [ 21: 16](RO/WRSL) Number of entries following the first DW of the capability.
16376                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16377                                                                  field. */
16378         uint32_t ea_rsvd               : 10; /**< [ 31: 22](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16379                                                                  not change this field. */
16380 #endif /* Word 0 - End */
16381     } s;
16382     /* struct bdk_pciercx_ea_cap_hdr_s cn; */
16383 };
16384 typedef union bdk_pciercx_ea_cap_hdr bdk_pciercx_ea_cap_hdr_t;
16385 
16386 static inline uint64_t BDK_PCIERCX_EA_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EA_CAP_HDR(unsigned long a)16387 static inline uint64_t BDK_PCIERCX_EA_CAP_HDR(unsigned long a)
16388 {
16389     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16390         return 0x50ll + 0x100000000ll * ((a) & 0x3);
16391     __bdk_csr_fatal("PCIERCX_EA_CAP_HDR", 1, a, 0, 0, 0);
16392 }
16393 
16394 #define typedef_BDK_PCIERCX_EA_CAP_HDR(a) bdk_pciercx_ea_cap_hdr_t
16395 #define bustype_BDK_PCIERCX_EA_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
16396 #define basename_BDK_PCIERCX_EA_CAP_HDR(a) "PCIERCX_EA_CAP_HDR"
16397 #define busnum_BDK_PCIERCX_EA_CAP_HDR(a) (a)
16398 #define arguments_BDK_PCIERCX_EA_CAP_HDR(a) (a),-1,-1,-1
16399 
16400 /**
16401  * Register (PCICONFIGRC) pcierc#_ea_entry0
16402  *
16403  * PCIe RC Enhanced Allocation Capability Second DW Register
16404  */
16405 union bdk_pciercx_ea_entry0
16406 {
16407     uint32_t u;
16408     struct bdk_pciercx_ea_entry0_s
16409     {
16410 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16411         uint32_t ea_rsvd               : 16; /**< [ 31: 16](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16412                                                                  not change this field. */
16413         uint32_t fixed_subnum          : 8;  /**< [ 15:  8](RO/WRSL) Fixed subordinate bus number.
16414                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16415                                                                  field. */
16416         uint32_t fixed_secnum          : 8;  /**< [  7:  0](RO/WRSL) Fixed secondary bus number.
16417                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16418                                                                  field. */
16419 #else /* Word 0 - Little Endian */
16420         uint32_t fixed_secnum          : 8;  /**< [  7:  0](RO/WRSL) Fixed secondary bus number.
16421                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16422                                                                  field. */
16423         uint32_t fixed_subnum          : 8;  /**< [ 15:  8](RO/WRSL) Fixed subordinate bus number.
16424                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16425                                                                  field. */
16426         uint32_t ea_rsvd               : 16; /**< [ 31: 16](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16427                                                                  not change this field. */
16428 #endif /* Word 0 - End */
16429     } s;
16430     /* struct bdk_pciercx_ea_entry0_s cn; */
16431 };
16432 typedef union bdk_pciercx_ea_entry0 bdk_pciercx_ea_entry0_t;
16433 
16434 static inline uint64_t BDK_PCIERCX_EA_ENTRY0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EA_ENTRY0(unsigned long a)16435 static inline uint64_t BDK_PCIERCX_EA_ENTRY0(unsigned long a)
16436 {
16437     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16438         return 0x54ll + 0x100000000ll * ((a) & 0x3);
16439     __bdk_csr_fatal("PCIERCX_EA_ENTRY0", 1, a, 0, 0, 0);
16440 }
16441 
16442 #define typedef_BDK_PCIERCX_EA_ENTRY0(a) bdk_pciercx_ea_entry0_t
16443 #define bustype_BDK_PCIERCX_EA_ENTRY0(a) BDK_CSR_TYPE_PCICONFIGRC
16444 #define basename_BDK_PCIERCX_EA_ENTRY0(a) "PCIERCX_EA_ENTRY0"
16445 #define busnum_BDK_PCIERCX_EA_ENTRY0(a) (a)
16446 #define arguments_BDK_PCIERCX_EA_ENTRY0(a) (a),-1,-1,-1
16447 
16448 /**
16449  * Register (PCICONFIGRC) pcierc#_ea_entry1
16450  *
16451  * PCIe RC Enhanced Allocation Entry 0 First DW Register
16452  */
16453 union bdk_pciercx_ea_entry1
16454 {
16455     uint32_t u;
16456     struct bdk_pciercx_ea_entry1_s
16457     {
16458 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16459         uint32_t ena                   : 1;  /**< [ 31: 31](RO/WRSL) Enable for this entry.  This field is writable through PEM()_CFG_WR. However, the
16460                                                                  application must not change this field. */
16461         uint32_t wr                    : 1;  /**< [ 30: 30](RO/WRSL) Writable.  This field is writable through PEM()_CFG_WR. However, the application must
16462                                                                  not change this field. */
16463         uint32_t ea_rsvd_1             : 6;  /**< [ 29: 24](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16464                                                                  not change this field. */
16465         uint32_t sprop                 : 8;  /**< [ 23: 16](RO/WRSL) Secondary properties.
16466                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16467                                                                  field. */
16468         uint32_t pprop                 : 8;  /**< [ 15:  8](RO/WRSL) Primary properties.
16469                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16470                                                                  field. */
16471         uint32_t bei                   : 4;  /**< [  7:  4](RO/WRSL) Bar equivalent indicator.
16472                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16473                                                                  field. */
16474         uint32_t ea_rsvd_0             : 1;  /**< [  3:  3](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16475                                                                  not change this field. */
16476         uint32_t esize                 : 3;  /**< [  2:  0](RO/WRSL) Entry size - the number of DW following the initial DW in this entry.
16477                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16478                                                                  field. */
16479 #else /* Word 0 - Little Endian */
16480         uint32_t esize                 : 3;  /**< [  2:  0](RO/WRSL) Entry size - the number of DW following the initial DW in this entry.
16481                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16482                                                                  field. */
16483         uint32_t ea_rsvd_0             : 1;  /**< [  3:  3](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16484                                                                  not change this field. */
16485         uint32_t bei                   : 4;  /**< [  7:  4](RO/WRSL) Bar equivalent indicator.
16486                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16487                                                                  field. */
16488         uint32_t pprop                 : 8;  /**< [ 15:  8](RO/WRSL) Primary properties.
16489                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16490                                                                  field. */
16491         uint32_t sprop                 : 8;  /**< [ 23: 16](RO/WRSL) Secondary properties.
16492                                                                  This field is writable through PEM()_CFG_WR. However, the application must not change this
16493                                                                  field. */
16494         uint32_t ea_rsvd_1             : 6;  /**< [ 29: 24](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16495                                                                  not change this field. */
16496         uint32_t wr                    : 1;  /**< [ 30: 30](RO/WRSL) Writable.  This field is writable through PEM()_CFG_WR. However, the application must
16497                                                                  not change this field. */
16498         uint32_t ena                   : 1;  /**< [ 31: 31](RO/WRSL) Enable for this entry.  This field is writable through PEM()_CFG_WR. However, the
16499                                                                  application must not change this field. */
16500 #endif /* Word 0 - End */
16501     } s;
16502     /* struct bdk_pciercx_ea_entry1_s cn; */
16503 };
16504 typedef union bdk_pciercx_ea_entry1 bdk_pciercx_ea_entry1_t;
16505 
16506 static inline uint64_t BDK_PCIERCX_EA_ENTRY1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EA_ENTRY1(unsigned long a)16507 static inline uint64_t BDK_PCIERCX_EA_ENTRY1(unsigned long a)
16508 {
16509     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16510         return 0x58ll + 0x100000000ll * ((a) & 0x3);
16511     __bdk_csr_fatal("PCIERCX_EA_ENTRY1", 1, a, 0, 0, 0);
16512 }
16513 
16514 #define typedef_BDK_PCIERCX_EA_ENTRY1(a) bdk_pciercx_ea_entry1_t
16515 #define bustype_BDK_PCIERCX_EA_ENTRY1(a) BDK_CSR_TYPE_PCICONFIGRC
16516 #define basename_BDK_PCIERCX_EA_ENTRY1(a) "PCIERCX_EA_ENTRY1"
16517 #define busnum_BDK_PCIERCX_EA_ENTRY1(a) (a)
16518 #define arguments_BDK_PCIERCX_EA_ENTRY1(a) (a),-1,-1,-1
16519 
16520 /**
16521  * Register (PCICONFIGRC) pcierc#_ea_entry2
16522  *
16523  * PCIe RC Enhanced Allocation Entry 0 Lower Base Register
16524  */
16525 union bdk_pciercx_ea_entry2
16526 {
16527     uint32_t u;
16528     struct bdk_pciercx_ea_entry2_s
16529     {
16530 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16531         uint32_t lbase                 : 30; /**< [ 31:  2](RO/WRSL) Lower base. This field is writable through PEM()_CFG_WR. However, the
16532                                                                  application must not change this field. */
16533         uint32_t size                  : 1;  /**< [  1:  1](RO/WRSL) Size - 64-bit (1), 32-bit (0).  This field is writable through PEM()_CFG_WR. However, the
16534                                                                  application must not change this field. */
16535         uint32_t ea_rsvd               : 1;  /**< [  0:  0](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16536                                                                  not change this field. */
16537 #else /* Word 0 - Little Endian */
16538         uint32_t ea_rsvd               : 1;  /**< [  0:  0](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16539                                                                  not change this field. */
16540         uint32_t size                  : 1;  /**< [  1:  1](RO/WRSL) Size - 64-bit (1), 32-bit (0).  This field is writable through PEM()_CFG_WR. However, the
16541                                                                  application must not change this field. */
16542         uint32_t lbase                 : 30; /**< [ 31:  2](RO/WRSL) Lower base. This field is writable through PEM()_CFG_WR. However, the
16543                                                                  application must not change this field. */
16544 #endif /* Word 0 - End */
16545     } s;
16546     /* struct bdk_pciercx_ea_entry2_s cn; */
16547 };
16548 typedef union bdk_pciercx_ea_entry2 bdk_pciercx_ea_entry2_t;
16549 
16550 static inline uint64_t BDK_PCIERCX_EA_ENTRY2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EA_ENTRY2(unsigned long a)16551 static inline uint64_t BDK_PCIERCX_EA_ENTRY2(unsigned long a)
16552 {
16553     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16554         return 0x5cll + 0x100000000ll * ((a) & 0x3);
16555     __bdk_csr_fatal("PCIERCX_EA_ENTRY2", 1, a, 0, 0, 0);
16556 }
16557 
16558 #define typedef_BDK_PCIERCX_EA_ENTRY2(a) bdk_pciercx_ea_entry2_t
16559 #define bustype_BDK_PCIERCX_EA_ENTRY2(a) BDK_CSR_TYPE_PCICONFIGRC
16560 #define basename_BDK_PCIERCX_EA_ENTRY2(a) "PCIERCX_EA_ENTRY2"
16561 #define busnum_BDK_PCIERCX_EA_ENTRY2(a) (a)
16562 #define arguments_BDK_PCIERCX_EA_ENTRY2(a) (a),-1,-1,-1
16563 
16564 /**
16565  * Register (PCICONFIGRC) pcierc#_ea_entry3
16566  *
16567  * PCIe RC Enhanced Allocation Entry 0 Max Offset Register
16568  */
16569 union bdk_pciercx_ea_entry3
16570 {
16571     uint32_t u;
16572     struct bdk_pciercx_ea_entry3_s
16573     {
16574 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16575         uint32_t moffs                 : 30; /**< [ 31:  2](RO/WRSL) Lower base.  This field is writable through PEM()_CFG_WR. However, the application must
16576                                                                  not change this field.
16577 
16578                                                                  Internal:
16579                                                                  This is the offset to cover PEMRC BAR4 0xfffff & 0xffffc \>\>2 */
16580         uint32_t size                  : 1;  /**< [  1:  1](RO/WRSL) Size - 64-bit (1), 32-bit (0).  This field is writable through PEM()_CFG_WR. However, the
16581                                                                  application must not change this field. */
16582         uint32_t ea_rsvd               : 1;  /**< [  0:  0](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16583                                                                  not change this field. */
16584 #else /* Word 0 - Little Endian */
16585         uint32_t ea_rsvd               : 1;  /**< [  0:  0](RO/WRSL) Reserved.  This field is writable through PEM()_CFG_WR. However, the application must
16586                                                                  not change this field. */
16587         uint32_t size                  : 1;  /**< [  1:  1](RO/WRSL) Size - 64-bit (1), 32-bit (0).  This field is writable through PEM()_CFG_WR. However, the
16588                                                                  application must not change this field. */
16589         uint32_t moffs                 : 30; /**< [ 31:  2](RO/WRSL) Lower base.  This field is writable through PEM()_CFG_WR. However, the application must
16590                                                                  not change this field.
16591 
16592                                                                  Internal:
16593                                                                  This is the offset to cover PEMRC BAR4 0xfffff & 0xffffc \>\>2 */
16594 #endif /* Word 0 - End */
16595     } s;
16596     /* struct bdk_pciercx_ea_entry3_s cn; */
16597 };
16598 typedef union bdk_pciercx_ea_entry3 bdk_pciercx_ea_entry3_t;
16599 
16600 static inline uint64_t BDK_PCIERCX_EA_ENTRY3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EA_ENTRY3(unsigned long a)16601 static inline uint64_t BDK_PCIERCX_EA_ENTRY3(unsigned long a)
16602 {
16603     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16604         return 0x60ll + 0x100000000ll * ((a) & 0x3);
16605     __bdk_csr_fatal("PCIERCX_EA_ENTRY3", 1, a, 0, 0, 0);
16606 }
16607 
16608 #define typedef_BDK_PCIERCX_EA_ENTRY3(a) bdk_pciercx_ea_entry3_t
16609 #define bustype_BDK_PCIERCX_EA_ENTRY3(a) BDK_CSR_TYPE_PCICONFIGRC
16610 #define basename_BDK_PCIERCX_EA_ENTRY3(a) "PCIERCX_EA_ENTRY3"
16611 #define busnum_BDK_PCIERCX_EA_ENTRY3(a) (a)
16612 #define arguments_BDK_PCIERCX_EA_ENTRY3(a) (a),-1,-1,-1
16613 
16614 /**
16615  * Register (PCICONFIGRC) pcierc#_ea_entry4
16616  *
16617  * PCIe RC Enhanced Allocation Entry 0 Upper Base Register
16618  */
16619 union bdk_pciercx_ea_entry4
16620 {
16621     uint32_t u;
16622     struct bdk_pciercx_ea_entry4_s
16623     {
16624 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16625         uint32_t ubase                 : 32; /**< [ 31:  0](RO/WRSL) Upper base.  This field is writable through PEM()_CFG_WR. However, the application must
16626                                                                  not change this field.
16627 
16628                                                                  Internal:
16629                                                                  This is the upper 32 bits of PEM_BAR_E::PEM()_PF_BAR0 */
16630 #else /* Word 0 - Little Endian */
16631         uint32_t ubase                 : 32; /**< [ 31:  0](RO/WRSL) Upper base.  This field is writable through PEM()_CFG_WR. However, the application must
16632                                                                  not change this field.
16633 
16634                                                                  Internal:
16635                                                                  This is the upper 32 bits of PEM_BAR_E::PEM()_PF_BAR0 */
16636 #endif /* Word 0 - End */
16637     } s;
16638     /* struct bdk_pciercx_ea_entry4_s cn; */
16639 };
16640 typedef union bdk_pciercx_ea_entry4 bdk_pciercx_ea_entry4_t;
16641 
16642 static inline uint64_t BDK_PCIERCX_EA_ENTRY4(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EA_ENTRY4(unsigned long a)16643 static inline uint64_t BDK_PCIERCX_EA_ENTRY4(unsigned long a)
16644 {
16645     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16646         return 0x64ll + 0x100000000ll * ((a) & 0x3);
16647     __bdk_csr_fatal("PCIERCX_EA_ENTRY4", 1, a, 0, 0, 0);
16648 }
16649 
16650 #define typedef_BDK_PCIERCX_EA_ENTRY4(a) bdk_pciercx_ea_entry4_t
16651 #define bustype_BDK_PCIERCX_EA_ENTRY4(a) BDK_CSR_TYPE_PCICONFIGRC
16652 #define basename_BDK_PCIERCX_EA_ENTRY4(a) "PCIERCX_EA_ENTRY4"
16653 #define busnum_BDK_PCIERCX_EA_ENTRY4(a) (a)
16654 #define arguments_BDK_PCIERCX_EA_ENTRY4(a) (a),-1,-1,-1
16655 
16656 /**
16657  * Register (PCICONFIGRC) pcierc#_ebar
16658  *
16659  * PCIe RC Expansion ROM Base Address Register
16660  */
16661 union bdk_pciercx_ebar
16662 {
16663     uint32_t u;
16664     struct bdk_pciercx_ebar_s
16665     {
16666 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16667         uint32_t unused                : 32; /**< [ 31:  0](RO/WRSL) Reserved. */
16668 #else /* Word 0 - Little Endian */
16669         uint32_t unused                : 32; /**< [ 31:  0](RO/WRSL) Reserved. */
16670 #endif /* Word 0 - End */
16671     } s;
16672     /* struct bdk_pciercx_ebar_s cn; */
16673 };
16674 typedef union bdk_pciercx_ebar bdk_pciercx_ebar_t;
16675 
16676 static inline uint64_t BDK_PCIERCX_EBAR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EBAR(unsigned long a)16677 static inline uint64_t BDK_PCIERCX_EBAR(unsigned long a)
16678 {
16679     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16680         return 0x38ll + 0x100000000ll * ((a) & 0x3);
16681     __bdk_csr_fatal("PCIERCX_EBAR", 1, a, 0, 0, 0);
16682 }
16683 
16684 #define typedef_BDK_PCIERCX_EBAR(a) bdk_pciercx_ebar_t
16685 #define bustype_BDK_PCIERCX_EBAR(a) BDK_CSR_TYPE_PCICONFIGRC
16686 #define basename_BDK_PCIERCX_EBAR(a) "PCIERCX_EBAR"
16687 #define busnum_BDK_PCIERCX_EBAR(a) (a)
16688 #define arguments_BDK_PCIERCX_EBAR(a) (a),-1,-1,-1
16689 
16690 /**
16691  * Register (PCICONFIGRC) pcierc#_eq_ctl01
16692  *
16693  * PCIe RC Equalization Control Lane 0/1 Register
16694  */
16695 union bdk_pciercx_eq_ctl01
16696 {
16697     uint32_t u;
16698     struct bdk_pciercx_eq_ctl01_s
16699     {
16700 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16701         uint32_t reserved_31           : 1;
16702         uint32_t l1urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 1 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16703         uint32_t l1utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 1 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16704         uint32_t reserved_23           : 1;
16705         uint32_t l1drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 1 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16706         uint32_t l1dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 1 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16707         uint32_t reserved_15           : 1;
16708         uint32_t l0urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 0 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16709         uint32_t l0utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 0 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16710         uint32_t reserved_7            : 1;
16711         uint32_t l0drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 0 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16712         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 0 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16713 #else /* Word 0 - Little Endian */
16714         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 0 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16715         uint32_t l0drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 0 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16716         uint32_t reserved_7            : 1;
16717         uint32_t l0utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 0 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16718         uint32_t l0urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 0 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16719         uint32_t reserved_15           : 1;
16720         uint32_t l1dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 1 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16721         uint32_t l1drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 1 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16722         uint32_t reserved_23           : 1;
16723         uint32_t l1utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 1 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16724         uint32_t l1urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 1 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16725         uint32_t reserved_31           : 1;
16726 #endif /* Word 0 - End */
16727     } s;
16728     /* struct bdk_pciercx_eq_ctl01_s cn; */
16729 };
16730 typedef union bdk_pciercx_eq_ctl01 bdk_pciercx_eq_ctl01_t;
16731 
16732 static inline uint64_t BDK_PCIERCX_EQ_CTL01(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EQ_CTL01(unsigned long a)16733 static inline uint64_t BDK_PCIERCX_EQ_CTL01(unsigned long a)
16734 {
16735     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16736         return 0x184ll + 0x100000000ll * ((a) & 0x3);
16737     __bdk_csr_fatal("PCIERCX_EQ_CTL01", 1, a, 0, 0, 0);
16738 }
16739 
16740 #define typedef_BDK_PCIERCX_EQ_CTL01(a) bdk_pciercx_eq_ctl01_t
16741 #define bustype_BDK_PCIERCX_EQ_CTL01(a) BDK_CSR_TYPE_PCICONFIGRC
16742 #define basename_BDK_PCIERCX_EQ_CTL01(a) "PCIERCX_EQ_CTL01"
16743 #define busnum_BDK_PCIERCX_EQ_CTL01(a) (a)
16744 #define arguments_BDK_PCIERCX_EQ_CTL01(a) (a),-1,-1,-1
16745 
16746 /**
16747  * Register (PCICONFIGRC) pcierc#_eq_ctl1011
16748  *
16749  * PCIe RC Equalization Control Lane 10/11 Register
16750  */
16751 union bdk_pciercx_eq_ctl1011
16752 {
16753     uint32_t u;
16754     struct bdk_pciercx_eq_ctl1011_s
16755     {
16756 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16757         uint32_t reserved_31           : 1;
16758         uint32_t l11urph               : 3;  /**< [ 30: 28](RO/WRSL) Lane 11 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16759         uint32_t l11utp                : 4;  /**< [ 27: 24](RO/WRSL) Lane 11 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16760         uint32_t reserved_23           : 1;
16761         uint32_t l11drph               : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 11 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16762         uint32_t l11dtp                : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 11 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16763         uint32_t reserved_15           : 1;
16764         uint32_t l10urph               : 3;  /**< [ 14: 12](RO/WRSL) Lane 10 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16765         uint32_t l10utp                : 4;  /**< [ 11:  8](RO/WRSL) Lane 10 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16766         uint32_t reserved_7            : 1;
16767         uint32_t l10drph               : 3;  /**< [  6:  4](RO/WRSL/H) Lane 10 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16768         uint32_t l10dtp                : 4;  /**< [  3:  0](RO/WRSL/H) Lane 10 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16769 #else /* Word 0 - Little Endian */
16770         uint32_t l10dtp                : 4;  /**< [  3:  0](RO/WRSL/H) Lane 10 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16771         uint32_t l10drph               : 3;  /**< [  6:  4](RO/WRSL/H) Lane 10 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16772         uint32_t reserved_7            : 1;
16773         uint32_t l10utp                : 4;  /**< [ 11:  8](RO/WRSL) Lane 10 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16774         uint32_t l10urph               : 3;  /**< [ 14: 12](RO/WRSL) Lane 10 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16775         uint32_t reserved_15           : 1;
16776         uint32_t l11dtp                : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 11 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16777         uint32_t l11drph               : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 11 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16778         uint32_t reserved_23           : 1;
16779         uint32_t l11utp                : 4;  /**< [ 27: 24](RO/WRSL) Lane 11 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16780         uint32_t l11urph               : 3;  /**< [ 30: 28](RO/WRSL) Lane 11 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16781         uint32_t reserved_31           : 1;
16782 #endif /* Word 0 - End */
16783     } s;
16784     /* struct bdk_pciercx_eq_ctl1011_s cn; */
16785 };
16786 typedef union bdk_pciercx_eq_ctl1011 bdk_pciercx_eq_ctl1011_t;
16787 
16788 static inline uint64_t BDK_PCIERCX_EQ_CTL1011(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EQ_CTL1011(unsigned long a)16789 static inline uint64_t BDK_PCIERCX_EQ_CTL1011(unsigned long a)
16790 {
16791     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16792         return 0x198ll + 0x100000000ll * ((a) & 0x3);
16793     __bdk_csr_fatal("PCIERCX_EQ_CTL1011", 1, a, 0, 0, 0);
16794 }
16795 
16796 #define typedef_BDK_PCIERCX_EQ_CTL1011(a) bdk_pciercx_eq_ctl1011_t
16797 #define bustype_BDK_PCIERCX_EQ_CTL1011(a) BDK_CSR_TYPE_PCICONFIGRC
16798 #define basename_BDK_PCIERCX_EQ_CTL1011(a) "PCIERCX_EQ_CTL1011"
16799 #define busnum_BDK_PCIERCX_EQ_CTL1011(a) (a)
16800 #define arguments_BDK_PCIERCX_EQ_CTL1011(a) (a),-1,-1,-1
16801 
16802 /**
16803  * Register (PCICONFIGRC) pcierc#_eq_ctl1213
16804  *
16805  * PCIe RC Equalization Control Lane 12/13 Register
16806  */
16807 union bdk_pciercx_eq_ctl1213
16808 {
16809     uint32_t u;
16810     struct bdk_pciercx_eq_ctl1213_s
16811     {
16812 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16813         uint32_t reserved_31           : 1;
16814         uint32_t l13urph               : 3;  /**< [ 30: 28](RO/WRSL) Lane 13 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16815         uint32_t l13utp                : 4;  /**< [ 27: 24](RO/WRSL) Lane 13 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16816         uint32_t reserved_23           : 1;
16817         uint32_t l13drph               : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 13 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16818         uint32_t l13dtp                : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 13 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16819         uint32_t reserved_15           : 1;
16820         uint32_t l12urph               : 3;  /**< [ 14: 12](RO/WRSL) Lane 12 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16821         uint32_t l12utp                : 4;  /**< [ 11:  8](RO/WRSL) Lane 12 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16822         uint32_t reserved_7            : 1;
16823         uint32_t l12drph               : 3;  /**< [  6:  4](RO/WRSL/H) Lane 12 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16824         uint32_t l12dtp                : 4;  /**< [  3:  0](RO/WRSL/H) Lane 12 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16825 #else /* Word 0 - Little Endian */
16826         uint32_t l12dtp                : 4;  /**< [  3:  0](RO/WRSL/H) Lane 12 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16827         uint32_t l12drph               : 3;  /**< [  6:  4](RO/WRSL/H) Lane 12 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16828         uint32_t reserved_7            : 1;
16829         uint32_t l12utp                : 4;  /**< [ 11:  8](RO/WRSL) Lane 12 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16830         uint32_t l12urph               : 3;  /**< [ 14: 12](RO/WRSL) Lane 12 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16831         uint32_t reserved_15           : 1;
16832         uint32_t l13dtp                : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 13 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16833         uint32_t l13drph               : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 13 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16834         uint32_t reserved_23           : 1;
16835         uint32_t l13utp                : 4;  /**< [ 27: 24](RO/WRSL) Lane 13 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16836         uint32_t l13urph               : 3;  /**< [ 30: 28](RO/WRSL) Lane 13 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16837         uint32_t reserved_31           : 1;
16838 #endif /* Word 0 - End */
16839     } s;
16840     /* struct bdk_pciercx_eq_ctl1213_s cn; */
16841 };
16842 typedef union bdk_pciercx_eq_ctl1213 bdk_pciercx_eq_ctl1213_t;
16843 
16844 static inline uint64_t BDK_PCIERCX_EQ_CTL1213(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EQ_CTL1213(unsigned long a)16845 static inline uint64_t BDK_PCIERCX_EQ_CTL1213(unsigned long a)
16846 {
16847     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16848         return 0x19cll + 0x100000000ll * ((a) & 0x3);
16849     __bdk_csr_fatal("PCIERCX_EQ_CTL1213", 1, a, 0, 0, 0);
16850 }
16851 
16852 #define typedef_BDK_PCIERCX_EQ_CTL1213(a) bdk_pciercx_eq_ctl1213_t
16853 #define bustype_BDK_PCIERCX_EQ_CTL1213(a) BDK_CSR_TYPE_PCICONFIGRC
16854 #define basename_BDK_PCIERCX_EQ_CTL1213(a) "PCIERCX_EQ_CTL1213"
16855 #define busnum_BDK_PCIERCX_EQ_CTL1213(a) (a)
16856 #define arguments_BDK_PCIERCX_EQ_CTL1213(a) (a),-1,-1,-1
16857 
16858 /**
16859  * Register (PCICONFIGRC) pcierc#_eq_ctl1415
16860  *
16861  * PCIe RC Equalization Control Lane 14/15 Register
16862  */
16863 union bdk_pciercx_eq_ctl1415
16864 {
16865     uint32_t u;
16866     struct bdk_pciercx_eq_ctl1415_s
16867     {
16868 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16869         uint32_t reserved_31           : 1;
16870         uint32_t l15urph               : 3;  /**< [ 30: 28](RO/WRSL) Lane 15 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16871         uint32_t l15utp                : 4;  /**< [ 27: 24](RO/WRSL) Lane 15 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16872         uint32_t reserved_23           : 1;
16873         uint32_t l15drph               : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 15 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16874         uint32_t l15dtp                : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 15 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16875         uint32_t reserved_15           : 1;
16876         uint32_t l14urph               : 3;  /**< [ 14: 12](RO/WRSL) Lane 14 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16877         uint32_t l14utp                : 4;  /**< [ 11:  8](RO/WRSL) Lane 14 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16878         uint32_t reserved_7            : 1;
16879         uint32_t l14drph               : 3;  /**< [  6:  4](RO/WRSL/H) Lane 14 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16880         uint32_t l14dtp                : 4;  /**< [  3:  0](RO/WRSL/H) Lane 14 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16881 #else /* Word 0 - Little Endian */
16882         uint32_t l14dtp                : 4;  /**< [  3:  0](RO/WRSL/H) Lane 14 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16883         uint32_t l14drph               : 3;  /**< [  6:  4](RO/WRSL/H) Lane 14 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16884         uint32_t reserved_7            : 1;
16885         uint32_t l14utp                : 4;  /**< [ 11:  8](RO/WRSL) Lane 14 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16886         uint32_t l14urph               : 3;  /**< [ 14: 12](RO/WRSL) Lane 14 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16887         uint32_t reserved_15           : 1;
16888         uint32_t l15dtp                : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 15 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16889         uint32_t l15drph               : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 15 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16890         uint32_t reserved_23           : 1;
16891         uint32_t l15utp                : 4;  /**< [ 27: 24](RO/WRSL) Lane 15 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16892         uint32_t l15urph               : 3;  /**< [ 30: 28](RO/WRSL) Lane 15 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16893         uint32_t reserved_31           : 1;
16894 #endif /* Word 0 - End */
16895     } s;
16896     /* struct bdk_pciercx_eq_ctl1415_s cn; */
16897 };
16898 typedef union bdk_pciercx_eq_ctl1415 bdk_pciercx_eq_ctl1415_t;
16899 
16900 static inline uint64_t BDK_PCIERCX_EQ_CTL1415(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EQ_CTL1415(unsigned long a)16901 static inline uint64_t BDK_PCIERCX_EQ_CTL1415(unsigned long a)
16902 {
16903     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16904         return 0x1a0ll + 0x100000000ll * ((a) & 0x3);
16905     __bdk_csr_fatal("PCIERCX_EQ_CTL1415", 1, a, 0, 0, 0);
16906 }
16907 
16908 #define typedef_BDK_PCIERCX_EQ_CTL1415(a) bdk_pciercx_eq_ctl1415_t
16909 #define bustype_BDK_PCIERCX_EQ_CTL1415(a) BDK_CSR_TYPE_PCICONFIGRC
16910 #define basename_BDK_PCIERCX_EQ_CTL1415(a) "PCIERCX_EQ_CTL1415"
16911 #define busnum_BDK_PCIERCX_EQ_CTL1415(a) (a)
16912 #define arguments_BDK_PCIERCX_EQ_CTL1415(a) (a),-1,-1,-1
16913 
16914 /**
16915  * Register (PCICONFIGRC) pcierc#_eq_ctl23
16916  *
16917  * PCIe RC Equalization Control Lane 2/3 Register
16918  */
16919 union bdk_pciercx_eq_ctl23
16920 {
16921     uint32_t u;
16922     struct bdk_pciercx_eq_ctl23_s
16923     {
16924 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16925         uint32_t reserved_31           : 1;
16926         uint32_t l3urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 3 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16927         uint32_t l3utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 3 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16928         uint32_t reserved_23           : 1;
16929         uint32_t l3drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 3 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16930         uint32_t l3dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 3 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16931         uint32_t reserved_15           : 1;
16932         uint32_t l2urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 2 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16933         uint32_t l2utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 2 upstream component transmitter preset. Writable through PEM()_CFG_WR. How */
16934         uint32_t reserved_7            : 1;
16935         uint32_t l2drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 2 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16936         uint32_t l2dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 2 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16937 #else /* Word 0 - Little Endian */
16938         uint32_t l2dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 2 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16939         uint32_t l2drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 2 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16940         uint32_t reserved_7            : 1;
16941         uint32_t l2utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 2 upstream component transmitter preset. Writable through PEM()_CFG_WR. How */
16942         uint32_t l2urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 2 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16943         uint32_t reserved_15           : 1;
16944         uint32_t l3dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 3 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16945         uint32_t l3drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 3 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16946         uint32_t reserved_23           : 1;
16947         uint32_t l3utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 3 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16948         uint32_t l3urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 3 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16949         uint32_t reserved_31           : 1;
16950 #endif /* Word 0 - End */
16951     } s;
16952     /* struct bdk_pciercx_eq_ctl23_s cn; */
16953 };
16954 typedef union bdk_pciercx_eq_ctl23 bdk_pciercx_eq_ctl23_t;
16955 
16956 static inline uint64_t BDK_PCIERCX_EQ_CTL23(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EQ_CTL23(unsigned long a)16957 static inline uint64_t BDK_PCIERCX_EQ_CTL23(unsigned long a)
16958 {
16959     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
16960         return 0x188ll + 0x100000000ll * ((a) & 0x3);
16961     __bdk_csr_fatal("PCIERCX_EQ_CTL23", 1, a, 0, 0, 0);
16962 }
16963 
16964 #define typedef_BDK_PCIERCX_EQ_CTL23(a) bdk_pciercx_eq_ctl23_t
16965 #define bustype_BDK_PCIERCX_EQ_CTL23(a) BDK_CSR_TYPE_PCICONFIGRC
16966 #define basename_BDK_PCIERCX_EQ_CTL23(a) "PCIERCX_EQ_CTL23"
16967 #define busnum_BDK_PCIERCX_EQ_CTL23(a) (a)
16968 #define arguments_BDK_PCIERCX_EQ_CTL23(a) (a),-1,-1,-1
16969 
16970 /**
16971  * Register (PCICONFIGRC) pcierc#_eq_ctl45
16972  *
16973  * PCIe RC Equalization Control Lane 4/5 Register
16974  */
16975 union bdk_pciercx_eq_ctl45
16976 {
16977     uint32_t u;
16978     struct bdk_pciercx_eq_ctl45_s
16979     {
16980 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
16981         uint32_t reserved_31           : 1;
16982         uint32_t l5urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 5 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16983         uint32_t l5utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 5 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16984         uint32_t reserved_23           : 1;
16985         uint32_t l5drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 5 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16986         uint32_t l5dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 5 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16987         uint32_t reserved_15           : 1;
16988         uint32_t l4urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 4 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16989         uint32_t l4utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 4 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16990         uint32_t reserved_7            : 1;
16991         uint32_t l4drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 4 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16992         uint32_t l4dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 4 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16993 #else /* Word 0 - Little Endian */
16994         uint32_t l4dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 4 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
16995         uint32_t l4drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 4 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16996         uint32_t reserved_7            : 1;
16997         uint32_t l4utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 4 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
16998         uint32_t l4urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 4 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
16999         uint32_t reserved_15           : 1;
17000         uint32_t l5dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 5 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
17001         uint32_t l5drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 5 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17002         uint32_t reserved_23           : 1;
17003         uint32_t l5utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 5 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
17004         uint32_t l5urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 5 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17005         uint32_t reserved_31           : 1;
17006 #endif /* Word 0 - End */
17007     } s;
17008     /* struct bdk_pciercx_eq_ctl45_s cn; */
17009 };
17010 typedef union bdk_pciercx_eq_ctl45 bdk_pciercx_eq_ctl45_t;
17011 
17012 static inline uint64_t BDK_PCIERCX_EQ_CTL45(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EQ_CTL45(unsigned long a)17013 static inline uint64_t BDK_PCIERCX_EQ_CTL45(unsigned long a)
17014 {
17015     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17016         return 0x18cll + 0x100000000ll * ((a) & 0x3);
17017     __bdk_csr_fatal("PCIERCX_EQ_CTL45", 1, a, 0, 0, 0);
17018 }
17019 
17020 #define typedef_BDK_PCIERCX_EQ_CTL45(a) bdk_pciercx_eq_ctl45_t
17021 #define bustype_BDK_PCIERCX_EQ_CTL45(a) BDK_CSR_TYPE_PCICONFIGRC
17022 #define basename_BDK_PCIERCX_EQ_CTL45(a) "PCIERCX_EQ_CTL45"
17023 #define busnum_BDK_PCIERCX_EQ_CTL45(a) (a)
17024 #define arguments_BDK_PCIERCX_EQ_CTL45(a) (a),-1,-1,-1
17025 
17026 /**
17027  * Register (PCICONFIGRC) pcierc#_eq_ctl67
17028  *
17029  * PCIe RC Equalization Control Lane 6/7 Register
17030  */
17031 union bdk_pciercx_eq_ctl67
17032 {
17033     uint32_t u;
17034     struct bdk_pciercx_eq_ctl67_s
17035     {
17036 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17037         uint32_t reserved_31           : 1;
17038         uint32_t l7urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 7 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17039         uint32_t l7utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 7 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
17040         uint32_t reserved_23           : 1;
17041         uint32_t l7drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 7 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17042         uint32_t l7dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 7 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
17043         uint32_t reserved_15           : 1;
17044         uint32_t l6urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 6 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17045         uint32_t l6utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 6 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
17046         uint32_t reserved_7            : 1;
17047         uint32_t l6drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 6 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17048         uint32_t l6dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 6 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
17049 #else /* Word 0 - Little Endian */
17050         uint32_t l6dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 6 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
17051         uint32_t l6drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 6 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17052         uint32_t reserved_7            : 1;
17053         uint32_t l6utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 6 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
17054         uint32_t l6urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 6 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17055         uint32_t reserved_15           : 1;
17056         uint32_t l7dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 7 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
17057         uint32_t l7drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 7 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17058         uint32_t reserved_23           : 1;
17059         uint32_t l7utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 7 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
17060         uint32_t l7urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 7 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17061         uint32_t reserved_31           : 1;
17062 #endif /* Word 0 - End */
17063     } s;
17064     /* struct bdk_pciercx_eq_ctl67_s cn; */
17065 };
17066 typedef union bdk_pciercx_eq_ctl67 bdk_pciercx_eq_ctl67_t;
17067 
17068 static inline uint64_t BDK_PCIERCX_EQ_CTL67(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EQ_CTL67(unsigned long a)17069 static inline uint64_t BDK_PCIERCX_EQ_CTL67(unsigned long a)
17070 {
17071     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17072         return 0x190ll + 0x100000000ll * ((a) & 0x3);
17073     __bdk_csr_fatal("PCIERCX_EQ_CTL67", 1, a, 0, 0, 0);
17074 }
17075 
17076 #define typedef_BDK_PCIERCX_EQ_CTL67(a) bdk_pciercx_eq_ctl67_t
17077 #define bustype_BDK_PCIERCX_EQ_CTL67(a) BDK_CSR_TYPE_PCICONFIGRC
17078 #define basename_BDK_PCIERCX_EQ_CTL67(a) "PCIERCX_EQ_CTL67"
17079 #define busnum_BDK_PCIERCX_EQ_CTL67(a) (a)
17080 #define arguments_BDK_PCIERCX_EQ_CTL67(a) (a),-1,-1,-1
17081 
17082 /**
17083  * Register (PCICONFIGRC) pcierc#_eq_ctl89
17084  *
17085  * PCIe RC Equalization Control Lane 8/9 Register
17086  */
17087 union bdk_pciercx_eq_ctl89
17088 {
17089     uint32_t u;
17090     struct bdk_pciercx_eq_ctl89_s
17091     {
17092 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17093         uint32_t reserved_31           : 1;
17094         uint32_t l9urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 9 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17095         uint32_t l9utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 9 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
17096         uint32_t reserved_23           : 1;
17097         uint32_t l9drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 9 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17098         uint32_t l9dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 9 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
17099         uint32_t reserved_15           : 1;
17100         uint32_t l8urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 8 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17101         uint32_t l8utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 8 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
17102         uint32_t reserved_7            : 1;
17103         uint32_t l8drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 8 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17104         uint32_t l8dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 8 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
17105 #else /* Word 0 - Little Endian */
17106         uint32_t l8dtp                 : 4;  /**< [  3:  0](RO/WRSL/H) Lane 8 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
17107         uint32_t l8drph                : 3;  /**< [  6:  4](RO/WRSL/H) Lane 8 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17108         uint32_t reserved_7            : 1;
17109         uint32_t l8utp                 : 4;  /**< [ 11:  8](RO/WRSL) Lane 8 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
17110         uint32_t l8urph                : 3;  /**< [ 14: 12](RO/WRSL) Lane 8 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17111         uint32_t reserved_15           : 1;
17112         uint32_t l9dtp                 : 4;  /**< [ 19: 16](RO/WRSL/H) Lane 9 downstream component transmitter preset. Writable through PEM()_CFG_WR. */
17113         uint32_t l9drph                : 3;  /**< [ 22: 20](RO/WRSL/H) Lane 9 downstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17114         uint32_t reserved_23           : 1;
17115         uint32_t l9utp                 : 4;  /**< [ 27: 24](RO/WRSL) Lane 9 upstream component transmitter preset. Writable through PEM()_CFG_WR. */
17116         uint32_t l9urph                : 3;  /**< [ 30: 28](RO/WRSL) Lane 9 upstream component receiver preset hint. Writable through PEM()_CFG_WR. */
17117         uint32_t reserved_31           : 1;
17118 #endif /* Word 0 - End */
17119     } s;
17120     /* struct bdk_pciercx_eq_ctl89_s cn; */
17121 };
17122 typedef union bdk_pciercx_eq_ctl89 bdk_pciercx_eq_ctl89_t;
17123 
17124 static inline uint64_t BDK_PCIERCX_EQ_CTL89(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EQ_CTL89(unsigned long a)17125 static inline uint64_t BDK_PCIERCX_EQ_CTL89(unsigned long a)
17126 {
17127     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17128         return 0x194ll + 0x100000000ll * ((a) & 0x3);
17129     __bdk_csr_fatal("PCIERCX_EQ_CTL89", 1, a, 0, 0, 0);
17130 }
17131 
17132 #define typedef_BDK_PCIERCX_EQ_CTL89(a) bdk_pciercx_eq_ctl89_t
17133 #define bustype_BDK_PCIERCX_EQ_CTL89(a) BDK_CSR_TYPE_PCICONFIGRC
17134 #define basename_BDK_PCIERCX_EQ_CTL89(a) "PCIERCX_EQ_CTL89"
17135 #define busnum_BDK_PCIERCX_EQ_CTL89(a) (a)
17136 #define arguments_BDK_PCIERCX_EQ_CTL89(a) (a),-1,-1,-1
17137 
17138 /**
17139  * Register (PCICONFIGRC) pcierc#_err_source
17140  *
17141  * PCIe RC Error Source Identification Register
17142  */
17143 union bdk_pciercx_err_source
17144 {
17145     uint32_t u;
17146     struct bdk_pciercx_err_source_s
17147     {
17148 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17149         uint32_t efnfsi                : 16; /**< [ 31: 16](RO/H) ERR_FATAL/NONFATAL source identification. */
17150         uint32_t ecsi                  : 16; /**< [ 15:  0](RO/H) ERR_COR source identification. */
17151 #else /* Word 0 - Little Endian */
17152         uint32_t ecsi                  : 16; /**< [ 15:  0](RO/H) ERR_COR source identification. */
17153         uint32_t efnfsi                : 16; /**< [ 31: 16](RO/H) ERR_FATAL/NONFATAL source identification. */
17154 #endif /* Word 0 - End */
17155     } s;
17156     /* struct bdk_pciercx_err_source_s cn; */
17157 };
17158 typedef union bdk_pciercx_err_source bdk_pciercx_err_source_t;
17159 
17160 static inline uint64_t BDK_PCIERCX_ERR_SOURCE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ERR_SOURCE(unsigned long a)17161 static inline uint64_t BDK_PCIERCX_ERR_SOURCE(unsigned long a)
17162 {
17163     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17164         return 0x134ll + 0x100000000ll * ((a) & 0x3);
17165     __bdk_csr_fatal("PCIERCX_ERR_SOURCE", 1, a, 0, 0, 0);
17166 }
17167 
17168 #define typedef_BDK_PCIERCX_ERR_SOURCE(a) bdk_pciercx_err_source_t
17169 #define bustype_BDK_PCIERCX_ERR_SOURCE(a) BDK_CSR_TYPE_PCICONFIGRC
17170 #define basename_BDK_PCIERCX_ERR_SOURCE(a) "PCIERCX_ERR_SOURCE"
17171 #define busnum_BDK_PCIERCX_ERR_SOURCE(a) (a)
17172 #define arguments_BDK_PCIERCX_ERR_SOURCE(a) (a),-1,-1,-1
17173 
17174 /**
17175  * Register (PCICONFIGRC) pcierc#_ext_cap
17176  *
17177  * PCIe RC PCI Express Extended Capability Header Register
17178  */
17179 union bdk_pciercx_ext_cap
17180 {
17181     uint32_t u;
17182     struct bdk_pciercx_ext_cap_s
17183     {
17184 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17185         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
17186                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
17187         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
17188                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
17189         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
17190                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
17191 #else /* Word 0 - Little Endian */
17192         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
17193                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
17194         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
17195                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
17196         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
17197                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
17198 #endif /* Word 0 - End */
17199     } s;
17200     /* struct bdk_pciercx_ext_cap_s cn; */
17201 };
17202 typedef union bdk_pciercx_ext_cap bdk_pciercx_ext_cap_t;
17203 
17204 static inline uint64_t BDK_PCIERCX_EXT_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_EXT_CAP(unsigned long a)17205 static inline uint64_t BDK_PCIERCX_EXT_CAP(unsigned long a)
17206 {
17207     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17208         return 0x100ll + 0x100000000ll * ((a) & 0x3);
17209     __bdk_csr_fatal("PCIERCX_EXT_CAP", 1, a, 0, 0, 0);
17210 }
17211 
17212 #define typedef_BDK_PCIERCX_EXT_CAP(a) bdk_pciercx_ext_cap_t
17213 #define bustype_BDK_PCIERCX_EXT_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
17214 #define basename_BDK_PCIERCX_EXT_CAP(a) "PCIERCX_EXT_CAP"
17215 #define busnum_BDK_PCIERCX_EXT_CAP(a) (a)
17216 #define arguments_BDK_PCIERCX_EXT_CAP(a) (a),-1,-1,-1
17217 
17218 /**
17219  * Register (PCICONFIGRC) pcierc#_filt_msk2
17220  *
17221  * PCIe RC Filter Mask Register 2
17222  */
17223 union bdk_pciercx_filt_msk2
17224 {
17225     uint32_t u;
17226     struct bdk_pciercx_filt_msk2_s
17227     {
17228 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17229         uint32_t reserved_8_31         : 24;
17230         uint32_t m_prs                 : 1;  /**< [  7:  7](R/W) Mask PRS messages dropped silently. */
17231         uint32_t m_unmask_td           : 1;  /**< [  6:  6](R/W) Disable unmask TD bit. */
17232         uint32_t m_unmask_ur_pois      : 1;  /**< [  5:  5](R/W) Disable unmask UR Poison with TRGT0 destination. */
17233         uint32_t m_ln_vend1_drop       : 1;  /**< [  4:  4](R/W) Mask LN messages dropped silently. */
17234         uint32_t m_handle_flush        : 1;  /**< [  3:  3](R/W) Mask core filter to handle flush request. */
17235         uint32_t m_dabort_4ucpl        : 1;  /**< [  2:  2](R/W) Mask DLLP abort for unexpected CPL. */
17236         uint32_t m_vend1_drp           : 1;  /**< [  1:  1](R/W) Mask vendor MSG type 1 dropped silently. */
17237         uint32_t m_vend0_drp           : 1;  /**< [  0:  0](R/W) Mask vendor MSG type 0 dropped with UR error reporting. */
17238 #else /* Word 0 - Little Endian */
17239         uint32_t m_vend0_drp           : 1;  /**< [  0:  0](R/W) Mask vendor MSG type 0 dropped with UR error reporting. */
17240         uint32_t m_vend1_drp           : 1;  /**< [  1:  1](R/W) Mask vendor MSG type 1 dropped silently. */
17241         uint32_t m_dabort_4ucpl        : 1;  /**< [  2:  2](R/W) Mask DLLP abort for unexpected CPL. */
17242         uint32_t m_handle_flush        : 1;  /**< [  3:  3](R/W) Mask core filter to handle flush request. */
17243         uint32_t m_ln_vend1_drop       : 1;  /**< [  4:  4](R/W) Mask LN messages dropped silently. */
17244         uint32_t m_unmask_ur_pois      : 1;  /**< [  5:  5](R/W) Disable unmask UR Poison with TRGT0 destination. */
17245         uint32_t m_unmask_td           : 1;  /**< [  6:  6](R/W) Disable unmask TD bit. */
17246         uint32_t m_prs                 : 1;  /**< [  7:  7](R/W) Mask PRS messages dropped silently. */
17247         uint32_t reserved_8_31         : 24;
17248 #endif /* Word 0 - End */
17249     } s;
17250     /* struct bdk_pciercx_filt_msk2_s cn; */
17251 };
17252 typedef union bdk_pciercx_filt_msk2 bdk_pciercx_filt_msk2_t;
17253 
17254 static inline uint64_t BDK_PCIERCX_FILT_MSK2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_FILT_MSK2(unsigned long a)17255 static inline uint64_t BDK_PCIERCX_FILT_MSK2(unsigned long a)
17256 {
17257     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17258         return 0x720ll + 0x100000000ll * ((a) & 0x3);
17259     __bdk_csr_fatal("PCIERCX_FILT_MSK2", 1, a, 0, 0, 0);
17260 }
17261 
17262 #define typedef_BDK_PCIERCX_FILT_MSK2(a) bdk_pciercx_filt_msk2_t
17263 #define bustype_BDK_PCIERCX_FILT_MSK2(a) BDK_CSR_TYPE_PCICONFIGRC
17264 #define basename_BDK_PCIERCX_FILT_MSK2(a) "PCIERCX_FILT_MSK2"
17265 #define busnum_BDK_PCIERCX_FILT_MSK2(a) (a)
17266 #define arguments_BDK_PCIERCX_FILT_MSK2(a) (a),-1,-1,-1
17267 
17268 /**
17269  * Register (PCICONFIGRC) pcierc#_gen2_port
17270  *
17271  * PCIe RC Gen2 Port Logic Register
17272  */
17273 union bdk_pciercx_gen2_port
17274 {
17275     uint32_t u;
17276     struct bdk_pciercx_gen2_port_s
17277     {
17278 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17279         uint32_t reserved_22_31        : 10;
17280         uint32_t gen1_ei_inf           : 1;  /**< [ 21: 21](R/W) Electrical idle inference mode at Gen1 Rate. Programmable mode to determine
17281                                                                  inferred electrical idle (EI) in Recovery.Speed or Loopback.Active (as slave)
17282                                                                  state at Gen1 speed by looking for a one value on RxElecIdle instead of looking
17283                                                                  for a zero on RxValid. If the PHY fails to deassert the RxValid signal in
17284                                                                  Recovery.Speed or Loopback.Active (because of corrupted EIOS for example),
17285                                                                  then EI cannot be inferred successfully in the controller by just detecting the
17286                                                                  condition RxValid=0.
17287                                                                    0 = Use RxElecIdle signal to infer electrical idle.
17288                                                                    1 = Use RxValid signal to infer electrical idle. */
17289         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) Set the deemphasis level for upstream ports.
17290                                                                  0 = -6 dB.
17291                                                                  1 = -3.5 dB. */
17292         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to one, signals LTSSM to transmit TS ordered sets
17293                                                                  with the compliance receive bit assert (equal to one). */
17294         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to one,
17295                                                                  indicates low swing. When set to 0, indicates full swing. */
17296         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of one initiates a speed change.
17297                                                                  When the speed change occurs, the controller will clear the contents of this field. */
17298         uint32_t alaneflip             : 1;  /**< [ 16: 16](R/W) Enable auto flipping of the lanes. */
17299         uint32_t pdetlane              : 3;  /**< [ 15: 13](R/W) Predetermined lane for auto flip. This field defines which
17300                                                                  physical lane is connected to logical Lane0 by the flip
17301                                                                  operation performed in detect.
17302                                                                    0x0 = Reserved.
17303                                                                    0x1 = Connect logical Lane0 to physical lane 1.
17304                                                                    0x2 = Connect logical Lane0 to physical lane 3.
17305                                                                    0x3 = Connect logical Lane0 to physical lane 7.
17306                                                                    0x4 = Connect logical Lane0 to physical lane 15.
17307                                                                    0x5 - 0x7 = Reserved. */
17308         uint32_t nlanes                : 5;  /**< [ 12:  8](R/W) Predetermined number of lanes.  Defines the number of
17309                                                                  lanes which are connected and not bad. Used to limit the
17310                                                                  effective link width to ignore 'broken" or "unused" lanes that
17311                                                                  detect a receiver. Indicates the number of lanes to check for
17312                                                                  exit from electrical idle in Polling.Active and L2.Idle.
17313 
17314                                                                  0x1 = 1 lane.
17315                                                                  0x2 = 2 lanes.
17316                                                                  0x3 = 3 lanes.
17317                                                                  _ ...
17318                                                                  0x10 = 16 lanes.
17319                                                                  0x11-0x1F = Reserved.
17320 
17321                                                                  When you have unused lanes in your system, then you must
17322                                                                  change the value in this register to reflect the number of
17323                                                                  lanes. You must also change PCIERC_PORT_CTL[LME]. */
17324         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) Sets the number of fast training sequences (N_FTS) that the core advertises as its
17325                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
17326                                                                  PHY's ability to recover synchronization after a low power state.
17327 
17328                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
17329                                                                  state when exiting from L0s. */
17330 #else /* Word 0 - Little Endian */
17331         uint32_t n_fts                 : 8;  /**< [  7:  0](R/W) Sets the number of fast training sequences (N_FTS) that the core advertises as its
17332                                                                  N_FTS during GEN2 Link training. This value is used to inform the link partner about the
17333                                                                  PHY's ability to recover synchronization after a low power state.
17334 
17335                                                                  Do not set [N_FTS] to zero; doing so can cause the LTSSM to go into the recovery
17336                                                                  state when exiting from L0s. */
17337         uint32_t nlanes                : 5;  /**< [ 12:  8](R/W) Predetermined number of lanes.  Defines the number of
17338                                                                  lanes which are connected and not bad. Used to limit the
17339                                                                  effective link width to ignore 'broken" or "unused" lanes that
17340                                                                  detect a receiver. Indicates the number of lanes to check for
17341                                                                  exit from electrical idle in Polling.Active and L2.Idle.
17342 
17343                                                                  0x1 = 1 lane.
17344                                                                  0x2 = 2 lanes.
17345                                                                  0x3 = 3 lanes.
17346                                                                  _ ...
17347                                                                  0x10 = 16 lanes.
17348                                                                  0x11-0x1F = Reserved.
17349 
17350                                                                  When you have unused lanes in your system, then you must
17351                                                                  change the value in this register to reflect the number of
17352                                                                  lanes. You must also change PCIERC_PORT_CTL[LME]. */
17353         uint32_t pdetlane              : 3;  /**< [ 15: 13](R/W) Predetermined lane for auto flip. This field defines which
17354                                                                  physical lane is connected to logical Lane0 by the flip
17355                                                                  operation performed in detect.
17356                                                                    0x0 = Reserved.
17357                                                                    0x1 = Connect logical Lane0 to physical lane 1.
17358                                                                    0x2 = Connect logical Lane0 to physical lane 3.
17359                                                                    0x3 = Connect logical Lane0 to physical lane 7.
17360                                                                    0x4 = Connect logical Lane0 to physical lane 15.
17361                                                                    0x5 - 0x7 = Reserved. */
17362         uint32_t alaneflip             : 1;  /**< [ 16: 16](R/W) Enable auto flipping of the lanes. */
17363         uint32_t dsc                   : 1;  /**< [ 17: 17](R/W/H) Directed speed change. A write of one initiates a speed change.
17364                                                                  When the speed change occurs, the controller will clear the contents of this field. */
17365         uint32_t cpyts                 : 1;  /**< [ 18: 18](R/W) Config PHY TX swing. Indicates the voltage level that the PHY should drive. When set to one,
17366                                                                  indicates low swing. When set to 0, indicates full swing. */
17367         uint32_t ctcrb                 : 1;  /**< [ 19: 19](R/W) Config TX compliance receive bit. When set to one, signals LTSSM to transmit TS ordered sets
17368                                                                  with the compliance receive bit assert (equal to one). */
17369         uint32_t s_d_e                 : 1;  /**< [ 20: 20](R/W) Set the deemphasis level for upstream ports.
17370                                                                  0 = -6 dB.
17371                                                                  1 = -3.5 dB. */
17372         uint32_t gen1_ei_inf           : 1;  /**< [ 21: 21](R/W) Electrical idle inference mode at Gen1 Rate. Programmable mode to determine
17373                                                                  inferred electrical idle (EI) in Recovery.Speed or Loopback.Active (as slave)
17374                                                                  state at Gen1 speed by looking for a one value on RxElecIdle instead of looking
17375                                                                  for a zero on RxValid. If the PHY fails to deassert the RxValid signal in
17376                                                                  Recovery.Speed or Loopback.Active (because of corrupted EIOS for example),
17377                                                                  then EI cannot be inferred successfully in the controller by just detecting the
17378                                                                  condition RxValid=0.
17379                                                                    0 = Use RxElecIdle signal to infer electrical idle.
17380                                                                    1 = Use RxValid signal to infer electrical idle. */
17381         uint32_t reserved_22_31        : 10;
17382 #endif /* Word 0 - End */
17383     } s;
17384     /* struct bdk_pciercx_gen2_port_s cn; */
17385 };
17386 typedef union bdk_pciercx_gen2_port bdk_pciercx_gen2_port_t;
17387 
17388 static inline uint64_t BDK_PCIERCX_GEN2_PORT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_GEN2_PORT(unsigned long a)17389 static inline uint64_t BDK_PCIERCX_GEN2_PORT(unsigned long a)
17390 {
17391     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17392         return 0x80cll + 0x100000000ll * ((a) & 0x3);
17393     __bdk_csr_fatal("PCIERCX_GEN2_PORT", 1, a, 0, 0, 0);
17394 }
17395 
17396 #define typedef_BDK_PCIERCX_GEN2_PORT(a) bdk_pciercx_gen2_port_t
17397 #define bustype_BDK_PCIERCX_GEN2_PORT(a) BDK_CSR_TYPE_PCICONFIGRC
17398 #define basename_BDK_PCIERCX_GEN2_PORT(a) "PCIERCX_GEN2_PORT"
17399 #define busnum_BDK_PCIERCX_GEN2_PORT(a) (a)
17400 #define arguments_BDK_PCIERCX_GEN2_PORT(a) (a),-1,-1,-1
17401 
17402 /**
17403  * Register (PCICONFIGRC) pcierc#_gen3_eq_ctl
17404  *
17405  * PCIe RC Gen3 EQ Control Register
17406  */
17407 union bdk_pciercx_gen3_eq_ctl
17408 {
17409     uint32_t u;
17410     struct bdk_pciercx_gen3_eq_ctl_s
17411     {
17412 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17413         uint32_t reserved_27_31        : 5;
17414         uint32_t scefpm                : 1;  /**< [ 26: 26](R/W) Request core to send back-to-back EIEOS in Recovery.RcvrLock state until
17415                                                                  presets to coefficient mapping is complete. */
17416         uint32_t eq_pset_req           : 1;  /**< [ 25: 25](R/W/H) Reserved. */
17417         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
17418                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
17419         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part of the EQ master
17420                                                                  phase. Encoding scheme as follows:
17421 
17422                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
17423 
17424                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
17425 
17426                                                                  _ 0b0000000000000000 = No preset req/evaluated in EQ master phase.
17427 
17428                                                                  _ 0b00000xxxxxxxxxx1 = Preset 0 req/evaluated in EQ master phase.
17429 
17430                                                                  _ 0b00000xxxxxxxxx1x = Preset 1 req/evaluated in EQ master phase.
17431 
17432                                                                  _ 0b00000xxxxxxxx1xx = Preset 2 req/evaluated in EQ master phase.
17433 
17434                                                                  _ 0b00000xxxxxxx1xxx = Preset 3 req/evaluated in EQ master phase.
17435 
17436                                                                  _ 0b00000xxxxxx1xxxx = Preset 4 req/evaluated in EQ master phase.
17437 
17438                                                                  _ 0b00000xxxxx1xxxxx = Preset 5 req/evaluated in EQ master phase.
17439 
17440                                                                  _ 0b00000xxxx1xxxxxx = Preset 6 req/evaluated in EQ master phase.
17441 
17442                                                                  _ 0b00000xxx1xxxxxxx = Preset 7 req/evaluated in EQ master phase.
17443 
17444                                                                  _ 0b00000xx1xxxxxxxx = Preset 8 req/evaluated in EQ master phase.
17445 
17446                                                                  _ 0b00000x1xxxxxxxxx = Preset 9 req/evaluated in EQ master phase.
17447 
17448                                                                  _ 0b000001xxxxxxxxxx = Preset 10 req/evaluated in EQ master phase.
17449 
17450                                                                  _ All other encodings = Reserved. */
17451         uint32_t reserved_7            : 1;
17452         uint32_t eq_redo_en            : 1;  /**< [  6:  6](R/W) Support EQ redo and lower rate change. */
17453         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
17454                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
17455                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
17456                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
17457                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
17458                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
17459         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
17460 
17461                                                                  For a USP: determine the next LTSSM state from Phase2:
17462                                                                  0 = Recovery.Speed.
17463                                                                  1 = Recovry.Equalization.Phase3.
17464 
17465                                                                  For a DSP: determine the next LTSSM state from Phase3:
17466                                                                  0 = Recovery.Speed.
17467                                                                  1 = Recovry.Equalization.RcrLock.
17468 
17469                                                                  When optimal settings are not found:
17470                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
17471                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
17472         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
17473                                                                  0 = Direction of change.
17474                                                                  1 = Figure of merit.
17475                                                                  2-15 = Reserved. */
17476 #else /* Word 0 - Little Endian */
17477         uint32_t fm                    : 4;  /**< [  3:  0](R/W) Feedback mode.
17478                                                                  0 = Direction of change.
17479                                                                  1 = Figure of merit.
17480                                                                  2-15 = Reserved. */
17481         uint32_t bt                    : 1;  /**< [  4:  4](R/W) Behavior after 24 ms timeout (when optimal settings are not found).
17482 
17483                                                                  For a USP: determine the next LTSSM state from Phase2:
17484                                                                  0 = Recovery.Speed.
17485                                                                  1 = Recovry.Equalization.Phase3.
17486 
17487                                                                  For a DSP: determine the next LTSSM state from Phase3:
17488                                                                  0 = Recovery.Speed.
17489                                                                  1 = Recovry.Equalization.RcrLock.
17490 
17491                                                                  When optimal settings are not found:
17492                                                                  * Equalization phase 3 successful status bit is not set in the link status register.
17493                                                                  * Equalization phase 3 complete status bit is set in the link status register. */
17494         uint32_t p23td                 : 1;  /**< [  5:  5](R/W) Phase2_3 2 ms timeout disable. Determine behavior in Phase2 for USP (Phase3 if DSP) when
17495                                                                  the PHY does not respond within 2 ms to the assertion of RxEqEval:
17496                                                                  0 = Abort the current evaluation; stop any attempt to modify the remote transmitter
17497                                                                  settings. Phase2 will be terminated by the 24 ms timeout.
17498                                                                  1 = Ignore the 2 ms timeout and continue as normal. This is used to support PHYs that
17499                                                                  require more than 2 ms to respond to the assertion of RxEqEval. */
17500         uint32_t eq_redo_en            : 1;  /**< [  6:  6](R/W) Support EQ redo and lower rate change. */
17501         uint32_t reserved_7            : 1;
17502         uint32_t prv                   : 16; /**< [ 23:  8](R/W) Preset request vector. Requesting of presets during the initial part of the EQ master
17503                                                                  phase. Encoding scheme as follows:
17504 
17505                                                                  Bit [15:0] = 0x0: No preset is requested and evaluated in the EQ master phase.
17506 
17507                                                                  Bit [i] = 1: Preset=i is requested and evaluated in the EQ master phase.
17508 
17509                                                                  _ 0b0000000000000000 = No preset req/evaluated in EQ master phase.
17510 
17511                                                                  _ 0b00000xxxxxxxxxx1 = Preset 0 req/evaluated in EQ master phase.
17512 
17513                                                                  _ 0b00000xxxxxxxxx1x = Preset 1 req/evaluated in EQ master phase.
17514 
17515                                                                  _ 0b00000xxxxxxxx1xx = Preset 2 req/evaluated in EQ master phase.
17516 
17517                                                                  _ 0b00000xxxxxxx1xxx = Preset 3 req/evaluated in EQ master phase.
17518 
17519                                                                  _ 0b00000xxxxxx1xxxx = Preset 4 req/evaluated in EQ master phase.
17520 
17521                                                                  _ 0b00000xxxxx1xxxxx = Preset 5 req/evaluated in EQ master phase.
17522 
17523                                                                  _ 0b00000xxxx1xxxxxx = Preset 6 req/evaluated in EQ master phase.
17524 
17525                                                                  _ 0b00000xxx1xxxxxxx = Preset 7 req/evaluated in EQ master phase.
17526 
17527                                                                  _ 0b00000xx1xxxxxxxx = Preset 8 req/evaluated in EQ master phase.
17528 
17529                                                                  _ 0b00000x1xxxxxxxxx = Preset 9 req/evaluated in EQ master phase.
17530 
17531                                                                  _ 0b000001xxxxxxxxxx = Preset 10 req/evaluated in EQ master phase.
17532 
17533                                                                  _ All other encodings = Reserved. */
17534         uint32_t iif                   : 1;  /**< [ 24: 24](R/W) Include initial FOM. Include, or not, the FOM feedback from the initial preset evaluation
17535                                                                  performed in the EQ master, when finding the highest FOM among all preset evaluations. */
17536         uint32_t eq_pset_req           : 1;  /**< [ 25: 25](R/W/H) Reserved. */
17537         uint32_t scefpm                : 1;  /**< [ 26: 26](R/W) Request core to send back-to-back EIEOS in Recovery.RcvrLock state until
17538                                                                  presets to coefficient mapping is complete. */
17539         uint32_t reserved_27_31        : 5;
17540 #endif /* Word 0 - End */
17541     } s;
17542     /* struct bdk_pciercx_gen3_eq_ctl_s cn; */
17543 };
17544 typedef union bdk_pciercx_gen3_eq_ctl bdk_pciercx_gen3_eq_ctl_t;
17545 
17546 static inline uint64_t BDK_PCIERCX_GEN3_EQ_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_GEN3_EQ_CTL(unsigned long a)17547 static inline uint64_t BDK_PCIERCX_GEN3_EQ_CTL(unsigned long a)
17548 {
17549     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17550         return 0x8a8ll + 0x100000000ll * ((a) & 0x3);
17551     __bdk_csr_fatal("PCIERCX_GEN3_EQ_CTL", 1, a, 0, 0, 0);
17552 }
17553 
17554 #define typedef_BDK_PCIERCX_GEN3_EQ_CTL(a) bdk_pciercx_gen3_eq_ctl_t
17555 #define bustype_BDK_PCIERCX_GEN3_EQ_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
17556 #define basename_BDK_PCIERCX_GEN3_EQ_CTL(a) "PCIERCX_GEN3_EQ_CTL"
17557 #define busnum_BDK_PCIERCX_GEN3_EQ_CTL(a) (a)
17558 #define arguments_BDK_PCIERCX_GEN3_EQ_CTL(a) (a),-1,-1,-1
17559 
17560 /**
17561  * Register (PCICONFIGRC) pcierc#_gen3_fb_mode_dir_chg
17562  *
17563  * PCIe RC Gen3 EQ Direction Change Feedback Mode Control Register
17564  */
17565 union bdk_pciercx_gen3_fb_mode_dir_chg
17566 {
17567     uint32_t u;
17568     struct bdk_pciercx_gen3_fb_mode_dir_chg_s
17569     {
17570 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17571         uint32_t reserved_18_31        : 14;
17572         uint32_t max_post_cur_delta    : 4;  /**< [ 17: 14](R/W) Convergence window aperture for C+1. Postcursor coefficients maximum delta
17573                                                                  within the convergence window depth. */
17574         uint32_t max_pre_cur_delta     : 4;  /**< [ 13: 10](R/W) Convergence window aperture for C-1. Precursor coefficients maximum delta
17575                                                                  within the convergence window depth. */
17576         uint32_t n_evals               : 5;  /**< [  9:  5](R/W) Convergence window depth. Number of consecutive evaluations
17577                                                                  considered in phase 2/3 when determining if optimal coefficients
17578                                                                  have been found.
17579 
17580                                                                  When 0x0, EQ master is performed without sending any
17581                                                                  requests to the remote partner in phase 2 for USP and
17582                                                                  phase 3 for DSP. Therefore, the remote partner will not
17583                                                                  change its transmitter coefficients and will move to the next
17584                                                                  state.
17585 
17586                                                                  Legal values: 0x0, 0x1, and 0x2. */
17587         uint32_t min_phase23           : 5;  /**< [  4:  0](R/W) Minimum time (in ms) to remain in EQ master phase. The
17588                                                                  LTSSM stays in EQ master phase for at least this amount of
17589                                                                  time, before starting to check for convergence of the
17590                                                                  coefficients.
17591 
17592                                                                  Legal values: 0..24. */
17593 #else /* Word 0 - Little Endian */
17594         uint32_t min_phase23           : 5;  /**< [  4:  0](R/W) Minimum time (in ms) to remain in EQ master phase. The
17595                                                                  LTSSM stays in EQ master phase for at least this amount of
17596                                                                  time, before starting to check for convergence of the
17597                                                                  coefficients.
17598 
17599                                                                  Legal values: 0..24. */
17600         uint32_t n_evals               : 5;  /**< [  9:  5](R/W) Convergence window depth. Number of consecutive evaluations
17601                                                                  considered in phase 2/3 when determining if optimal coefficients
17602                                                                  have been found.
17603 
17604                                                                  When 0x0, EQ master is performed without sending any
17605                                                                  requests to the remote partner in phase 2 for USP and
17606                                                                  phase 3 for DSP. Therefore, the remote partner will not
17607                                                                  change its transmitter coefficients and will move to the next
17608                                                                  state.
17609 
17610                                                                  Legal values: 0x0, 0x1, and 0x2. */
17611         uint32_t max_pre_cur_delta     : 4;  /**< [ 13: 10](R/W) Convergence window aperture for C-1. Precursor coefficients maximum delta
17612                                                                  within the convergence window depth. */
17613         uint32_t max_post_cur_delta    : 4;  /**< [ 17: 14](R/W) Convergence window aperture for C+1. Postcursor coefficients maximum delta
17614                                                                  within the convergence window depth. */
17615         uint32_t reserved_18_31        : 14;
17616 #endif /* Word 0 - End */
17617     } s;
17618     /* struct bdk_pciercx_gen3_fb_mode_dir_chg_s cn; */
17619 };
17620 typedef union bdk_pciercx_gen3_fb_mode_dir_chg bdk_pciercx_gen3_fb_mode_dir_chg_t;
17621 
17622 static inline uint64_t BDK_PCIERCX_GEN3_FB_MODE_DIR_CHG(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_GEN3_FB_MODE_DIR_CHG(unsigned long a)17623 static inline uint64_t BDK_PCIERCX_GEN3_FB_MODE_DIR_CHG(unsigned long a)
17624 {
17625     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17626         return 0x8acll + 0x100000000ll * ((a) & 0x3);
17627     __bdk_csr_fatal("PCIERCX_GEN3_FB_MODE_DIR_CHG", 1, a, 0, 0, 0);
17628 }
17629 
17630 #define typedef_BDK_PCIERCX_GEN3_FB_MODE_DIR_CHG(a) bdk_pciercx_gen3_fb_mode_dir_chg_t
17631 #define bustype_BDK_PCIERCX_GEN3_FB_MODE_DIR_CHG(a) BDK_CSR_TYPE_PCICONFIGRC
17632 #define basename_BDK_PCIERCX_GEN3_FB_MODE_DIR_CHG(a) "PCIERCX_GEN3_FB_MODE_DIR_CHG"
17633 #define busnum_BDK_PCIERCX_GEN3_FB_MODE_DIR_CHG(a) (a)
17634 #define arguments_BDK_PCIERCX_GEN3_FB_MODE_DIR_CHG(a) (a),-1,-1,-1
17635 
17636 /**
17637  * Register (PCICONFIGRC) pcierc#_gen3_pipe_lb
17638  *
17639  * PCIe RC Gen3 PIPE Loopback Register
17640  */
17641 union bdk_pciercx_gen3_pipe_lb
17642 {
17643     uint32_t u;
17644     struct bdk_pciercx_gen3_pipe_lb_s
17645     {
17646 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17647         uint32_t ple                   : 1;  /**< [ 31: 31](R/W) Pipe loopback enable. */
17648         uint32_t reserved_27_30        : 4;
17649         uint32_t rx_stat               : 3;  /**< [ 26: 24](RO) Reserved. */
17650         uint32_t reserved_22_23        : 2;
17651         uint32_t rxstat_ln             : 6;  /**< [ 21: 16](R/W) Reserved. */
17652         uint32_t lpbk_rxvalid          : 16; /**< [ 15:  0](R/W) Loopback rxvalid (lane enable - 1 bit per lane). */
17653 #else /* Word 0 - Little Endian */
17654         uint32_t lpbk_rxvalid          : 16; /**< [ 15:  0](R/W) Loopback rxvalid (lane enable - 1 bit per lane). */
17655         uint32_t rxstat_ln             : 6;  /**< [ 21: 16](R/W) Reserved. */
17656         uint32_t reserved_22_23        : 2;
17657         uint32_t rx_stat               : 3;  /**< [ 26: 24](RO) Reserved. */
17658         uint32_t reserved_27_30        : 4;
17659         uint32_t ple                   : 1;  /**< [ 31: 31](R/W) Pipe loopback enable. */
17660 #endif /* Word 0 - End */
17661     } s;
17662     /* struct bdk_pciercx_gen3_pipe_lb_s cn; */
17663 };
17664 typedef union bdk_pciercx_gen3_pipe_lb bdk_pciercx_gen3_pipe_lb_t;
17665 
17666 static inline uint64_t BDK_PCIERCX_GEN3_PIPE_LB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_GEN3_PIPE_LB(unsigned long a)17667 static inline uint64_t BDK_PCIERCX_GEN3_PIPE_LB(unsigned long a)
17668 {
17669     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17670         return 0x8b8ll + 0x100000000ll * ((a) & 0x3);
17671     __bdk_csr_fatal("PCIERCX_GEN3_PIPE_LB", 1, a, 0, 0, 0);
17672 }
17673 
17674 #define typedef_BDK_PCIERCX_GEN3_PIPE_LB(a) bdk_pciercx_gen3_pipe_lb_t
17675 #define bustype_BDK_PCIERCX_GEN3_PIPE_LB(a) BDK_CSR_TYPE_PCICONFIGRC
17676 #define basename_BDK_PCIERCX_GEN3_PIPE_LB(a) "PCIERCX_GEN3_PIPE_LB"
17677 #define busnum_BDK_PCIERCX_GEN3_PIPE_LB(a) (a)
17678 #define arguments_BDK_PCIERCX_GEN3_PIPE_LB(a) (a),-1,-1,-1
17679 
17680 /**
17681  * Register (PCICONFIGRC) pcierc#_gen4_lane_margining_1
17682  *
17683  * PCIe RC Gen4 Lane Marginging Register 1
17684  */
17685 union bdk_pciercx_gen4_lane_margining_1
17686 {
17687     uint32_t u;
17688     struct bdk_pciercx_gen4_lane_margining_1_s
17689     {
17690 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17691         uint32_t reserved_30_31        : 2;
17692         uint32_t mvo                   : 6;  /**< [ 29: 24](R/W) Max voltage offset for lane margining at the receiver. */
17693         uint32_t reserved_23           : 1;
17694         uint32_t nvs                   : 7;  /**< [ 22: 16](R/W) Num voltage steps for lane margining at the receiver. */
17695         uint32_t reserved_14_15        : 2;
17696         uint32_t mto                   : 6;  /**< [ 13:  8](R/W) Max timing offset for lane margining at the receiver. */
17697         uint32_t reserved_6_7          : 2;
17698         uint32_t nts                   : 6;  /**< [  5:  0](R/W) Num timing steps for lane margining at the receiver. */
17699 #else /* Word 0 - Little Endian */
17700         uint32_t nts                   : 6;  /**< [  5:  0](R/W) Num timing steps for lane margining at the receiver. */
17701         uint32_t reserved_6_7          : 2;
17702         uint32_t mto                   : 6;  /**< [ 13:  8](R/W) Max timing offset for lane margining at the receiver. */
17703         uint32_t reserved_14_15        : 2;
17704         uint32_t nvs                   : 7;  /**< [ 22: 16](R/W) Num voltage steps for lane margining at the receiver. */
17705         uint32_t reserved_23           : 1;
17706         uint32_t mvo                   : 6;  /**< [ 29: 24](R/W) Max voltage offset for lane margining at the receiver. */
17707         uint32_t reserved_30_31        : 2;
17708 #endif /* Word 0 - End */
17709     } s;
17710     /* struct bdk_pciercx_gen4_lane_margining_1_s cn; */
17711 };
17712 typedef union bdk_pciercx_gen4_lane_margining_1 bdk_pciercx_gen4_lane_margining_1_t;
17713 
17714 static inline uint64_t BDK_PCIERCX_GEN4_LANE_MARGINING_1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_GEN4_LANE_MARGINING_1(unsigned long a)17715 static inline uint64_t BDK_PCIERCX_GEN4_LANE_MARGINING_1(unsigned long a)
17716 {
17717     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17718         return 0xb80ll + 0x100000000ll * ((a) & 0x3);
17719     __bdk_csr_fatal("PCIERCX_GEN4_LANE_MARGINING_1", 1, a, 0, 0, 0);
17720 }
17721 
17722 #define typedef_BDK_PCIERCX_GEN4_LANE_MARGINING_1(a) bdk_pciercx_gen4_lane_margining_1_t
17723 #define bustype_BDK_PCIERCX_GEN4_LANE_MARGINING_1(a) BDK_CSR_TYPE_PCICONFIGRC
17724 #define basename_BDK_PCIERCX_GEN4_LANE_MARGINING_1(a) "PCIERCX_GEN4_LANE_MARGINING_1"
17725 #define busnum_BDK_PCIERCX_GEN4_LANE_MARGINING_1(a) (a)
17726 #define arguments_BDK_PCIERCX_GEN4_LANE_MARGINING_1(a) (a),-1,-1,-1
17727 
17728 /**
17729  * Register (PCICONFIGRC) pcierc#_gen4_lane_margining_2
17730  *
17731  * PCIe RC Gen4 Lane Margining Register 2
17732  */
17733 union bdk_pciercx_gen4_lane_margining_2
17734 {
17735     uint32_t u;
17736     struct bdk_pciercx_gen4_lane_margining_2_s
17737     {
17738 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17739         uint32_t reserved_29_31        : 3;
17740         uint32_t ies                   : 1;  /**< [ 28: 28](R/W) Ind error sampler for lane margining at the receiver. */
17741         uint32_t srm                   : 1;  /**< [ 27: 27](R/W) Sample reporting method for lane margining at the receiver. */
17742         uint32_t ilrt                  : 1;  /**< [ 26: 26](R/W) Ind left right timing for lane margining at the receiver. */
17743         uint32_t iudv                  : 1;  /**< [ 25: 25](R/W) Ind up down voltage for lane margining at the receiver. */
17744         uint32_t volt_sup              : 1;  /**< [ 24: 24](R/W) Voltage supported for lane margining at the receiver. */
17745         uint32_t reserved_21_23        : 3;
17746         uint32_t max_lanes             : 5;  /**< [ 20: 16](R/W) Max lanes for lane margining at the receiver. */
17747         uint32_t reserved_14_15        : 2;
17748         uint32_t srt                   : 6;  /**< [ 13:  8](R/W) Sample rate timing for lane margining at the receiver. */
17749         uint32_t reserved_6_7          : 2;
17750         uint32_t srv                   : 6;  /**< [  5:  0](R/W) Sample rate voltage for lane margining at the receiver. */
17751 #else /* Word 0 - Little Endian */
17752         uint32_t srv                   : 6;  /**< [  5:  0](R/W) Sample rate voltage for lane margining at the receiver. */
17753         uint32_t reserved_6_7          : 2;
17754         uint32_t srt                   : 6;  /**< [ 13:  8](R/W) Sample rate timing for lane margining at the receiver. */
17755         uint32_t reserved_14_15        : 2;
17756         uint32_t max_lanes             : 5;  /**< [ 20: 16](R/W) Max lanes for lane margining at the receiver. */
17757         uint32_t reserved_21_23        : 3;
17758         uint32_t volt_sup              : 1;  /**< [ 24: 24](R/W) Voltage supported for lane margining at the receiver. */
17759         uint32_t iudv                  : 1;  /**< [ 25: 25](R/W) Ind up down voltage for lane margining at the receiver. */
17760         uint32_t ilrt                  : 1;  /**< [ 26: 26](R/W) Ind left right timing for lane margining at the receiver. */
17761         uint32_t srm                   : 1;  /**< [ 27: 27](R/W) Sample reporting method for lane margining at the receiver. */
17762         uint32_t ies                   : 1;  /**< [ 28: 28](R/W) Ind error sampler for lane margining at the receiver. */
17763         uint32_t reserved_29_31        : 3;
17764 #endif /* Word 0 - End */
17765     } s;
17766     /* struct bdk_pciercx_gen4_lane_margining_2_s cn; */
17767 };
17768 typedef union bdk_pciercx_gen4_lane_margining_2 bdk_pciercx_gen4_lane_margining_2_t;
17769 
17770 static inline uint64_t BDK_PCIERCX_GEN4_LANE_MARGINING_2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_GEN4_LANE_MARGINING_2(unsigned long a)17771 static inline uint64_t BDK_PCIERCX_GEN4_LANE_MARGINING_2(unsigned long a)
17772 {
17773     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17774         return 0xb84ll + 0x100000000ll * ((a) & 0x3);
17775     __bdk_csr_fatal("PCIERCX_GEN4_LANE_MARGINING_2", 1, a, 0, 0, 0);
17776 }
17777 
17778 #define typedef_BDK_PCIERCX_GEN4_LANE_MARGINING_2(a) bdk_pciercx_gen4_lane_margining_2_t
17779 #define bustype_BDK_PCIERCX_GEN4_LANE_MARGINING_2(a) BDK_CSR_TYPE_PCICONFIGRC
17780 #define basename_BDK_PCIERCX_GEN4_LANE_MARGINING_2(a) "PCIERCX_GEN4_LANE_MARGINING_2"
17781 #define busnum_BDK_PCIERCX_GEN4_LANE_MARGINING_2(a) (a)
17782 #define arguments_BDK_PCIERCX_GEN4_LANE_MARGINING_2(a) (a),-1,-1,-1
17783 
17784 /**
17785  * Register (PCICONFIGRC) pcierc#_hdr_log1
17786  *
17787  * PCIe RC Header Log Register 1
17788  * The header log registers collect the header for the TLP corresponding to a detected error.
17789  */
17790 union bdk_pciercx_hdr_log1
17791 {
17792     uint32_t u;
17793     struct bdk_pciercx_hdr_log1_s
17794     {
17795 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17796         uint32_t dword1                : 32; /**< [ 31:  0](RO/H) Header log register (first DWORD). */
17797 #else /* Word 0 - Little Endian */
17798         uint32_t dword1                : 32; /**< [ 31:  0](RO/H) Header log register (first DWORD). */
17799 #endif /* Word 0 - End */
17800     } s;
17801     /* struct bdk_pciercx_hdr_log1_s cn; */
17802 };
17803 typedef union bdk_pciercx_hdr_log1 bdk_pciercx_hdr_log1_t;
17804 
17805 static inline uint64_t BDK_PCIERCX_HDR_LOG1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_HDR_LOG1(unsigned long a)17806 static inline uint64_t BDK_PCIERCX_HDR_LOG1(unsigned long a)
17807 {
17808     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17809         return 0x11cll + 0x100000000ll * ((a) & 0x3);
17810     __bdk_csr_fatal("PCIERCX_HDR_LOG1", 1, a, 0, 0, 0);
17811 }
17812 
17813 #define typedef_BDK_PCIERCX_HDR_LOG1(a) bdk_pciercx_hdr_log1_t
17814 #define bustype_BDK_PCIERCX_HDR_LOG1(a) BDK_CSR_TYPE_PCICONFIGRC
17815 #define basename_BDK_PCIERCX_HDR_LOG1(a) "PCIERCX_HDR_LOG1"
17816 #define busnum_BDK_PCIERCX_HDR_LOG1(a) (a)
17817 #define arguments_BDK_PCIERCX_HDR_LOG1(a) (a),-1,-1,-1
17818 
17819 /**
17820  * Register (PCICONFIGRC) pcierc#_hdr_log2
17821  *
17822  * PCIe RC Header Log Register 2
17823  * The header log registers collect the header for the TLP corresponding to a detected error.
17824  */
17825 union bdk_pciercx_hdr_log2
17826 {
17827     uint32_t u;
17828     struct bdk_pciercx_hdr_log2_s
17829     {
17830 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17831         uint32_t dword2                : 32; /**< [ 31:  0](RO/H) Header log register (second DWORD). */
17832 #else /* Word 0 - Little Endian */
17833         uint32_t dword2                : 32; /**< [ 31:  0](RO/H) Header log register (second DWORD). */
17834 #endif /* Word 0 - End */
17835     } s;
17836     /* struct bdk_pciercx_hdr_log2_s cn; */
17837 };
17838 typedef union bdk_pciercx_hdr_log2 bdk_pciercx_hdr_log2_t;
17839 
17840 static inline uint64_t BDK_PCIERCX_HDR_LOG2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_HDR_LOG2(unsigned long a)17841 static inline uint64_t BDK_PCIERCX_HDR_LOG2(unsigned long a)
17842 {
17843     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17844         return 0x120ll + 0x100000000ll * ((a) & 0x3);
17845     __bdk_csr_fatal("PCIERCX_HDR_LOG2", 1, a, 0, 0, 0);
17846 }
17847 
17848 #define typedef_BDK_PCIERCX_HDR_LOG2(a) bdk_pciercx_hdr_log2_t
17849 #define bustype_BDK_PCIERCX_HDR_LOG2(a) BDK_CSR_TYPE_PCICONFIGRC
17850 #define basename_BDK_PCIERCX_HDR_LOG2(a) "PCIERCX_HDR_LOG2"
17851 #define busnum_BDK_PCIERCX_HDR_LOG2(a) (a)
17852 #define arguments_BDK_PCIERCX_HDR_LOG2(a) (a),-1,-1,-1
17853 
17854 /**
17855  * Register (PCICONFIGRC) pcierc#_hdr_log3
17856  *
17857  * PCIe RC Header Log Register 3
17858  * The header log registers collect the header for the TLP corresponding to a detected error.
17859  */
17860 union bdk_pciercx_hdr_log3
17861 {
17862     uint32_t u;
17863     struct bdk_pciercx_hdr_log3_s
17864     {
17865 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17866         uint32_t dword3                : 32; /**< [ 31:  0](RO/H) Header log register (third DWORD). */
17867 #else /* Word 0 - Little Endian */
17868         uint32_t dword3                : 32; /**< [ 31:  0](RO/H) Header log register (third DWORD). */
17869 #endif /* Word 0 - End */
17870     } s;
17871     /* struct bdk_pciercx_hdr_log3_s cn; */
17872 };
17873 typedef union bdk_pciercx_hdr_log3 bdk_pciercx_hdr_log3_t;
17874 
17875 static inline uint64_t BDK_PCIERCX_HDR_LOG3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_HDR_LOG3(unsigned long a)17876 static inline uint64_t BDK_PCIERCX_HDR_LOG3(unsigned long a)
17877 {
17878     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17879         return 0x124ll + 0x100000000ll * ((a) & 0x3);
17880     __bdk_csr_fatal("PCIERCX_HDR_LOG3", 1, a, 0, 0, 0);
17881 }
17882 
17883 #define typedef_BDK_PCIERCX_HDR_LOG3(a) bdk_pciercx_hdr_log3_t
17884 #define bustype_BDK_PCIERCX_HDR_LOG3(a) BDK_CSR_TYPE_PCICONFIGRC
17885 #define basename_BDK_PCIERCX_HDR_LOG3(a) "PCIERCX_HDR_LOG3"
17886 #define busnum_BDK_PCIERCX_HDR_LOG3(a) (a)
17887 #define arguments_BDK_PCIERCX_HDR_LOG3(a) (a),-1,-1,-1
17888 
17889 /**
17890  * Register (PCICONFIGRC) pcierc#_hdr_log4
17891  *
17892  * PCIe RC Header Log Register 4
17893  * The header log registers collect the header for the TLP corresponding to a detected error.
17894  */
17895 union bdk_pciercx_hdr_log4
17896 {
17897     uint32_t u;
17898     struct bdk_pciercx_hdr_log4_s
17899     {
17900 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17901         uint32_t dword4                : 32; /**< [ 31:  0](RO/H) Header log register (fourth DWORD). */
17902 #else /* Word 0 - Little Endian */
17903         uint32_t dword4                : 32; /**< [ 31:  0](RO/H) Header log register (fourth DWORD). */
17904 #endif /* Word 0 - End */
17905     } s;
17906     /* struct bdk_pciercx_hdr_log4_s cn; */
17907 };
17908 typedef union bdk_pciercx_hdr_log4 bdk_pciercx_hdr_log4_t;
17909 
17910 static inline uint64_t BDK_PCIERCX_HDR_LOG4(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_HDR_LOG4(unsigned long a)17911 static inline uint64_t BDK_PCIERCX_HDR_LOG4(unsigned long a)
17912 {
17913     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17914         return 0x128ll + 0x100000000ll * ((a) & 0x3);
17915     __bdk_csr_fatal("PCIERCX_HDR_LOG4", 1, a, 0, 0, 0);
17916 }
17917 
17918 #define typedef_BDK_PCIERCX_HDR_LOG4(a) bdk_pciercx_hdr_log4_t
17919 #define bustype_BDK_PCIERCX_HDR_LOG4(a) BDK_CSR_TYPE_PCICONFIGRC
17920 #define basename_BDK_PCIERCX_HDR_LOG4(a) "PCIERCX_HDR_LOG4"
17921 #define busnum_BDK_PCIERCX_HDR_LOG4(a) (a)
17922 #define arguments_BDK_PCIERCX_HDR_LOG4(a) (a),-1,-1,-1
17923 
17924 /**
17925  * Register (PCICONFIGRC) pcierc#_id
17926  *
17927  * PCIe RC Device ID and Vendor ID Register
17928  */
17929 union bdk_pciercx_id
17930 {
17931     uint32_t u;
17932     struct bdk_pciercx_id_s
17933     {
17934 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17935         uint32_t devid                 : 16; /**< [ 31: 16](RO/WRSL) Device ID for PCIERC, writable through PEM()_CFG_WR.
17936                                                                   Firmware must configure this field prior to starting the link.
17937                                                                   _ \<15:8\> is typically set to the appropriate chip number, from the
17938                                                                  FUS_FUSE_NUM_E::CHIP_TYPE() fuses, and as enumerated by PCC_PROD_E::CNXXXX.
17939                                                                   _ \<7:0\> is typically set to PCC_DEV_IDL_E::PCIERC. */
17940         uint32_t vendid                : 16; /**< [ 15:  0](RO/WRSL) Vendor ID, writable through PEM()_CFG_WR.
17941                                                                  However, the application must not change this field. */
17942 #else /* Word 0 - Little Endian */
17943         uint32_t vendid                : 16; /**< [ 15:  0](RO/WRSL) Vendor ID, writable through PEM()_CFG_WR.
17944                                                                  However, the application must not change this field. */
17945         uint32_t devid                 : 16; /**< [ 31: 16](RO/WRSL) Device ID for PCIERC, writable through PEM()_CFG_WR.
17946                                                                   Firmware must configure this field prior to starting the link.
17947                                                                   _ \<15:8\> is typically set to the appropriate chip number, from the
17948                                                                  FUS_FUSE_NUM_E::CHIP_TYPE() fuses, and as enumerated by PCC_PROD_E::CNXXXX.
17949                                                                   _ \<7:0\> is typically set to PCC_DEV_IDL_E::PCIERC. */
17950 #endif /* Word 0 - End */
17951     } s;
17952     /* struct bdk_pciercx_id_s cn; */
17953 };
17954 typedef union bdk_pciercx_id bdk_pciercx_id_t;
17955 
17956 static inline uint64_t BDK_PCIERCX_ID(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ID(unsigned long a)17957 static inline uint64_t BDK_PCIERCX_ID(unsigned long a)
17958 {
17959     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
17960         return 0ll + 0x100000000ll * ((a) & 0x3);
17961     __bdk_csr_fatal("PCIERCX_ID", 1, a, 0, 0, 0);
17962 }
17963 
17964 #define typedef_BDK_PCIERCX_ID(a) bdk_pciercx_id_t
17965 #define bustype_BDK_PCIERCX_ID(a) BDK_CSR_TYPE_PCICONFIGRC
17966 #define basename_BDK_PCIERCX_ID(a) "PCIERCX_ID"
17967 #define busnum_BDK_PCIERCX_ID(a) (a)
17968 #define arguments_BDK_PCIERCX_ID(a) (a),-1,-1,-1
17969 
17970 /**
17971  * Register (PCICONFIGRC) pcierc#_int
17972  *
17973  * PCIe RC Interrupt Line Register/Interrupt Pin/Bridge Control Register
17974  */
17975 union bdk_pciercx_int
17976 {
17977     uint32_t u;
17978     struct bdk_pciercx_int_s
17979     {
17980 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
17981         uint32_t reserved_28_31        : 4;
17982         uint32_t dtsees                : 1;  /**< [ 27: 27](RO) Discard timer SERR enable status. Not applicable to PCI Express, hardwired to zero. */
17983         uint32_t dts                   : 1;  /**< [ 26: 26](RO) Discard timer status. Not applicable to PCI Express, hardwired to zero. */
17984         uint32_t sdt                   : 1;  /**< [ 25: 25](RO) Secondary discard timer. Not applicable to PCI Express, hardwired to zero. */
17985         uint32_t pdt                   : 1;  /**< [ 24: 24](RO) Primary discard timer. Not applicable to PCI Express, hardwired to zero. */
17986         uint32_t fbbe                  : 1;  /**< [ 23: 23](RO) Fast back-to-back transactions enable. Not applicable to PCI Express, hardwired to zero. */
17987         uint32_t sbrst                 : 1;  /**< [ 22: 22](R/W) Secondary bus reset. Hot reset. Causes TS1s with the hot reset bit to be sent to the link
17988                                                                  partner. When set, software should wait 2 ms before clearing. The link partner normally
17989                                                                  responds by sending TS1s with the hot reset bit set, which will cause a link down event.
17990                                                                  Refer to 'PCIe Link-Down Reset in RC Mode' section. */
17991         uint32_t mam                   : 1;  /**< [ 21: 21](RO) Master abort mode. Not applicable to PCI Express, hardwired to zero. */
17992         uint32_t vga16d                : 1;  /**< [ 20: 20](RO) VGA 16-bit decode. */
17993         uint32_t vgae                  : 1;  /**< [ 19: 19](RO) VGA enable. */
17994         uint32_t isae                  : 1;  /**< [ 18: 18](R/W) ISA enable. */
17995         uint32_t see                   : 1;  /**< [ 17: 17](R/W) SERR enable. */
17996         uint32_t pere                  : 1;  /**< [ 16: 16](R/W) Parity error response enable. */
17997         uint32_t inta                  : 8;  /**< [ 15:  8](RO/WRSL) Interrupt pin. Identifies the legacy interrupt message that the device (or device
17998                                                                  function) uses. The interrupt pin register is writable through PEM()_CFG_WR. */
17999         uint32_t il                    : 8;  /**< [  7:  0](R/W) Interrupt line. */
18000 #else /* Word 0 - Little Endian */
18001         uint32_t il                    : 8;  /**< [  7:  0](R/W) Interrupt line. */
18002         uint32_t inta                  : 8;  /**< [ 15:  8](RO/WRSL) Interrupt pin. Identifies the legacy interrupt message that the device (or device
18003                                                                  function) uses. The interrupt pin register is writable through PEM()_CFG_WR. */
18004         uint32_t pere                  : 1;  /**< [ 16: 16](R/W) Parity error response enable. */
18005         uint32_t see                   : 1;  /**< [ 17: 17](R/W) SERR enable. */
18006         uint32_t isae                  : 1;  /**< [ 18: 18](R/W) ISA enable. */
18007         uint32_t vgae                  : 1;  /**< [ 19: 19](RO) VGA enable. */
18008         uint32_t vga16d                : 1;  /**< [ 20: 20](RO) VGA 16-bit decode. */
18009         uint32_t mam                   : 1;  /**< [ 21: 21](RO) Master abort mode. Not applicable to PCI Express, hardwired to zero. */
18010         uint32_t sbrst                 : 1;  /**< [ 22: 22](R/W) Secondary bus reset. Hot reset. Causes TS1s with the hot reset bit to be sent to the link
18011                                                                  partner. When set, software should wait 2 ms before clearing. The link partner normally
18012                                                                  responds by sending TS1s with the hot reset bit set, which will cause a link down event.
18013                                                                  Refer to 'PCIe Link-Down Reset in RC Mode' section. */
18014         uint32_t fbbe                  : 1;  /**< [ 23: 23](RO) Fast back-to-back transactions enable. Not applicable to PCI Express, hardwired to zero. */
18015         uint32_t pdt                   : 1;  /**< [ 24: 24](RO) Primary discard timer. Not applicable to PCI Express, hardwired to zero. */
18016         uint32_t sdt                   : 1;  /**< [ 25: 25](RO) Secondary discard timer. Not applicable to PCI Express, hardwired to zero. */
18017         uint32_t dts                   : 1;  /**< [ 26: 26](RO) Discard timer status. Not applicable to PCI Express, hardwired to zero. */
18018         uint32_t dtsees                : 1;  /**< [ 27: 27](RO) Discard timer SERR enable status. Not applicable to PCI Express, hardwired to zero. */
18019         uint32_t reserved_28_31        : 4;
18020 #endif /* Word 0 - End */
18021     } s;
18022     /* struct bdk_pciercx_int_s cn; */
18023 };
18024 typedef union bdk_pciercx_int bdk_pciercx_int_t;
18025 
18026 static inline uint64_t BDK_PCIERCX_INT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_INT(unsigned long a)18027 static inline uint64_t BDK_PCIERCX_INT(unsigned long a)
18028 {
18029     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18030         return 0x3cll + 0x100000000ll * ((a) & 0x3);
18031     __bdk_csr_fatal("PCIERCX_INT", 1, a, 0, 0, 0);
18032 }
18033 
18034 #define typedef_BDK_PCIERCX_INT(a) bdk_pciercx_int_t
18035 #define bustype_BDK_PCIERCX_INT(a) BDK_CSR_TYPE_PCICONFIGRC
18036 #define basename_BDK_PCIERCX_INT(a) "PCIERCX_INT"
18037 #define busnum_BDK_PCIERCX_INT(a) (a)
18038 #define arguments_BDK_PCIERCX_INT(a) (a),-1,-1,-1
18039 
18040 /**
18041  * Register (PCICONFIGRC) pcierc#_iobasel
18042  *
18043  * PCIe RC I/O Base and I/O Limit/Secondary Status Register
18044  */
18045 union bdk_pciercx_iobasel
18046 {
18047     uint32_t u;
18048     struct bdk_pciercx_iobasel_s
18049     {
18050 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18051         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
18052         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
18053         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
18054         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
18055         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
18056         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to zero. */
18057         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error */
18058         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to zero. */
18059         uint32_t reserved_22           : 1;
18060         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to zero. */
18061         uint32_t reserved_16_20        : 5;
18062         uint32_t lio_limi              : 4;  /**< [ 15: 12](R/W) I/O space limit. */
18063         uint32_t reserved_9_11         : 3;
18064         uint32_t io32b                 : 1;  /**< [  8:  8](RO/H) 32-bit I/O space.
18065                                                                  This is a read-only copy of [IO32A]. */
18066         uint32_t lio_base              : 4;  /**< [  7:  4](R/W) I/O space base. */
18067         uint32_t reserved_1_3          : 3;
18068         uint32_t io32a                 : 1;  /**< [  0:  0](RO/WRSL) 32-bit I/O space.
18069                                                                  0 = 16-bit I/O addressing.
18070                                                                  1 = 32-bit I/O addressing.
18071                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
18072                                                                  through PEM()_CFG_WR, the same value is written to [IO32B]. */
18073 #else /* Word 0 - Little Endian */
18074         uint32_t io32a                 : 1;  /**< [  0:  0](RO/WRSL) 32-bit I/O space.
18075                                                                  0 = 16-bit I/O addressing.
18076                                                                  1 = 32-bit I/O addressing.
18077                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
18078                                                                  through PEM()_CFG_WR, the same value is written to [IO32B]. */
18079         uint32_t reserved_1_3          : 3;
18080         uint32_t lio_base              : 4;  /**< [  7:  4](R/W) I/O space base. */
18081         uint32_t io32b                 : 1;  /**< [  8:  8](RO/H) 32-bit I/O space.
18082                                                                  This is a read-only copy of [IO32A]. */
18083         uint32_t reserved_9_11         : 3;
18084         uint32_t lio_limi              : 4;  /**< [ 15: 12](R/W) I/O space limit. */
18085         uint32_t reserved_16_20        : 5;
18086         uint32_t m66                   : 1;  /**< [ 21: 21](RO) 66 MHz capable. Not applicable for PCI Express. Hardwired to zero. */
18087         uint32_t reserved_22           : 1;
18088         uint32_t fbb                   : 1;  /**< [ 23: 23](RO) Fast back-to-back capable. Not applicable for PCI Express. Hardwired to zero. */
18089         uint32_t mdpe                  : 1;  /**< [ 24: 24](R/W1C/H) Master data parity error */
18090         uint32_t devt                  : 2;  /**< [ 26: 25](RO) DEVSEL timing. Not applicable for PCI Express. Hardwired to zero. */
18091         uint32_t sta                   : 1;  /**< [ 27: 27](R/W1C/H) Signaled target abort. */
18092         uint32_t rta                   : 1;  /**< [ 28: 28](R/W1C/H) Received target abort. */
18093         uint32_t rma                   : 1;  /**< [ 29: 29](R/W1C/H) Received master abort. */
18094         uint32_t sse                   : 1;  /**< [ 30: 30](R/W1C/H) Signaled system error. */
18095         uint32_t dpe                   : 1;  /**< [ 31: 31](R/W1C/H) Detected parity error. */
18096 #endif /* Word 0 - End */
18097     } s;
18098     /* struct bdk_pciercx_iobasel_s cn; */
18099 };
18100 typedef union bdk_pciercx_iobasel bdk_pciercx_iobasel_t;
18101 
18102 static inline uint64_t BDK_PCIERCX_IOBASEL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_IOBASEL(unsigned long a)18103 static inline uint64_t BDK_PCIERCX_IOBASEL(unsigned long a)
18104 {
18105     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18106         return 0x1cll + 0x100000000ll * ((a) & 0x3);
18107     __bdk_csr_fatal("PCIERCX_IOBASEL", 1, a, 0, 0, 0);
18108 }
18109 
18110 #define typedef_BDK_PCIERCX_IOBASEL(a) bdk_pciercx_iobasel_t
18111 #define bustype_BDK_PCIERCX_IOBASEL(a) BDK_CSR_TYPE_PCICONFIGRC
18112 #define basename_BDK_PCIERCX_IOBASEL(a) "PCIERCX_IOBASEL"
18113 #define busnum_BDK_PCIERCX_IOBASEL(a) (a)
18114 #define arguments_BDK_PCIERCX_IOBASEL(a) (a),-1,-1,-1
18115 
18116 /**
18117  * Register (PCICONFIGRC) pcierc#_iobaseu
18118  *
18119  * PCIe RC I/O Base and Limit Upper 16 Bits Register
18120  */
18121 union bdk_pciercx_iobaseu
18122 {
18123     uint32_t u;
18124     struct bdk_pciercx_iobaseu_s
18125     {
18126 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18127         uint32_t uio_limit             : 16; /**< [ 31: 16](R/W) Upper 16 bits of I/O limit (if 32-bit I/O decoding is supported for devices on the secondary side). */
18128         uint32_t uio_base              : 16; /**< [ 15:  0](R/W) Upper 16 bits of I/O base (if 32-bit I/O decoding is supported for devices on the secondary side). */
18129 #else /* Word 0 - Little Endian */
18130         uint32_t uio_base              : 16; /**< [ 15:  0](R/W) Upper 16 bits of I/O base (if 32-bit I/O decoding is supported for devices on the secondary side). */
18131         uint32_t uio_limit             : 16; /**< [ 31: 16](R/W) Upper 16 bits of I/O limit (if 32-bit I/O decoding is supported for devices on the secondary side). */
18132 #endif /* Word 0 - End */
18133     } s;
18134     /* struct bdk_pciercx_iobaseu_s cn; */
18135 };
18136 typedef union bdk_pciercx_iobaseu bdk_pciercx_iobaseu_t;
18137 
18138 static inline uint64_t BDK_PCIERCX_IOBASEU(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_IOBASEU(unsigned long a)18139 static inline uint64_t BDK_PCIERCX_IOBASEU(unsigned long a)
18140 {
18141     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18142         return 0x30ll + 0x100000000ll * ((a) & 0x3);
18143     __bdk_csr_fatal("PCIERCX_IOBASEU", 1, a, 0, 0, 0);
18144 }
18145 
18146 #define typedef_BDK_PCIERCX_IOBASEU(a) bdk_pciercx_iobaseu_t
18147 #define bustype_BDK_PCIERCX_IOBASEU(a) BDK_CSR_TYPE_PCICONFIGRC
18148 #define basename_BDK_PCIERCX_IOBASEU(a) "PCIERCX_IOBASEU"
18149 #define busnum_BDK_PCIERCX_IOBASEU(a) (a)
18150 #define arguments_BDK_PCIERCX_IOBASEU(a) (a),-1,-1,-1
18151 
18152 /**
18153  * Register (PCICONFIGRC) pcierc#_l1_substates
18154  *
18155  * PCIe RC L1 Substates Timing Register
18156  */
18157 union bdk_pciercx_l1_substates
18158 {
18159     uint32_t u;
18160     struct bdk_pciercx_l1_substates_s
18161     {
18162 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18163         uint32_t reserved_8_31         : 24;
18164         uint32_t l1sub_t_pclkack       : 2;  /**< [  7:  6](R/W) Max delay (in 1 us units) between a MAC request to remove
18165                                                                  the clock on mac_phy_pclkreq_n and a PHY response on
18166                                                                  phy_mac_pclkack_n. If the PHY does not respond within this
18167                                                                  time the request is aborted. */
18168         uint32_t l1sub_t_l1_2          : 4;  /**< [  5:  2](R/W) Duration (in us) of L1.2. */
18169         uint32_t l1sub_t_power_off     : 2;  /**< [  1:  0](R/W) Duration (in us) of L1.2 entry. */
18170 #else /* Word 0 - Little Endian */
18171         uint32_t l1sub_t_power_off     : 2;  /**< [  1:  0](R/W) Duration (in us) of L1.2 entry. */
18172         uint32_t l1sub_t_l1_2          : 4;  /**< [  5:  2](R/W) Duration (in us) of L1.2. */
18173         uint32_t l1sub_t_pclkack       : 2;  /**< [  7:  6](R/W) Max delay (in 1 us units) between a MAC request to remove
18174                                                                  the clock on mac_phy_pclkreq_n and a PHY response on
18175                                                                  phy_mac_pclkack_n. If the PHY does not respond within this
18176                                                                  time the request is aborted. */
18177         uint32_t reserved_8_31         : 24;
18178 #endif /* Word 0 - End */
18179     } s;
18180     /* struct bdk_pciercx_l1_substates_s cn; */
18181 };
18182 typedef union bdk_pciercx_l1_substates bdk_pciercx_l1_substates_t;
18183 
18184 static inline uint64_t BDK_PCIERCX_L1_SUBSTATES(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_L1_SUBSTATES(unsigned long a)18185 static inline uint64_t BDK_PCIERCX_L1_SUBSTATES(unsigned long a)
18186 {
18187     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18188         return 0xb44ll + 0x100000000ll * ((a) & 0x3);
18189     __bdk_csr_fatal("PCIERCX_L1_SUBSTATES", 1, a, 0, 0, 0);
18190 }
18191 
18192 #define typedef_BDK_PCIERCX_L1_SUBSTATES(a) bdk_pciercx_l1_substates_t
18193 #define bustype_BDK_PCIERCX_L1_SUBSTATES(a) BDK_CSR_TYPE_PCICONFIGRC
18194 #define basename_BDK_PCIERCX_L1_SUBSTATES(a) "PCIERCX_L1_SUBSTATES"
18195 #define busnum_BDK_PCIERCX_L1_SUBSTATES(a) (a)
18196 #define arguments_BDK_PCIERCX_L1_SUBSTATES(a) (a),-1,-1,-1
18197 
18198 /**
18199  * Register (PCICONFIGRC) pcierc#_l1sub_cap
18200  *
18201  * PCIe RC L1 PM Substates Capability Register
18202  */
18203 union bdk_pciercx_l1sub_cap
18204 {
18205     uint32_t u;
18206     struct bdk_pciercx_l1sub_cap_s
18207     {
18208 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18209         uint32_t reserved_24_31        : 8;
18210         uint32_t pwron_val             : 5;  /**< [ 23: 19](RO/WRSL) Port T power on value.
18211                                                                  Along with [PWRON_SCALE] sets the time (in us) that this
18212                                                                  Port requires the port on the opposite side of the Link to
18213                                                                  wait in L.1.2.Exit after sampling PCI_CLKREQ_L asserted before
18214                                                                  actively driving the interface. */
18215         uint32_t reserved_18           : 1;
18216         uint32_t pwron_scale           : 2;  /**< [ 17: 16](RO/WRSL) Port T power on scale.
18217                                                                  0x0 = 2 us.
18218                                                                  0x1 = 10 us.
18219                                                                  0x2 = 100 us.
18220                                                                  0x3 = Reserved. */
18221         uint32_t com_md_supp           : 8;  /**< [ 15:  8](RO/WRSL) Port common mode restore time.
18222                                                                  Time (in us) required for this Port to reestablish
18223                                                                  common mode. */
18224         uint32_t reserved_5_7          : 3;
18225         uint32_t l1_pmsub_sup          : 1;  /**< [  4:  4](RO/WRSL) L1 PM substates ECN supported. */
18226         uint32_t l1_1_aspm_sup         : 1;  /**< [  3:  3](RO/WRSL) ASPM L11 supported. */
18227         uint32_t l1_2_aspm_sup         : 1;  /**< [  2:  2](RO/WRSL) ASPM L12 supported. */
18228         uint32_t l1_1_pcipm_sup        : 1;  /**< [  1:  1](RO/WRSL) PCI-PM L11 supported. */
18229         uint32_t l1_2_pcipm_sup        : 1;  /**< [  0:  0](RO/WRSL) PCI-PM L12 supported. */
18230 #else /* Word 0 - Little Endian */
18231         uint32_t l1_2_pcipm_sup        : 1;  /**< [  0:  0](RO/WRSL) PCI-PM L12 supported. */
18232         uint32_t l1_1_pcipm_sup        : 1;  /**< [  1:  1](RO/WRSL) PCI-PM L11 supported. */
18233         uint32_t l1_2_aspm_sup         : 1;  /**< [  2:  2](RO/WRSL) ASPM L12 supported. */
18234         uint32_t l1_1_aspm_sup         : 1;  /**< [  3:  3](RO/WRSL) ASPM L11 supported. */
18235         uint32_t l1_pmsub_sup          : 1;  /**< [  4:  4](RO/WRSL) L1 PM substates ECN supported. */
18236         uint32_t reserved_5_7          : 3;
18237         uint32_t com_md_supp           : 8;  /**< [ 15:  8](RO/WRSL) Port common mode restore time.
18238                                                                  Time (in us) required for this Port to reestablish
18239                                                                  common mode. */
18240         uint32_t pwron_scale           : 2;  /**< [ 17: 16](RO/WRSL) Port T power on scale.
18241                                                                  0x0 = 2 us.
18242                                                                  0x1 = 10 us.
18243                                                                  0x2 = 100 us.
18244                                                                  0x3 = Reserved. */
18245         uint32_t reserved_18           : 1;
18246         uint32_t pwron_val             : 5;  /**< [ 23: 19](RO/WRSL) Port T power on value.
18247                                                                  Along with [PWRON_SCALE] sets the time (in us) that this
18248                                                                  Port requires the port on the opposite side of the Link to
18249                                                                  wait in L.1.2.Exit after sampling PCI_CLKREQ_L asserted before
18250                                                                  actively driving the interface. */
18251         uint32_t reserved_24_31        : 8;
18252 #endif /* Word 0 - End */
18253     } s;
18254     /* struct bdk_pciercx_l1sub_cap_s cn; */
18255 };
18256 typedef union bdk_pciercx_l1sub_cap bdk_pciercx_l1sub_cap_t;
18257 
18258 static inline uint64_t BDK_PCIERCX_L1SUB_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_L1SUB_CAP(unsigned long a)18259 static inline uint64_t BDK_PCIERCX_L1SUB_CAP(unsigned long a)
18260 {
18261     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18262         return 0x304ll + 0x100000000ll * ((a) & 0x3);
18263     __bdk_csr_fatal("PCIERCX_L1SUB_CAP", 1, a, 0, 0, 0);
18264 }
18265 
18266 #define typedef_BDK_PCIERCX_L1SUB_CAP(a) bdk_pciercx_l1sub_cap_t
18267 #define bustype_BDK_PCIERCX_L1SUB_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
18268 #define basename_BDK_PCIERCX_L1SUB_CAP(a) "PCIERCX_L1SUB_CAP"
18269 #define busnum_BDK_PCIERCX_L1SUB_CAP(a) (a)
18270 #define arguments_BDK_PCIERCX_L1SUB_CAP(a) (a),-1,-1,-1
18271 
18272 /**
18273  * Register (PCICONFIGRC) pcierc#_l1sub_cap_hdr
18274  *
18275  * PCIe RC L1 Substates Capability Header Register
18276  */
18277 union bdk_pciercx_l1sub_cap_hdr
18278 {
18279     uint32_t u;
18280     struct bdk_pciercx_l1sub_cap_hdr_s
18281     {
18282 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18283         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
18284                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
18285         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
18286                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
18287         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
18288                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
18289 #else /* Word 0 - Little Endian */
18290         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
18291                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
18292         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
18293                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
18294         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
18295                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
18296 #endif /* Word 0 - End */
18297     } s;
18298     /* struct bdk_pciercx_l1sub_cap_hdr_s cn; */
18299 };
18300 typedef union bdk_pciercx_l1sub_cap_hdr bdk_pciercx_l1sub_cap_hdr_t;
18301 
18302 static inline uint64_t BDK_PCIERCX_L1SUB_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_L1SUB_CAP_HDR(unsigned long a)18303 static inline uint64_t BDK_PCIERCX_L1SUB_CAP_HDR(unsigned long a)
18304 {
18305     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18306         return 0x300ll + 0x100000000ll * ((a) & 0x3);
18307     __bdk_csr_fatal("PCIERCX_L1SUB_CAP_HDR", 1, a, 0, 0, 0);
18308 }
18309 
18310 #define typedef_BDK_PCIERCX_L1SUB_CAP_HDR(a) bdk_pciercx_l1sub_cap_hdr_t
18311 #define bustype_BDK_PCIERCX_L1SUB_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
18312 #define basename_BDK_PCIERCX_L1SUB_CAP_HDR(a) "PCIERCX_L1SUB_CAP_HDR"
18313 #define busnum_BDK_PCIERCX_L1SUB_CAP_HDR(a) (a)
18314 #define arguments_BDK_PCIERCX_L1SUB_CAP_HDR(a) (a),-1,-1,-1
18315 
18316 /**
18317  * Register (PCICONFIGRC) pcierc#_l1sub_ctl1
18318  *
18319  * PCIe RC L1 Substates Control 1 Register
18320  */
18321 union bdk_pciercx_l1sub_ctl1
18322 {
18323     uint32_t u;
18324     struct bdk_pciercx_l1sub_ctl1_s
18325     {
18326 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18327         uint32_t l1_2_th_sca           : 3;  /**< [ 31: 29](R/W) LTR L12 threshold scale.
18328                                                                  0x0 = 1 ns.
18329                                                                  0x1 = 32 ns.
18330                                                                  0x2 = 1024 ns.
18331                                                                  0x3 = 32,768 ns.
18332                                                                  0x4 = 1,048,575  ns.
18333                                                                  0x5 = 33,554,432 ns.
18334                                                                  0x6-7 = Reserved. */
18335         uint32_t reserved_26_28        : 3;
18336         uint32_t l1_2_th_val           : 10; /**< [ 25: 16](R/W) LTR L12 threshold value.
18337                                                                  Along with [L1_2_TH_SCA], this field indicates the LTR threshold
18338                                                                  use to determine if entry into L1 results in L1.1 (if enabled) or
18339                                                                  L1.2 (if enabled). */
18340         uint32_t t_com_mode            : 8;  /**< [ 15:  8](RO/WRSL) Common mode restore time.
18341                                                                  The value (in us), which must be used by the downstream port
18342                                                                  for timing the reestablishment of common mode. */
18343         uint32_t reserved_4_7          : 4;
18344         uint32_t l1_1_aspm_en          : 1;  /**< [  3:  3](R/W) ASPM L11 enable. */
18345         uint32_t l1_2_aspm_en          : 1;  /**< [  2:  2](R/W) ASPM L12 enable. */
18346         uint32_t l1_1_pcipm_en         : 1;  /**< [  1:  1](R/W) PCI-PM L11 enable. */
18347         uint32_t l1_2_pcipm_en         : 1;  /**< [  0:  0](R/W) PCI-PM L12 enable. */
18348 #else /* Word 0 - Little Endian */
18349         uint32_t l1_2_pcipm_en         : 1;  /**< [  0:  0](R/W) PCI-PM L12 enable. */
18350         uint32_t l1_1_pcipm_en         : 1;  /**< [  1:  1](R/W) PCI-PM L11 enable. */
18351         uint32_t l1_2_aspm_en          : 1;  /**< [  2:  2](R/W) ASPM L12 enable. */
18352         uint32_t l1_1_aspm_en          : 1;  /**< [  3:  3](R/W) ASPM L11 enable. */
18353         uint32_t reserved_4_7          : 4;
18354         uint32_t t_com_mode            : 8;  /**< [ 15:  8](RO/WRSL) Common mode restore time.
18355                                                                  The value (in us), which must be used by the downstream port
18356                                                                  for timing the reestablishment of common mode. */
18357         uint32_t l1_2_th_val           : 10; /**< [ 25: 16](R/W) LTR L12 threshold value.
18358                                                                  Along with [L1_2_TH_SCA], this field indicates the LTR threshold
18359                                                                  use to determine if entry into L1 results in L1.1 (if enabled) or
18360                                                                  L1.2 (if enabled). */
18361         uint32_t reserved_26_28        : 3;
18362         uint32_t l1_2_th_sca           : 3;  /**< [ 31: 29](R/W) LTR L12 threshold scale.
18363                                                                  0x0 = 1 ns.
18364                                                                  0x1 = 32 ns.
18365                                                                  0x2 = 1024 ns.
18366                                                                  0x3 = 32,768 ns.
18367                                                                  0x4 = 1,048,575  ns.
18368                                                                  0x5 = 33,554,432 ns.
18369                                                                  0x6-7 = Reserved. */
18370 #endif /* Word 0 - End */
18371     } s;
18372     /* struct bdk_pciercx_l1sub_ctl1_s cn; */
18373 };
18374 typedef union bdk_pciercx_l1sub_ctl1 bdk_pciercx_l1sub_ctl1_t;
18375 
18376 static inline uint64_t BDK_PCIERCX_L1SUB_CTL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_L1SUB_CTL1(unsigned long a)18377 static inline uint64_t BDK_PCIERCX_L1SUB_CTL1(unsigned long a)
18378 {
18379     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18380         return 0x308ll + 0x100000000ll * ((a) & 0x3);
18381     __bdk_csr_fatal("PCIERCX_L1SUB_CTL1", 1, a, 0, 0, 0);
18382 }
18383 
18384 #define typedef_BDK_PCIERCX_L1SUB_CTL1(a) bdk_pciercx_l1sub_ctl1_t
18385 #define bustype_BDK_PCIERCX_L1SUB_CTL1(a) BDK_CSR_TYPE_PCICONFIGRC
18386 #define basename_BDK_PCIERCX_L1SUB_CTL1(a) "PCIERCX_L1SUB_CTL1"
18387 #define busnum_BDK_PCIERCX_L1SUB_CTL1(a) (a)
18388 #define arguments_BDK_PCIERCX_L1SUB_CTL1(a) (a),-1,-1,-1
18389 
18390 /**
18391  * Register (PCICONFIGRC) pcierc#_l1sub_ctl2
18392  *
18393  * PCIe RC L1 Substates Control 2 Register
18394  */
18395 union bdk_pciercx_l1sub_ctl2
18396 {
18397     uint32_t u;
18398     struct bdk_pciercx_l1sub_ctl2_s
18399     {
18400 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18401         uint32_t reserved_8_31         : 24;
18402         uint32_t t_pwr_on_val          : 5;  /**< [  7:  3](R/W) T power on value.
18403                                                                  Along with the [T_PWR_ON_SCA], sets the minimum amount of time (in us)
18404                                                                  that the Port must wait in L.1.2.Exit after sampling PCI_CLKREQ_L asserted
18405                                                                  before actively driving the interface. */
18406         uint32_t reserved_2            : 1;
18407         uint32_t t_pwr_on_sca          : 2;  /**< [  1:  0](R/W) T power on scale.
18408                                                                  0x0 = 2 us.
18409                                                                  0x1 = 10 us.
18410                                                                  0x2 = 100 us.
18411                                                                  0x3 = Reserved. */
18412 #else /* Word 0 - Little Endian */
18413         uint32_t t_pwr_on_sca          : 2;  /**< [  1:  0](R/W) T power on scale.
18414                                                                  0x0 = 2 us.
18415                                                                  0x1 = 10 us.
18416                                                                  0x2 = 100 us.
18417                                                                  0x3 = Reserved. */
18418         uint32_t reserved_2            : 1;
18419         uint32_t t_pwr_on_val          : 5;  /**< [  7:  3](R/W) T power on value.
18420                                                                  Along with the [T_PWR_ON_SCA], sets the minimum amount of time (in us)
18421                                                                  that the Port must wait in L.1.2.Exit after sampling PCI_CLKREQ_L asserted
18422                                                                  before actively driving the interface. */
18423         uint32_t reserved_8_31         : 24;
18424 #endif /* Word 0 - End */
18425     } s;
18426     /* struct bdk_pciercx_l1sub_ctl2_s cn; */
18427 };
18428 typedef union bdk_pciercx_l1sub_ctl2 bdk_pciercx_l1sub_ctl2_t;
18429 
18430 static inline uint64_t BDK_PCIERCX_L1SUB_CTL2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_L1SUB_CTL2(unsigned long a)18431 static inline uint64_t BDK_PCIERCX_L1SUB_CTL2(unsigned long a)
18432 {
18433     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18434         return 0x30cll + 0x100000000ll * ((a) & 0x3);
18435     __bdk_csr_fatal("PCIERCX_L1SUB_CTL2", 1, a, 0, 0, 0);
18436 }
18437 
18438 #define typedef_BDK_PCIERCX_L1SUB_CTL2(a) bdk_pciercx_l1sub_ctl2_t
18439 #define bustype_BDK_PCIERCX_L1SUB_CTL2(a) BDK_CSR_TYPE_PCICONFIGRC
18440 #define basename_BDK_PCIERCX_L1SUB_CTL2(a) "PCIERCX_L1SUB_CTL2"
18441 #define busnum_BDK_PCIERCX_L1SUB_CTL2(a) (a)
18442 #define arguments_BDK_PCIERCX_L1SUB_CTL2(a) (a),-1,-1,-1
18443 
18444 /**
18445  * Register (PCICONFIGRC) pcierc#_lane_skew
18446  *
18447  * PCIe RC Lane Skew Register
18448  */
18449 union bdk_pciercx_lane_skew
18450 {
18451     uint32_t u;
18452     struct bdk_pciercx_lane_skew_s
18453     {
18454 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18455         uint32_t dlld                  : 1;  /**< [ 31: 31](R/W) Disable lane-to-lane deskew. Disables the internal lane-to-lane deskew logic. */
18456         uint32_t inuml                 : 4;  /**< [ 30: 27](R/W) Implemented number of lanes (minus one). */
18457         uint32_t lane_skew             : 1;  /**< [ 26: 26](R/W) Reserved. */
18458         uint32_t ack_nak               : 1;  /**< [ 25: 25](R/W) ACK/NAK disable. Prevents the PCI Express bus from sending Ack and Nak DLLPs. */
18459         uint32_t fcd                   : 1;  /**< [ 24: 24](R/W) Flow control disable. Prevents the PCI Express bus from sending FC DLLPs. */
18460         uint32_t ilst                  : 24; /**< [ 23:  0](R/W) Insert lane skew for transmit (not supported for *16). Causes skew between lanes for test
18461                                                                  purposes. There are three bits per lane. The value is in units of one symbol time. For
18462                                                                  example, the value 0x2 for a lane forces a skew of two symbol times for that lane. The
18463                                                                  maximum skew value for any lane is five symbol times. */
18464 #else /* Word 0 - Little Endian */
18465         uint32_t ilst                  : 24; /**< [ 23:  0](R/W) Insert lane skew for transmit (not supported for *16). Causes skew between lanes for test
18466                                                                  purposes. There are three bits per lane. The value is in units of one symbol time. For
18467                                                                  example, the value 0x2 for a lane forces a skew of two symbol times for that lane. The
18468                                                                  maximum skew value for any lane is five symbol times. */
18469         uint32_t fcd                   : 1;  /**< [ 24: 24](R/W) Flow control disable. Prevents the PCI Express bus from sending FC DLLPs. */
18470         uint32_t ack_nak               : 1;  /**< [ 25: 25](R/W) ACK/NAK disable. Prevents the PCI Express bus from sending Ack and Nak DLLPs. */
18471         uint32_t lane_skew             : 1;  /**< [ 26: 26](R/W) Reserved. */
18472         uint32_t inuml                 : 4;  /**< [ 30: 27](R/W) Implemented number of lanes (minus one). */
18473         uint32_t dlld                  : 1;  /**< [ 31: 31](R/W) Disable lane-to-lane deskew. Disables the internal lane-to-lane deskew logic. */
18474 #endif /* Word 0 - End */
18475     } s;
18476     /* struct bdk_pciercx_lane_skew_s cn; */
18477 };
18478 typedef union bdk_pciercx_lane_skew bdk_pciercx_lane_skew_t;
18479 
18480 static inline uint64_t BDK_PCIERCX_LANE_SKEW(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_LANE_SKEW(unsigned long a)18481 static inline uint64_t BDK_PCIERCX_LANE_SKEW(unsigned long a)
18482 {
18483     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18484         return 0x714ll + 0x100000000ll * ((a) & 0x3);
18485     __bdk_csr_fatal("PCIERCX_LANE_SKEW", 1, a, 0, 0, 0);
18486 }
18487 
18488 #define typedef_BDK_PCIERCX_LANE_SKEW(a) bdk_pciercx_lane_skew_t
18489 #define bustype_BDK_PCIERCX_LANE_SKEW(a) BDK_CSR_TYPE_PCICONFIGRC
18490 #define basename_BDK_PCIERCX_LANE_SKEW(a) "PCIERCX_LANE_SKEW"
18491 #define busnum_BDK_PCIERCX_LANE_SKEW(a) (a)
18492 #define arguments_BDK_PCIERCX_LANE_SKEW(a) (a),-1,-1,-1
18493 
18494 /**
18495  * Register (PCICONFIGRC) pcierc#_link_cap
18496  *
18497  * PCIe RC Link Capabilities Register
18498  */
18499 union bdk_pciercx_link_cap
18500 {
18501     uint32_t u;
18502     struct bdk_pciercx_link_cap_s
18503     {
18504 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18505         uint32_t pnum                  : 8;  /**< [ 31: 24](RO/WRSL) Port number, writable through PEM()_CFG_WR. However, the application must not change
18506                                                                  this field. */
18507         uint32_t reserved_23           : 1;
18508         uint32_t aspm                  : 1;  /**< [ 22: 22](RO/WRSL) ASPM optionality compliance. */
18509         uint32_t lbnc                  : 1;  /**< [ 21: 21](RO/WRSL) Link bandwidth notification capability. */
18510         uint32_t dllarc                : 1;  /**< [ 20: 20](RO) Data link layer active reporting capable. Set to one for root complex devices and 0 for
18511                                                                  endpoint devices. */
18512         uint32_t sderc                 : 1;  /**< [ 19: 19](RO/WRSL) Surprise down error reporting capable.  Set to one for root complex devices and 0 for
18513                                                                  endpoint devices. */
18514         uint32_t cpm                   : 1;  /**< [ 18: 18](RO) Clock power management. Set to 0 for root complex devices. */
18515         uint32_t l1el                  : 3;  /**< [ 17: 15](RO/WRSL) L1 exit latency. The default value is the value that software specifies during hardware
18516                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
18517                                                                  this field. */
18518         uint32_t l0el                  : 3;  /**< [ 14: 12](RO/WRSL) L0s exit latency. The default value is the value that software
18519                                                                  specifies during hardware configuration, writable through PEM()_CFG_WR. */
18520         uint32_t aslpms                : 2;  /**< [ 11: 10](RO/WRSL) Active state link PM support. Only L1 is supported (L0s not supported).
18521                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
18522         uint32_t mlw                   : 6;  /**< [  9:  4](RO/WRSL/H) Maximum link width.  Legal encodings are 0x1 (l lane), 0x2 (2 lanes), 0x4 (4 lanes),
18523                                                                  0x8 (8 lanes), and 0x10 (16 lanes).  Some encodings may not be legal for all PEMs.
18524                                                                  This field is writable through PEM()_CFG_WR. */
18525         uint32_t mls                   : 4;  /**< [  3:  0](RO/WRSL) Maximum link speed.
18526 
18527                                                                  0x1 = 2.5 GHz supported.
18528                                                                  0x2 = 5.0 GHz and 2.5 GHz supported.
18529                                                                  0x3 = 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
18530                                                                  0x4 = 16.0 GHz, 8.0 Ghz, 5.0 GHz, and 2.5 GHz supported.
18531 
18532                                                                  This field is writable through PEM()_CFG_WR. */
18533 #else /* Word 0 - Little Endian */
18534         uint32_t mls                   : 4;  /**< [  3:  0](RO/WRSL) Maximum link speed.
18535 
18536                                                                  0x1 = 2.5 GHz supported.
18537                                                                  0x2 = 5.0 GHz and 2.5 GHz supported.
18538                                                                  0x3 = 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
18539                                                                  0x4 = 16.0 GHz, 8.0 Ghz, 5.0 GHz, and 2.5 GHz supported.
18540 
18541                                                                  This field is writable through PEM()_CFG_WR. */
18542         uint32_t mlw                   : 6;  /**< [  9:  4](RO/WRSL/H) Maximum link width.  Legal encodings are 0x1 (l lane), 0x2 (2 lanes), 0x4 (4 lanes),
18543                                                                  0x8 (8 lanes), and 0x10 (16 lanes).  Some encodings may not be legal for all PEMs.
18544                                                                  This field is writable through PEM()_CFG_WR. */
18545         uint32_t aslpms                : 2;  /**< [ 11: 10](RO/WRSL) Active state link PM support. Only L1 is supported (L0s not supported).
18546                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
18547         uint32_t l0el                  : 3;  /**< [ 14: 12](RO/WRSL) L0s exit latency. The default value is the value that software
18548                                                                  specifies during hardware configuration, writable through PEM()_CFG_WR. */
18549         uint32_t l1el                  : 3;  /**< [ 17: 15](RO/WRSL) L1 exit latency. The default value is the value that software specifies during hardware
18550                                                                  configuration, writable through PEM()_CFG_WR. However, the application must not change
18551                                                                  this field. */
18552         uint32_t cpm                   : 1;  /**< [ 18: 18](RO) Clock power management. Set to 0 for root complex devices. */
18553         uint32_t sderc                 : 1;  /**< [ 19: 19](RO/WRSL) Surprise down error reporting capable.  Set to one for root complex devices and 0 for
18554                                                                  endpoint devices. */
18555         uint32_t dllarc                : 1;  /**< [ 20: 20](RO) Data link layer active reporting capable. Set to one for root complex devices and 0 for
18556                                                                  endpoint devices. */
18557         uint32_t lbnc                  : 1;  /**< [ 21: 21](RO/WRSL) Link bandwidth notification capability. */
18558         uint32_t aspm                  : 1;  /**< [ 22: 22](RO/WRSL) ASPM optionality compliance. */
18559         uint32_t reserved_23           : 1;
18560         uint32_t pnum                  : 8;  /**< [ 31: 24](RO/WRSL) Port number, writable through PEM()_CFG_WR. However, the application must not change
18561                                                                  this field. */
18562 #endif /* Word 0 - End */
18563     } s;
18564     /* struct bdk_pciercx_link_cap_s cn; */
18565 };
18566 typedef union bdk_pciercx_link_cap bdk_pciercx_link_cap_t;
18567 
18568 static inline uint64_t BDK_PCIERCX_LINK_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_LINK_CAP(unsigned long a)18569 static inline uint64_t BDK_PCIERCX_LINK_CAP(unsigned long a)
18570 {
18571     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18572         return 0x7cll + 0x100000000ll * ((a) & 0x3);
18573     __bdk_csr_fatal("PCIERCX_LINK_CAP", 1, a, 0, 0, 0);
18574 }
18575 
18576 #define typedef_BDK_PCIERCX_LINK_CAP(a) bdk_pciercx_link_cap_t
18577 #define bustype_BDK_PCIERCX_LINK_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
18578 #define basename_BDK_PCIERCX_LINK_CAP(a) "PCIERCX_LINK_CAP"
18579 #define busnum_BDK_PCIERCX_LINK_CAP(a) (a)
18580 #define arguments_BDK_PCIERCX_LINK_CAP(a) (a),-1,-1,-1
18581 
18582 /**
18583  * Register (PCICONFIGRC) pcierc#_link_cap2
18584  *
18585  * PCIe RC Link Capabilities 2 Register
18586  */
18587 union bdk_pciercx_link_cap2
18588 {
18589     uint32_t u;
18590     struct bdk_pciercx_link_cap2_s
18591     {
18592 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18593         uint32_t reserved_25_31        : 7;
18594         uint32_t trtds                 : 1;  /**< [ 24: 24](RO/WRSL) Two retimers presence detect supported. */
18595         uint32_t rtds                  : 1;  /**< [ 23: 23](RO/WRSL) Retimer presence detect supported. */
18596         uint32_t reserved_9_22         : 14;
18597         uint32_t cls                   : 1;  /**< [  8:  8](RO) Crosslink supported. */
18598         uint32_t slsv                  : 7;  /**< [  7:  1](RO/WRSL) Supported link speeds vector. Indicates the supported link speeds of the associated port.
18599                                                                  For each bit, a value of 1 b indicates that the corresponding link speed is supported;
18600                                                                  otherwise, the link speed is not supported. Bit definitions are:
18601 
18602                                                                  _ Bit \<1\> = 2.5 GT/s.
18603                                                                  _ Bit \<2\> = 5.0 GT/s.
18604                                                                  _ Bit \<3\> = 8.0 GT/s.
18605                                                                  _ Bit \<4\> = 16.0 GT/s
18606 
18607                                                                  _ Bits \<7:5\> are reserved. */
18608         uint32_t reserved_0            : 1;
18609 #else /* Word 0 - Little Endian */
18610         uint32_t reserved_0            : 1;
18611         uint32_t slsv                  : 7;  /**< [  7:  1](RO/WRSL) Supported link speeds vector. Indicates the supported link speeds of the associated port.
18612                                                                  For each bit, a value of 1 b indicates that the corresponding link speed is supported;
18613                                                                  otherwise, the link speed is not supported. Bit definitions are:
18614 
18615                                                                  _ Bit \<1\> = 2.5 GT/s.
18616                                                                  _ Bit \<2\> = 5.0 GT/s.
18617                                                                  _ Bit \<3\> = 8.0 GT/s.
18618                                                                  _ Bit \<4\> = 16.0 GT/s
18619 
18620                                                                  _ Bits \<7:5\> are reserved. */
18621         uint32_t cls                   : 1;  /**< [  8:  8](RO) Crosslink supported. */
18622         uint32_t reserved_9_22         : 14;
18623         uint32_t rtds                  : 1;  /**< [ 23: 23](RO/WRSL) Retimer presence detect supported. */
18624         uint32_t trtds                 : 1;  /**< [ 24: 24](RO/WRSL) Two retimers presence detect supported. */
18625         uint32_t reserved_25_31        : 7;
18626 #endif /* Word 0 - End */
18627     } s;
18628     /* struct bdk_pciercx_link_cap2_s cn; */
18629 };
18630 typedef union bdk_pciercx_link_cap2 bdk_pciercx_link_cap2_t;
18631 
18632 static inline uint64_t BDK_PCIERCX_LINK_CAP2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_LINK_CAP2(unsigned long a)18633 static inline uint64_t BDK_PCIERCX_LINK_CAP2(unsigned long a)
18634 {
18635     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18636         return 0x9cll + 0x100000000ll * ((a) & 0x3);
18637     __bdk_csr_fatal("PCIERCX_LINK_CAP2", 1, a, 0, 0, 0);
18638 }
18639 
18640 #define typedef_BDK_PCIERCX_LINK_CAP2(a) bdk_pciercx_link_cap2_t
18641 #define bustype_BDK_PCIERCX_LINK_CAP2(a) BDK_CSR_TYPE_PCICONFIGRC
18642 #define basename_BDK_PCIERCX_LINK_CAP2(a) "PCIERCX_LINK_CAP2"
18643 #define busnum_BDK_PCIERCX_LINK_CAP2(a) (a)
18644 #define arguments_BDK_PCIERCX_LINK_CAP2(a) (a),-1,-1,-1
18645 
18646 /**
18647  * Register (PCICONFIGRC) pcierc#_link_ctl
18648  *
18649  * PCIe RC Link Control/Link Status Register
18650  */
18651 union bdk_pciercx_link_ctl
18652 {
18653     uint32_t u;
18654     struct bdk_pciercx_link_ctl_s
18655     {
18656 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18657         uint32_t lab                   : 1;  /**< [ 31: 31](R/W1C/H) Link autonomous bandwidth status. This bit is set to indicate that hardware has
18658                                                                  autonomously changed link speed or width, without the port transitioning through DL_Down
18659                                                                  status, for reasons other than to attempt to correct unreliable link operation. */
18660         uint32_t lbm                   : 1;  /**< [ 30: 30](R/W1C/H) Link bandwidth management status. This bit is set to indicate either of the following has
18661                                                                  occurred without the port transitioning through DL_Down status:
18662 
18663                                                                  * A link retraining has completed following a write of 1b to the retrain link bit.
18664 
18665                                                                  * Hardware has changed the Link speed or width to attempt to correct unreliable link
18666                                                                  operation, either through a LTSSM timeout of higher level process. This bit must be set if
18667                                                                  the physical layer reports a speed or width change was initiated by the downstream
18668                                                                  component that was not indicated as an autonomous change. */
18669         uint32_t dlla                  : 1;  /**< [ 29: 29](RO/H) Data link layer active. */
18670         uint32_t scc                   : 1;  /**< [ 28: 28](RO/WRSL) Slot clock configuration. Indicates that the component uses the same physical reference
18671                                                                  clock that the platform provides on the connector. The default value is the value
18672                                                                  selected during hardware configuration, writable through PEM()_CFG_WR. However, the
18673                                                                  application must not change this field. */
18674         uint32_t lt                    : 1;  /**< [ 27: 27](RO/H) Link training. */
18675         uint32_t reserved_26           : 1;
18676         uint32_t nlw                   : 6;  /**< [ 25: 20](RO/H) Negotiated link width. Set automatically by hardware after link initialization. Value is
18677                                                                  undefined when link is not up. */
18678         uint32_t ls                    : 4;  /**< [ 19: 16](RO/H) Current link speed. The encoded value specifies a bit location in the supported link
18679                                                                  speeds vector (in the link capabilities 2 register) that corresponds to the current link
18680                                                                  speed.
18681                                                                  0x1 = Supported link speeds vector field bit 0.
18682                                                                  0x2 = Supported link speeds vector field bit 1.
18683                                                                  0x3 = Supported link speeds vector field bit 2.
18684                                                                  0x4 = Supported link speeds vector field bit 3. */
18685         uint32_t drs_ctl               : 2;  /**< [ 15: 14](RO) DRS signaling control. */
18686         uint32_t reserved_12_13        : 2;
18687         uint32_t lab_int_enb           : 1;  /**< [ 11: 11](R/W) Link autonomous bandwidth interrupt enable. When set, enables the generation of an
18688                                                                  interrupt to indicate that the link autonomous bandwidth status bit has been set. */
18689         uint32_t lbm_int_enb           : 1;  /**< [ 10: 10](R/W) Link bandwidth management interrupt enable. When set, enables the generation of an
18690                                                                  interrupt to indicate that the link bandwidth management status bit has been set. */
18691         uint32_t hawd                  : 1;  /**< [  9:  9](R/W) Hardware autonomous width disable. */
18692         uint32_t ecpm                  : 1;  /**< [  8:  8](R/W/H) Enable clock power management. Hardwired to 0 if clock power management is disabled in the
18693                                                                  link capabilities register. */
18694         uint32_t es                    : 1;  /**< [  7:  7](R/W) Extended synch. */
18695         uint32_t ccc                   : 1;  /**< [  6:  6](R/W) Common clock configuration. */
18696         uint32_t rl                    : 1;  /**< [  5:  5](R/W/H) Retrain link.
18697                                                                  As per the PCIe specification this bit always reads as zero. */
18698         uint32_t ld                    : 1;  /**< [  4:  4](R/W) Link disable. */
18699         uint32_t rcb                   : 1;  /**< [  3:  3](RO/WRSL) Read completion boundary (RCB), writable through PEM()_CFG_WR.
18700                                                                  However, the application must not change this field because an RCB of 64
18701                                                                  bytes is not supported. */
18702         uint32_t reserved_2            : 1;
18703         uint32_t aslpc                 : 2;  /**< [  1:  0](R/W) Active state link PM control. */
18704 #else /* Word 0 - Little Endian */
18705         uint32_t aslpc                 : 2;  /**< [  1:  0](R/W) Active state link PM control. */
18706         uint32_t reserved_2            : 1;
18707         uint32_t rcb                   : 1;  /**< [  3:  3](RO/WRSL) Read completion boundary (RCB), writable through PEM()_CFG_WR.
18708                                                                  However, the application must not change this field because an RCB of 64
18709                                                                  bytes is not supported. */
18710         uint32_t ld                    : 1;  /**< [  4:  4](R/W) Link disable. */
18711         uint32_t rl                    : 1;  /**< [  5:  5](R/W/H) Retrain link.
18712                                                                  As per the PCIe specification this bit always reads as zero. */
18713         uint32_t ccc                   : 1;  /**< [  6:  6](R/W) Common clock configuration. */
18714         uint32_t es                    : 1;  /**< [  7:  7](R/W) Extended synch. */
18715         uint32_t ecpm                  : 1;  /**< [  8:  8](R/W/H) Enable clock power management. Hardwired to 0 if clock power management is disabled in the
18716                                                                  link capabilities register. */
18717         uint32_t hawd                  : 1;  /**< [  9:  9](R/W) Hardware autonomous width disable. */
18718         uint32_t lbm_int_enb           : 1;  /**< [ 10: 10](R/W) Link bandwidth management interrupt enable. When set, enables the generation of an
18719                                                                  interrupt to indicate that the link bandwidth management status bit has been set. */
18720         uint32_t lab_int_enb           : 1;  /**< [ 11: 11](R/W) Link autonomous bandwidth interrupt enable. When set, enables the generation of an
18721                                                                  interrupt to indicate that the link autonomous bandwidth status bit has been set. */
18722         uint32_t reserved_12_13        : 2;
18723         uint32_t drs_ctl               : 2;  /**< [ 15: 14](RO) DRS signaling control. */
18724         uint32_t ls                    : 4;  /**< [ 19: 16](RO/H) Current link speed. The encoded value specifies a bit location in the supported link
18725                                                                  speeds vector (in the link capabilities 2 register) that corresponds to the current link
18726                                                                  speed.
18727                                                                  0x1 = Supported link speeds vector field bit 0.
18728                                                                  0x2 = Supported link speeds vector field bit 1.
18729                                                                  0x3 = Supported link speeds vector field bit 2.
18730                                                                  0x4 = Supported link speeds vector field bit 3. */
18731         uint32_t nlw                   : 6;  /**< [ 25: 20](RO/H) Negotiated link width. Set automatically by hardware after link initialization. Value is
18732                                                                  undefined when link is not up. */
18733         uint32_t reserved_26           : 1;
18734         uint32_t lt                    : 1;  /**< [ 27: 27](RO/H) Link training. */
18735         uint32_t scc                   : 1;  /**< [ 28: 28](RO/WRSL) Slot clock configuration. Indicates that the component uses the same physical reference
18736                                                                  clock that the platform provides on the connector. The default value is the value
18737                                                                  selected during hardware configuration, writable through PEM()_CFG_WR. However, the
18738                                                                  application must not change this field. */
18739         uint32_t dlla                  : 1;  /**< [ 29: 29](RO/H) Data link layer active. */
18740         uint32_t lbm                   : 1;  /**< [ 30: 30](R/W1C/H) Link bandwidth management status. This bit is set to indicate either of the following has
18741                                                                  occurred without the port transitioning through DL_Down status:
18742 
18743                                                                  * A link retraining has completed following a write of 1b to the retrain link bit.
18744 
18745                                                                  * Hardware has changed the Link speed or width to attempt to correct unreliable link
18746                                                                  operation, either through a LTSSM timeout of higher level process. This bit must be set if
18747                                                                  the physical layer reports a speed or width change was initiated by the downstream
18748                                                                  component that was not indicated as an autonomous change. */
18749         uint32_t lab                   : 1;  /**< [ 31: 31](R/W1C/H) Link autonomous bandwidth status. This bit is set to indicate that hardware has
18750                                                                  autonomously changed link speed or width, without the port transitioning through DL_Down
18751                                                                  status, for reasons other than to attempt to correct unreliable link operation. */
18752 #endif /* Word 0 - End */
18753     } s;
18754     /* struct bdk_pciercx_link_ctl_s cn; */
18755 };
18756 typedef union bdk_pciercx_link_ctl bdk_pciercx_link_ctl_t;
18757 
18758 static inline uint64_t BDK_PCIERCX_LINK_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_LINK_CTL(unsigned long a)18759 static inline uint64_t BDK_PCIERCX_LINK_CTL(unsigned long a)
18760 {
18761     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18762         return 0x80ll + 0x100000000ll * ((a) & 0x3);
18763     __bdk_csr_fatal("PCIERCX_LINK_CTL", 1, a, 0, 0, 0);
18764 }
18765 
18766 #define typedef_BDK_PCIERCX_LINK_CTL(a) bdk_pciercx_link_ctl_t
18767 #define bustype_BDK_PCIERCX_LINK_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
18768 #define basename_BDK_PCIERCX_LINK_CTL(a) "PCIERCX_LINK_CTL"
18769 #define busnum_BDK_PCIERCX_LINK_CTL(a) (a)
18770 #define arguments_BDK_PCIERCX_LINK_CTL(a) (a),-1,-1,-1
18771 
18772 /**
18773  * Register (PCICONFIGRC) pcierc#_link_ctl2
18774  *
18775  * PCIe RC Link Control 2 Register/Link Status 2 Register
18776  */
18777 union bdk_pciercx_link_ctl2
18778 {
18779     uint32_t u;
18780     struct bdk_pciercx_link_ctl2_s
18781     {
18782 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18783         uint32_t drs_mr                : 1;  /**< [ 31: 31](R/W1C) DRS message received. */
18784         uint32_t dcp                   : 3;  /**< [ 30: 28](RO) Downstream component presence. */
18785         uint32_t reserved_26_27        : 2;
18786         uint32_t crossl                : 2;  /**< [ 25: 24](RO) Crosslink resolution (not supported). */
18787         uint32_t trtd                  : 1;  /**< [ 23: 23](RO) Two retimers presence detected. */
18788         uint32_t rtd                   : 1;  /**< [ 22: 22](RO) Retimer presence detected. */
18789         uint32_t ler                   : 1;  /**< [ 21: 21](R/W1C/H) Link equalization request 8.0 GT/s. */
18790         uint32_t ep3s                  : 1;  /**< [ 20: 20](RO/H) Equalization 8.0 GT/s phase 3 successful. */
18791         uint32_t ep2s                  : 1;  /**< [ 19: 19](RO/H) Equalization 8.0 GT/s phase 2 successful. */
18792         uint32_t ep1s                  : 1;  /**< [ 18: 18](RO/H) Equalization 8.0 GT/s phase 1 successful. */
18793         uint32_t eqc                   : 1;  /**< [ 17: 17](RO/H) Equalization 8.0 GT/s complete. */
18794         uint32_t cdl                   : 1;  /**< [ 16: 16](RO/H) Current deemphasis level. When the link is operating at 5 GT/s speed, this bit reflects
18795                                                                  the level of deemphasis.
18796                                                                  0 = -6 dB.
18797                                                                  1 = -3.5 dB.
18798 
18799                                                                  The value in this bit is undefined when the link is operating at 2.5 GT/s speed. */
18800         uint32_t cde                   : 4;  /**< [ 15: 12](R/W) Compliance deemphasis. This bit sets the deemphasis level in Polling.Compliance state if
18801                                                                  the entry occurred due to the TX compliance receive bit being one.
18802                                                                  0x0 = -6 dB.
18803                                                                  0x1 = -3.5 dB.
18804 
18805                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
18806         uint32_t csos                  : 1;  /**< [ 11: 11](R/W) Compliance SOS. When set to one, the LTSSM is required to send SKP ordered sets periodically
18807                                                                  in between the (modified) compliance patterns.
18808 
18809                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
18810         uint32_t emc                   : 1;  /**< [ 10: 10](R/W) Enter modified compliance. When this bit is set to one, the device transmits a modified
18811                                                                  compliance pattern if the LTSSM enters Polling.Compliance state. */
18812         uint32_t tm                    : 3;  /**< [  9:  7](R/W/H) Transmit margin. This field controls the value of the non-deemphasized voltage level at
18813                                                                  the transmitter pins:
18814                                                                  0x0 =  800-1200 mV for full swing 400-600 mV for half-swing.
18815                                                                  0x1-0x2 = Values must be monotonic with a nonzero slope.
18816                                                                  0x3 = 200-400 mV for full-swing and 100-200 mV for half-swing.
18817                                                                  0x4-0x7 = Reserved.
18818 
18819                                                                  This field is reset to 0x0 on entry to the LTSSM Polling.Compliance substate. When
18820                                                                  operating in 5.0 GT/s mode with full swing, the deemphasis ratio must be maintained within
18821                                                                  +/- 1 dB from the specification-defined operational value either -3.5 or -6 dB. */
18822         uint32_t sde                   : 1;  /**< [  6:  6](RO/WRSL) Selectable deemphasis. When the link is operating at 5.0 GT/s speed, selects the level of
18823                                                                  deemphasis on the downstream device.  Must be set prior to link training.
18824                                                                  0 = -6 dB.
18825                                                                  1 = -3.5 dB.
18826 
18827                                                                  When the link is operating at 2.5 GT/s speed, the setting of this bit has no effect.
18828 
18829                                                                  PCIERC_GEN2_PORT[S_D_E] can be used to change the deemphasis on the upstream ports. */
18830         uint32_t hasd                  : 1;  /**< [  5:  5](R/W) Hardware autonomous speed disable. When asserted, the application must disable hardware
18831                                                                  from changing the link speed for device-specific reasons other than attempting to correct
18832                                                                  unreliable link operation by reducing link speed. Initial transition to the highest
18833                                                                  supported common link speed is not blocked by this signal. */
18834         uint32_t ec                    : 1;  /**< [  4:  4](R/W) Enter compliance. Software is permitted to force a link to enter compliance mode at the
18835                                                                  speed indicated in the target link speed field by setting this bit to one in both components
18836                                                                  on a link and then initiating a hot reset on the link. */
18837         uint32_t tls                   : 4;  /**< [  3:  0](R/W) Target link speed. For downstream ports, this field sets an upper limit on link
18838                                                                  operational speed by restricting the values advertised by the upstream component in its
18839                                                                  training sequences:
18840 
18841                                                                  0x1 = 2.5 Gb/s target link speed.
18842                                                                  0x2 = 5 Gb/s target link speed.
18843                                                                  0x3 = 8 Gb/s target link speed.
18844                                                                  0x4 = 16 Gb/s target link speed.
18845 
18846                                                                  All other encodings are reserved.
18847 
18848                                                                  If a value is written to this field that does not correspond to a speed included in the
18849                                                                  supported link speeds field, the result is undefined. For both upstream and downstream
18850                                                                  ports, this field is used to set the target compliance mode speed when software is using
18851                                                                  the enter compliance bit to force a link into compliance mode.
18852 
18853                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
18854 
18855                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
18856 
18857                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
18858 
18859                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
18860 #else /* Word 0 - Little Endian */
18861         uint32_t tls                   : 4;  /**< [  3:  0](R/W) Target link speed. For downstream ports, this field sets an upper limit on link
18862                                                                  operational speed by restricting the values advertised by the upstream component in its
18863                                                                  training sequences:
18864 
18865                                                                  0x1 = 2.5 Gb/s target link speed.
18866                                                                  0x2 = 5 Gb/s target link speed.
18867                                                                  0x3 = 8 Gb/s target link speed.
18868                                                                  0x4 = 16 Gb/s target link speed.
18869 
18870                                                                  All other encodings are reserved.
18871 
18872                                                                  If a value is written to this field that does not correspond to a speed included in the
18873                                                                  supported link speeds field, the result is undefined. For both upstream and downstream
18874                                                                  ports, this field is used to set the target compliance mode speed when software is using
18875                                                                  the enter compliance bit to force a link into compliance mode.
18876 
18877                                                                  _ MD is 0x0, reset to 0x1: 2.5 GHz supported.
18878 
18879                                                                  _ MD is 0x1, reset to 0x2: 5.0 GHz and 2.5 GHz supported.
18880 
18881                                                                  _ MD is 0x2, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported.
18882 
18883                                                                  _ MD is 0x3, reset to 0x3: 8.0 GHz, 5.0 GHz and 2.5 GHz supported (RC Mode). */
18884         uint32_t ec                    : 1;  /**< [  4:  4](R/W) Enter compliance. Software is permitted to force a link to enter compliance mode at the
18885                                                                  speed indicated in the target link speed field by setting this bit to one in both components
18886                                                                  on a link and then initiating a hot reset on the link. */
18887         uint32_t hasd                  : 1;  /**< [  5:  5](R/W) Hardware autonomous speed disable. When asserted, the application must disable hardware
18888                                                                  from changing the link speed for device-specific reasons other than attempting to correct
18889                                                                  unreliable link operation by reducing link speed. Initial transition to the highest
18890                                                                  supported common link speed is not blocked by this signal. */
18891         uint32_t sde                   : 1;  /**< [  6:  6](RO/WRSL) Selectable deemphasis. When the link is operating at 5.0 GT/s speed, selects the level of
18892                                                                  deemphasis on the downstream device.  Must be set prior to link training.
18893                                                                  0 = -6 dB.
18894                                                                  1 = -3.5 dB.
18895 
18896                                                                  When the link is operating at 2.5 GT/s speed, the setting of this bit has no effect.
18897 
18898                                                                  PCIERC_GEN2_PORT[S_D_E] can be used to change the deemphasis on the upstream ports. */
18899         uint32_t tm                    : 3;  /**< [  9:  7](R/W/H) Transmit margin. This field controls the value of the non-deemphasized voltage level at
18900                                                                  the transmitter pins:
18901                                                                  0x0 =  800-1200 mV for full swing 400-600 mV for half-swing.
18902                                                                  0x1-0x2 = Values must be monotonic with a nonzero slope.
18903                                                                  0x3 = 200-400 mV for full-swing and 100-200 mV for half-swing.
18904                                                                  0x4-0x7 = Reserved.
18905 
18906                                                                  This field is reset to 0x0 on entry to the LTSSM Polling.Compliance substate. When
18907                                                                  operating in 5.0 GT/s mode with full swing, the deemphasis ratio must be maintained within
18908                                                                  +/- 1 dB from the specification-defined operational value either -3.5 or -6 dB. */
18909         uint32_t emc                   : 1;  /**< [ 10: 10](R/W) Enter modified compliance. When this bit is set to one, the device transmits a modified
18910                                                                  compliance pattern if the LTSSM enters Polling.Compliance state. */
18911         uint32_t csos                  : 1;  /**< [ 11: 11](R/W) Compliance SOS. When set to one, the LTSSM is required to send SKP ordered sets periodically
18912                                                                  in between the (modified) compliance patterns.
18913 
18914                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
18915         uint32_t cde                   : 4;  /**< [ 15: 12](R/W) Compliance deemphasis. This bit sets the deemphasis level in Polling.Compliance state if
18916                                                                  the entry occurred due to the TX compliance receive bit being one.
18917                                                                  0x0 = -6 dB.
18918                                                                  0x1 = -3.5 dB.
18919 
18920                                                                  When the link is operating at 2.5 GT/s, the setting of this bit has no effect. */
18921         uint32_t cdl                   : 1;  /**< [ 16: 16](RO/H) Current deemphasis level. When the link is operating at 5 GT/s speed, this bit reflects
18922                                                                  the level of deemphasis.
18923                                                                  0 = -6 dB.
18924                                                                  1 = -3.5 dB.
18925 
18926                                                                  The value in this bit is undefined when the link is operating at 2.5 GT/s speed. */
18927         uint32_t eqc                   : 1;  /**< [ 17: 17](RO/H) Equalization 8.0 GT/s complete. */
18928         uint32_t ep1s                  : 1;  /**< [ 18: 18](RO/H) Equalization 8.0 GT/s phase 1 successful. */
18929         uint32_t ep2s                  : 1;  /**< [ 19: 19](RO/H) Equalization 8.0 GT/s phase 2 successful. */
18930         uint32_t ep3s                  : 1;  /**< [ 20: 20](RO/H) Equalization 8.0 GT/s phase 3 successful. */
18931         uint32_t ler                   : 1;  /**< [ 21: 21](R/W1C/H) Link equalization request 8.0 GT/s. */
18932         uint32_t rtd                   : 1;  /**< [ 22: 22](RO) Retimer presence detected. */
18933         uint32_t trtd                  : 1;  /**< [ 23: 23](RO) Two retimers presence detected. */
18934         uint32_t crossl                : 2;  /**< [ 25: 24](RO) Crosslink resolution (not supported). */
18935         uint32_t reserved_26_27        : 2;
18936         uint32_t dcp                   : 3;  /**< [ 30: 28](RO) Downstream component presence. */
18937         uint32_t drs_mr                : 1;  /**< [ 31: 31](R/W1C) DRS message received. */
18938 #endif /* Word 0 - End */
18939     } s;
18940     /* struct bdk_pciercx_link_ctl2_s cn; */
18941 };
18942 typedef union bdk_pciercx_link_ctl2 bdk_pciercx_link_ctl2_t;
18943 
18944 static inline uint64_t BDK_PCIERCX_LINK_CTL2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_LINK_CTL2(unsigned long a)18945 static inline uint64_t BDK_PCIERCX_LINK_CTL2(unsigned long a)
18946 {
18947     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18948         return 0xa0ll + 0x100000000ll * ((a) & 0x3);
18949     __bdk_csr_fatal("PCIERCX_LINK_CTL2", 1, a, 0, 0, 0);
18950 }
18951 
18952 #define typedef_BDK_PCIERCX_LINK_CTL2(a) bdk_pciercx_link_ctl2_t
18953 #define bustype_BDK_PCIERCX_LINK_CTL2(a) BDK_CSR_TYPE_PCICONFIGRC
18954 #define basename_BDK_PCIERCX_LINK_CTL2(a) "PCIERCX_LINK_CTL2"
18955 #define busnum_BDK_PCIERCX_LINK_CTL2(a) (a)
18956 #define arguments_BDK_PCIERCX_LINK_CTL2(a) (a),-1,-1,-1
18957 
18958 /**
18959  * Register (PCICONFIGRC) pcierc#_link_ctl3
18960  *
18961  * PCIe RC Link Control 3 Register
18962  */
18963 union bdk_pciercx_link_ctl3
18964 {
18965     uint32_t u;
18966     struct bdk_pciercx_link_ctl3_s
18967     {
18968 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
18969         uint32_t reserved_2_31         : 30;
18970         uint32_t ler                   : 1;  /**< [  1:  1](RO/WRSL) Link equalization request interrupt enable. */
18971         uint32_t pe                    : 1;  /**< [  0:  0](RO/WRSL) Perform equalization. */
18972 #else /* Word 0 - Little Endian */
18973         uint32_t pe                    : 1;  /**< [  0:  0](RO/WRSL) Perform equalization. */
18974         uint32_t ler                   : 1;  /**< [  1:  1](RO/WRSL) Link equalization request interrupt enable. */
18975         uint32_t reserved_2_31         : 30;
18976 #endif /* Word 0 - End */
18977     } s;
18978     /* struct bdk_pciercx_link_ctl3_s cn; */
18979 };
18980 typedef union bdk_pciercx_link_ctl3 bdk_pciercx_link_ctl3_t;
18981 
18982 static inline uint64_t BDK_PCIERCX_LINK_CTL3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_LINK_CTL3(unsigned long a)18983 static inline uint64_t BDK_PCIERCX_LINK_CTL3(unsigned long a)
18984 {
18985     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
18986         return 0x17cll + 0x100000000ll * ((a) & 0x3);
18987     __bdk_csr_fatal("PCIERCX_LINK_CTL3", 1, a, 0, 0, 0);
18988 }
18989 
18990 #define typedef_BDK_PCIERCX_LINK_CTL3(a) bdk_pciercx_link_ctl3_t
18991 #define bustype_BDK_PCIERCX_LINK_CTL3(a) BDK_CSR_TYPE_PCICONFIGRC
18992 #define basename_BDK_PCIERCX_LINK_CTL3(a) "PCIERCX_LINK_CTL3"
18993 #define busnum_BDK_PCIERCX_LINK_CTL3(a) (a)
18994 #define arguments_BDK_PCIERCX_LINK_CTL3(a) (a),-1,-1,-1
18995 
18996 /**
18997  * Register (PCICONFIGRC) pcierc#_link_err_status
18998  *
18999  * Lane Error Status Register
19000  */
19001 union bdk_pciercx_link_err_status
19002 {
19003     uint32_t u;
19004     struct bdk_pciercx_link_err_status_s
19005     {
19006 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19007         uint32_t reserved_16_31        : 16;
19008         uint32_t les                   : 16; /**< [ 15:  0](R/W1C) Lane error status bits. */
19009 #else /* Word 0 - Little Endian */
19010         uint32_t les                   : 16; /**< [ 15:  0](R/W1C) Lane error status bits. */
19011         uint32_t reserved_16_31        : 16;
19012 #endif /* Word 0 - End */
19013     } s;
19014     /* struct bdk_pciercx_link_err_status_s cn; */
19015 };
19016 typedef union bdk_pciercx_link_err_status bdk_pciercx_link_err_status_t;
19017 
19018 static inline uint64_t BDK_PCIERCX_LINK_ERR_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_LINK_ERR_STATUS(unsigned long a)19019 static inline uint64_t BDK_PCIERCX_LINK_ERR_STATUS(unsigned long a)
19020 {
19021     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19022         return 0x180ll + 0x100000000ll * ((a) & 0x3);
19023     __bdk_csr_fatal("PCIERCX_LINK_ERR_STATUS", 1, a, 0, 0, 0);
19024 }
19025 
19026 #define typedef_BDK_PCIERCX_LINK_ERR_STATUS(a) bdk_pciercx_link_err_status_t
19027 #define bustype_BDK_PCIERCX_LINK_ERR_STATUS(a) BDK_CSR_TYPE_PCICONFIGRC
19028 #define basename_BDK_PCIERCX_LINK_ERR_STATUS(a) "PCIERCX_LINK_ERR_STATUS"
19029 #define busnum_BDK_PCIERCX_LINK_ERR_STATUS(a) (a)
19030 #define arguments_BDK_PCIERCX_LINK_ERR_STATUS(a) (a),-1,-1,-1
19031 
19032 /**
19033  * Register (PCICONFIGRC) pcierc#_margin_ext_cap_hdr
19034  *
19035  * PCIe RC Margining Extended Capability Header Register
19036  */
19037 union bdk_pciercx_margin_ext_cap_hdr
19038 {
19039     uint32_t u;
19040     struct bdk_pciercx_margin_ext_cap_hdr_s
19041     {
19042 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19043         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
19044                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
19045         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
19046                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
19047         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCIE Express extended capability.
19048                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
19049 #else /* Word 0 - Little Endian */
19050         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCIE Express extended capability.
19051                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
19052         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
19053                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
19054         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
19055                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
19056 #endif /* Word 0 - End */
19057     } s;
19058     /* struct bdk_pciercx_margin_ext_cap_hdr_s cn; */
19059 };
19060 typedef union bdk_pciercx_margin_ext_cap_hdr bdk_pciercx_margin_ext_cap_hdr_t;
19061 
19062 static inline uint64_t BDK_PCIERCX_MARGIN_EXT_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MARGIN_EXT_CAP_HDR(unsigned long a)19063 static inline uint64_t BDK_PCIERCX_MARGIN_EXT_CAP_HDR(unsigned long a)
19064 {
19065     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19066         return 0x1d8ll + 0x100000000ll * ((a) & 0x3);
19067     __bdk_csr_fatal("PCIERCX_MARGIN_EXT_CAP_HDR", 1, a, 0, 0, 0);
19068 }
19069 
19070 #define typedef_BDK_PCIERCX_MARGIN_EXT_CAP_HDR(a) bdk_pciercx_margin_ext_cap_hdr_t
19071 #define bustype_BDK_PCIERCX_MARGIN_EXT_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
19072 #define basename_BDK_PCIERCX_MARGIN_EXT_CAP_HDR(a) "PCIERCX_MARGIN_EXT_CAP_HDR"
19073 #define busnum_BDK_PCIERCX_MARGIN_EXT_CAP_HDR(a) (a)
19074 #define arguments_BDK_PCIERCX_MARGIN_EXT_CAP_HDR(a) (a),-1,-1,-1
19075 
19076 /**
19077  * Register (PCICONFIGRC) pcierc#_mem
19078  *
19079  * PCIe RC Memory Base and Memory Limit Register
19080  */
19081 union bdk_pciercx_mem
19082 {
19083     uint32_t u;
19084     struct bdk_pciercx_mem_s
19085     {
19086 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19087         uint32_t ml_addr               : 12; /**< [ 31: 20](R/W) Memory limit address. */
19088         uint32_t reserved_16_19        : 4;
19089         uint32_t mb_addr               : 12; /**< [ 15:  4](R/W) Memory base address. */
19090         uint32_t reserved_0_3          : 4;
19091 #else /* Word 0 - Little Endian */
19092         uint32_t reserved_0_3          : 4;
19093         uint32_t mb_addr               : 12; /**< [ 15:  4](R/W) Memory base address. */
19094         uint32_t reserved_16_19        : 4;
19095         uint32_t ml_addr               : 12; /**< [ 31: 20](R/W) Memory limit address. */
19096 #endif /* Word 0 - End */
19097     } s;
19098     /* struct bdk_pciercx_mem_s cn; */
19099 };
19100 typedef union bdk_pciercx_mem bdk_pciercx_mem_t;
19101 
19102 static inline uint64_t BDK_PCIERCX_MEM(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MEM(unsigned long a)19103 static inline uint64_t BDK_PCIERCX_MEM(unsigned long a)
19104 {
19105     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19106         return 0x20ll + 0x100000000ll * ((a) & 0x3);
19107     __bdk_csr_fatal("PCIERCX_MEM", 1, a, 0, 0, 0);
19108 }
19109 
19110 #define typedef_BDK_PCIERCX_MEM(a) bdk_pciercx_mem_t
19111 #define bustype_BDK_PCIERCX_MEM(a) BDK_CSR_TYPE_PCICONFIGRC
19112 #define basename_BDK_PCIERCX_MEM(a) "PCIERCX_MEM"
19113 #define busnum_BDK_PCIERCX_MEM(a) (a)
19114 #define arguments_BDK_PCIERCX_MEM(a) (a),-1,-1,-1
19115 
19116 /**
19117  * Register (PCICONFIGRC) pcierc#_misc_ctl1
19118  *
19119  * PCIe RC Miscellaneous Control 1 Register
19120  */
19121 union bdk_pciercx_misc_ctl1
19122 {
19123     uint32_t u;
19124     struct bdk_pciercx_misc_ctl1_s
19125     {
19126 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19127         uint32_t reserved_6_31         : 26;
19128         uint32_t ari_devn              : 1;  /**< [  5:  5](R/W) When ARI is enabled, enables use of the device ID. */
19129         uint32_t dis_auto_ltr_clr      : 1;  /**< [  4:  4](R/W) Disable the autonomous generation of LTR clear message in upstream port.
19130                                                                  0 = Allow the autonomous generation of LTR clear message.
19131                                                                  1 = Disable the autonomous generation of LTR clear message. */
19132         uint32_t simp_replay_timer     : 1;  /**< [  3:  3](R/W) Enables Simplified Replay Timer (Gen4).  Simplified replay timer values are:
19133 
19134                                                                    A value from 24,000 to 31,000 symbol times when extended synch is 0.
19135                                                                    A value from 80,000 to 100,000 symbol times when extended synch is 1. */
19136         uint32_t ur_c4_mask_4_trgt1    : 1;  /**< [  2:  2](R/W) This field only applies to request TLPs (with UR filtering status) that are
19137                                                                  chosen to forward to the application (when [DEF_TARGET] is set).
19138 
19139                                                                  When set, the core suppresses error logging, error message generation, and CPL
19140                                                                  generation (for non-posted requests). */
19141         uint32_t def_target            : 1;  /**< [  1:  1](R/W) Default target a received IO or MEM request with UR/CA/CRS
19142                                                                  is sent to be the controller.
19143                                                                  0x0 = The controller drops all incoming I/O or Mem (after
19144                                                                       corresponding error reporting). A completion with
19145                                                                       UR status will be generated for non-posted requests.
19146                                                                  0x1 = The controller forwards all incoming I/O or MEM
19147                                                                       requests with UR/CA/CRS status to your application. */
19148         uint32_t dbi_ro_wr_en          : 1;  /**< [  0:  0](R/W) Write to RO registers using DBI.  When you set this bit, then some
19149                                                                  RO bits are writable from the DBI. */
19150 #else /* Word 0 - Little Endian */
19151         uint32_t dbi_ro_wr_en          : 1;  /**< [  0:  0](R/W) Write to RO registers using DBI.  When you set this bit, then some
19152                                                                  RO bits are writable from the DBI. */
19153         uint32_t def_target            : 1;  /**< [  1:  1](R/W) Default target a received IO or MEM request with UR/CA/CRS
19154                                                                  is sent to be the controller.
19155                                                                  0x0 = The controller drops all incoming I/O or Mem (after
19156                                                                       corresponding error reporting). A completion with
19157                                                                       UR status will be generated for non-posted requests.
19158                                                                  0x1 = The controller forwards all incoming I/O or MEM
19159                                                                       requests with UR/CA/CRS status to your application. */
19160         uint32_t ur_c4_mask_4_trgt1    : 1;  /**< [  2:  2](R/W) This field only applies to request TLPs (with UR filtering status) that are
19161                                                                  chosen to forward to the application (when [DEF_TARGET] is set).
19162 
19163                                                                  When set, the core suppresses error logging, error message generation, and CPL
19164                                                                  generation (for non-posted requests). */
19165         uint32_t simp_replay_timer     : 1;  /**< [  3:  3](R/W) Enables Simplified Replay Timer (Gen4).  Simplified replay timer values are:
19166 
19167                                                                    A value from 24,000 to 31,000 symbol times when extended synch is 0.
19168                                                                    A value from 80,000 to 100,000 symbol times when extended synch is 1. */
19169         uint32_t dis_auto_ltr_clr      : 1;  /**< [  4:  4](R/W) Disable the autonomous generation of LTR clear message in upstream port.
19170                                                                  0 = Allow the autonomous generation of LTR clear message.
19171                                                                  1 = Disable the autonomous generation of LTR clear message. */
19172         uint32_t ari_devn              : 1;  /**< [  5:  5](R/W) When ARI is enabled, enables use of the device ID. */
19173         uint32_t reserved_6_31         : 26;
19174 #endif /* Word 0 - End */
19175     } s;
19176     /* struct bdk_pciercx_misc_ctl1_s cn; */
19177 };
19178 typedef union bdk_pciercx_misc_ctl1 bdk_pciercx_misc_ctl1_t;
19179 
19180 static inline uint64_t BDK_PCIERCX_MISC_CTL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MISC_CTL1(unsigned long a)19181 static inline uint64_t BDK_PCIERCX_MISC_CTL1(unsigned long a)
19182 {
19183     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19184         return 0x8bcll + 0x100000000ll * ((a) & 0x3);
19185     __bdk_csr_fatal("PCIERCX_MISC_CTL1", 1, a, 0, 0, 0);
19186 }
19187 
19188 #define typedef_BDK_PCIERCX_MISC_CTL1(a) bdk_pciercx_misc_ctl1_t
19189 #define bustype_BDK_PCIERCX_MISC_CTL1(a) BDK_CSR_TYPE_PCICONFIGRC
19190 #define basename_BDK_PCIERCX_MISC_CTL1(a) "PCIERCX_MISC_CTL1"
19191 #define busnum_BDK_PCIERCX_MISC_CTL1(a) (a)
19192 #define arguments_BDK_PCIERCX_MISC_CTL1(a) (a),-1,-1,-1
19193 
19194 /**
19195  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat0
19196  *
19197  * PCIe RC Margining Lane Control and Status Register 0
19198  */
19199 union bdk_pciercx_mrg_lane_ctl_stat0
19200 {
19201     uint32_t u;
19202     struct bdk_pciercx_mrg_lane_ctl_stat0_s
19203     {
19204 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19205         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19206         uint32_t reserved_23           : 1;
19207         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19208         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19209         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19210         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19211         uint32_t reserved_7            : 1;
19212         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19213         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19214         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19215 #else /* Word 0 - Little Endian */
19216         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19217         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19218         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19219         uint32_t reserved_7            : 1;
19220         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19221         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19222         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19223         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19224         uint32_t reserved_23           : 1;
19225         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19226 #endif /* Word 0 - End */
19227     } s;
19228     /* struct bdk_pciercx_mrg_lane_ctl_stat0_s cn; */
19229 };
19230 typedef union bdk_pciercx_mrg_lane_ctl_stat0 bdk_pciercx_mrg_lane_ctl_stat0_t;
19231 
19232 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT0(unsigned long a)19233 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT0(unsigned long a)
19234 {
19235     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19236         return 0x1e0ll + 0x100000000ll * ((a) & 0x3);
19237     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT0", 1, a, 0, 0, 0);
19238 }
19239 
19240 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT0(a) bdk_pciercx_mrg_lane_ctl_stat0_t
19241 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT0(a) BDK_CSR_TYPE_PCICONFIGRC
19242 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT0(a) "PCIERCX_MRG_LANE_CTL_STAT0"
19243 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT0(a) (a)
19244 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT0(a) (a),-1,-1,-1
19245 
19246 /**
19247  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat1
19248  *
19249  * PCIe RC Margining Lane Control and Status Register 1
19250  */
19251 union bdk_pciercx_mrg_lane_ctl_stat1
19252 {
19253     uint32_t u;
19254     struct bdk_pciercx_mrg_lane_ctl_stat1_s
19255     {
19256 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19257         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19258         uint32_t reserved_23           : 1;
19259         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19260         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19261         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19262         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19263         uint32_t reserved_7            : 1;
19264         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19265         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19266         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19267 #else /* Word 0 - Little Endian */
19268         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19269         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19270         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19271         uint32_t reserved_7            : 1;
19272         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19273         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19274         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19275         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19276         uint32_t reserved_23           : 1;
19277         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19278 #endif /* Word 0 - End */
19279     } s;
19280     /* struct bdk_pciercx_mrg_lane_ctl_stat1_s cn; */
19281 };
19282 typedef union bdk_pciercx_mrg_lane_ctl_stat1 bdk_pciercx_mrg_lane_ctl_stat1_t;
19283 
19284 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT1(unsigned long a)19285 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT1(unsigned long a)
19286 {
19287     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19288         return 0x1e4ll + 0x100000000ll * ((a) & 0x3);
19289     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT1", 1, a, 0, 0, 0);
19290 }
19291 
19292 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT1(a) bdk_pciercx_mrg_lane_ctl_stat1_t
19293 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT1(a) BDK_CSR_TYPE_PCICONFIGRC
19294 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT1(a) "PCIERCX_MRG_LANE_CTL_STAT1"
19295 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT1(a) (a)
19296 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT1(a) (a),-1,-1,-1
19297 
19298 /**
19299  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat10
19300  *
19301  * PCIe RC Margining Lane Control and Status Register 10
19302  */
19303 union bdk_pciercx_mrg_lane_ctl_stat10
19304 {
19305     uint32_t u;
19306     struct bdk_pciercx_mrg_lane_ctl_stat10_s
19307     {
19308 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19309         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19310         uint32_t reserved_23           : 1;
19311         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19312         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19313         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19314         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19315         uint32_t reserved_7            : 1;
19316         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19317         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19318         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19319 #else /* Word 0 - Little Endian */
19320         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19321         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19322         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19323         uint32_t reserved_7            : 1;
19324         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19325         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19326         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19327         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19328         uint32_t reserved_23           : 1;
19329         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19330 #endif /* Word 0 - End */
19331     } s;
19332     /* struct bdk_pciercx_mrg_lane_ctl_stat10_s cn; */
19333 };
19334 typedef union bdk_pciercx_mrg_lane_ctl_stat10 bdk_pciercx_mrg_lane_ctl_stat10_t;
19335 
19336 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT10(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT10(unsigned long a)19337 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT10(unsigned long a)
19338 {
19339     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19340         return 0x208ll + 0x100000000ll * ((a) & 0x3);
19341     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT10", 1, a, 0, 0, 0);
19342 }
19343 
19344 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT10(a) bdk_pciercx_mrg_lane_ctl_stat10_t
19345 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT10(a) BDK_CSR_TYPE_PCICONFIGRC
19346 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT10(a) "PCIERCX_MRG_LANE_CTL_STAT10"
19347 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT10(a) (a)
19348 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT10(a) (a),-1,-1,-1
19349 
19350 /**
19351  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat11
19352  *
19353  * PCIe RC Margining Lane Control and Status Register 11
19354  */
19355 union bdk_pciercx_mrg_lane_ctl_stat11
19356 {
19357     uint32_t u;
19358     struct bdk_pciercx_mrg_lane_ctl_stat11_s
19359     {
19360 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19361         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19362         uint32_t reserved_23           : 1;
19363         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19364         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19365         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19366         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19367         uint32_t reserved_7            : 1;
19368         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19369         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19370         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19371 #else /* Word 0 - Little Endian */
19372         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19373         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19374         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19375         uint32_t reserved_7            : 1;
19376         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19377         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19378         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19379         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19380         uint32_t reserved_23           : 1;
19381         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19382 #endif /* Word 0 - End */
19383     } s;
19384     /* struct bdk_pciercx_mrg_lane_ctl_stat11_s cn; */
19385 };
19386 typedef union bdk_pciercx_mrg_lane_ctl_stat11 bdk_pciercx_mrg_lane_ctl_stat11_t;
19387 
19388 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT11(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT11(unsigned long a)19389 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT11(unsigned long a)
19390 {
19391     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19392         return 0x20cll + 0x100000000ll * ((a) & 0x3);
19393     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT11", 1, a, 0, 0, 0);
19394 }
19395 
19396 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT11(a) bdk_pciercx_mrg_lane_ctl_stat11_t
19397 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT11(a) BDK_CSR_TYPE_PCICONFIGRC
19398 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT11(a) "PCIERCX_MRG_LANE_CTL_STAT11"
19399 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT11(a) (a)
19400 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT11(a) (a),-1,-1,-1
19401 
19402 /**
19403  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat12
19404  *
19405  * PCIe RC Margining Lane Control and Status Register 12
19406  */
19407 union bdk_pciercx_mrg_lane_ctl_stat12
19408 {
19409     uint32_t u;
19410     struct bdk_pciercx_mrg_lane_ctl_stat12_s
19411     {
19412 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19413         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19414         uint32_t reserved_23           : 1;
19415         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19416         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19417         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19418         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19419         uint32_t reserved_7            : 1;
19420         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19421         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19422         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19423 #else /* Word 0 - Little Endian */
19424         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19425         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19426         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19427         uint32_t reserved_7            : 1;
19428         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19429         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19430         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19431         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19432         uint32_t reserved_23           : 1;
19433         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19434 #endif /* Word 0 - End */
19435     } s;
19436     /* struct bdk_pciercx_mrg_lane_ctl_stat12_s cn; */
19437 };
19438 typedef union bdk_pciercx_mrg_lane_ctl_stat12 bdk_pciercx_mrg_lane_ctl_stat12_t;
19439 
19440 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT12(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT12(unsigned long a)19441 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT12(unsigned long a)
19442 {
19443     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19444         return 0x210ll + 0x100000000ll * ((a) & 0x3);
19445     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT12", 1, a, 0, 0, 0);
19446 }
19447 
19448 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT12(a) bdk_pciercx_mrg_lane_ctl_stat12_t
19449 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT12(a) BDK_CSR_TYPE_PCICONFIGRC
19450 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT12(a) "PCIERCX_MRG_LANE_CTL_STAT12"
19451 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT12(a) (a)
19452 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT12(a) (a),-1,-1,-1
19453 
19454 /**
19455  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat13
19456  *
19457  * PCIe RC Margining Lane Control and Status Register 13
19458  */
19459 union bdk_pciercx_mrg_lane_ctl_stat13
19460 {
19461     uint32_t u;
19462     struct bdk_pciercx_mrg_lane_ctl_stat13_s
19463     {
19464 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19465         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19466         uint32_t reserved_23           : 1;
19467         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19468         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19469         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19470         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19471         uint32_t reserved_7            : 1;
19472         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19473         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19474         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19475 #else /* Word 0 - Little Endian */
19476         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19477         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19478         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19479         uint32_t reserved_7            : 1;
19480         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19481         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19482         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19483         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19484         uint32_t reserved_23           : 1;
19485         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19486 #endif /* Word 0 - End */
19487     } s;
19488     /* struct bdk_pciercx_mrg_lane_ctl_stat13_s cn; */
19489 };
19490 typedef union bdk_pciercx_mrg_lane_ctl_stat13 bdk_pciercx_mrg_lane_ctl_stat13_t;
19491 
19492 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT13(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT13(unsigned long a)19493 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT13(unsigned long a)
19494 {
19495     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19496         return 0x214ll + 0x100000000ll * ((a) & 0x3);
19497     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT13", 1, a, 0, 0, 0);
19498 }
19499 
19500 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT13(a) bdk_pciercx_mrg_lane_ctl_stat13_t
19501 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT13(a) BDK_CSR_TYPE_PCICONFIGRC
19502 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT13(a) "PCIERCX_MRG_LANE_CTL_STAT13"
19503 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT13(a) (a)
19504 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT13(a) (a),-1,-1,-1
19505 
19506 /**
19507  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat14
19508  *
19509  * PCIe RC Margining Lane Control and Status Register 14
19510  */
19511 union bdk_pciercx_mrg_lane_ctl_stat14
19512 {
19513     uint32_t u;
19514     struct bdk_pciercx_mrg_lane_ctl_stat14_s
19515     {
19516 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19517         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19518         uint32_t reserved_23           : 1;
19519         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19520         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19521         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19522         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19523         uint32_t reserved_7            : 1;
19524         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19525         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19526         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19527 #else /* Word 0 - Little Endian */
19528         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19529         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19530         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19531         uint32_t reserved_7            : 1;
19532         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19533         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19534         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19535         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19536         uint32_t reserved_23           : 1;
19537         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19538 #endif /* Word 0 - End */
19539     } s;
19540     /* struct bdk_pciercx_mrg_lane_ctl_stat14_s cn; */
19541 };
19542 typedef union bdk_pciercx_mrg_lane_ctl_stat14 bdk_pciercx_mrg_lane_ctl_stat14_t;
19543 
19544 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT14(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT14(unsigned long a)19545 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT14(unsigned long a)
19546 {
19547     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19548         return 0x218ll + 0x100000000ll * ((a) & 0x3);
19549     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT14", 1, a, 0, 0, 0);
19550 }
19551 
19552 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT14(a) bdk_pciercx_mrg_lane_ctl_stat14_t
19553 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT14(a) BDK_CSR_TYPE_PCICONFIGRC
19554 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT14(a) "PCIERCX_MRG_LANE_CTL_STAT14"
19555 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT14(a) (a)
19556 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT14(a) (a),-1,-1,-1
19557 
19558 /**
19559  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat15
19560  *
19561  * PCIe RC Margining Lane Control and Status Register 15
19562  */
19563 union bdk_pciercx_mrg_lane_ctl_stat15
19564 {
19565     uint32_t u;
19566     struct bdk_pciercx_mrg_lane_ctl_stat15_s
19567     {
19568 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19569         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19570         uint32_t reserved_23           : 1;
19571         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19572         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19573         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19574         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19575         uint32_t reserved_7            : 1;
19576         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19577         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19578         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19579 #else /* Word 0 - Little Endian */
19580         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19581         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19582         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19583         uint32_t reserved_7            : 1;
19584         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19585         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19586         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19587         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19588         uint32_t reserved_23           : 1;
19589         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19590 #endif /* Word 0 - End */
19591     } s;
19592     /* struct bdk_pciercx_mrg_lane_ctl_stat15_s cn; */
19593 };
19594 typedef union bdk_pciercx_mrg_lane_ctl_stat15 bdk_pciercx_mrg_lane_ctl_stat15_t;
19595 
19596 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT15(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT15(unsigned long a)19597 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT15(unsigned long a)
19598 {
19599     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19600         return 0x21cll + 0x100000000ll * ((a) & 0x3);
19601     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT15", 1, a, 0, 0, 0);
19602 }
19603 
19604 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT15(a) bdk_pciercx_mrg_lane_ctl_stat15_t
19605 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT15(a) BDK_CSR_TYPE_PCICONFIGRC
19606 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT15(a) "PCIERCX_MRG_LANE_CTL_STAT15"
19607 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT15(a) (a)
19608 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT15(a) (a),-1,-1,-1
19609 
19610 /**
19611  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat2
19612  *
19613  * PCIe RC Margining Lane Control and Status Register 2
19614  */
19615 union bdk_pciercx_mrg_lane_ctl_stat2
19616 {
19617     uint32_t u;
19618     struct bdk_pciercx_mrg_lane_ctl_stat2_s
19619     {
19620 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19621         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19622         uint32_t reserved_23           : 1;
19623         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19624         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19625         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19626         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19627         uint32_t reserved_7            : 1;
19628         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19629         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19630         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19631 #else /* Word 0 - Little Endian */
19632         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19633         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19634         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19635         uint32_t reserved_7            : 1;
19636         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19637         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19638         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19639         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19640         uint32_t reserved_23           : 1;
19641         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19642 #endif /* Word 0 - End */
19643     } s;
19644     /* struct bdk_pciercx_mrg_lane_ctl_stat2_s cn; */
19645 };
19646 typedef union bdk_pciercx_mrg_lane_ctl_stat2 bdk_pciercx_mrg_lane_ctl_stat2_t;
19647 
19648 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT2(unsigned long a)19649 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT2(unsigned long a)
19650 {
19651     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19652         return 0x1e8ll + 0x100000000ll * ((a) & 0x3);
19653     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT2", 1, a, 0, 0, 0);
19654 }
19655 
19656 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT2(a) bdk_pciercx_mrg_lane_ctl_stat2_t
19657 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT2(a) BDK_CSR_TYPE_PCICONFIGRC
19658 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT2(a) "PCIERCX_MRG_LANE_CTL_STAT2"
19659 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT2(a) (a)
19660 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT2(a) (a),-1,-1,-1
19661 
19662 /**
19663  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat3
19664  *
19665  * PCIe RC Margining Lane Control and Status Register 3
19666  */
19667 union bdk_pciercx_mrg_lane_ctl_stat3
19668 {
19669     uint32_t u;
19670     struct bdk_pciercx_mrg_lane_ctl_stat3_s
19671     {
19672 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19673         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19674         uint32_t reserved_23           : 1;
19675         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19676         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19677         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19678         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19679         uint32_t reserved_7            : 1;
19680         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19681         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19682         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19683 #else /* Word 0 - Little Endian */
19684         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19685         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19686         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19687         uint32_t reserved_7            : 1;
19688         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19689         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19690         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19691         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19692         uint32_t reserved_23           : 1;
19693         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19694 #endif /* Word 0 - End */
19695     } s;
19696     /* struct bdk_pciercx_mrg_lane_ctl_stat3_s cn; */
19697 };
19698 typedef union bdk_pciercx_mrg_lane_ctl_stat3 bdk_pciercx_mrg_lane_ctl_stat3_t;
19699 
19700 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT3(unsigned long a)19701 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT3(unsigned long a)
19702 {
19703     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19704         return 0x1ecll + 0x100000000ll * ((a) & 0x3);
19705     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT3", 1, a, 0, 0, 0);
19706 }
19707 
19708 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT3(a) bdk_pciercx_mrg_lane_ctl_stat3_t
19709 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT3(a) BDK_CSR_TYPE_PCICONFIGRC
19710 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT3(a) "PCIERCX_MRG_LANE_CTL_STAT3"
19711 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT3(a) (a)
19712 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT3(a) (a),-1,-1,-1
19713 
19714 /**
19715  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat4
19716  *
19717  * PCIe RC Margining Lane Control and Status Register 4
19718  */
19719 union bdk_pciercx_mrg_lane_ctl_stat4
19720 {
19721     uint32_t u;
19722     struct bdk_pciercx_mrg_lane_ctl_stat4_s
19723     {
19724 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19725         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19726         uint32_t reserved_23           : 1;
19727         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19728         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19729         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19730         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19731         uint32_t reserved_7            : 1;
19732         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19733         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19734         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19735 #else /* Word 0 - Little Endian */
19736         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19737         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19738         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19739         uint32_t reserved_7            : 1;
19740         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19741         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19742         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19743         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19744         uint32_t reserved_23           : 1;
19745         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19746 #endif /* Word 0 - End */
19747     } s;
19748     /* struct bdk_pciercx_mrg_lane_ctl_stat4_s cn; */
19749 };
19750 typedef union bdk_pciercx_mrg_lane_ctl_stat4 bdk_pciercx_mrg_lane_ctl_stat4_t;
19751 
19752 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT4(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT4(unsigned long a)19753 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT4(unsigned long a)
19754 {
19755     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19756         return 0x1f0ll + 0x100000000ll * ((a) & 0x3);
19757     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT4", 1, a, 0, 0, 0);
19758 }
19759 
19760 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT4(a) bdk_pciercx_mrg_lane_ctl_stat4_t
19761 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT4(a) BDK_CSR_TYPE_PCICONFIGRC
19762 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT4(a) "PCIERCX_MRG_LANE_CTL_STAT4"
19763 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT4(a) (a)
19764 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT4(a) (a),-1,-1,-1
19765 
19766 /**
19767  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat5
19768  *
19769  * PCIe RC Margining Lane Control and Status Register 5
19770  */
19771 union bdk_pciercx_mrg_lane_ctl_stat5
19772 {
19773     uint32_t u;
19774     struct bdk_pciercx_mrg_lane_ctl_stat5_s
19775     {
19776 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19777         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19778         uint32_t reserved_23           : 1;
19779         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19780         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19781         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19782         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19783         uint32_t reserved_7            : 1;
19784         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19785         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19786         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19787 #else /* Word 0 - Little Endian */
19788         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19789         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19790         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19791         uint32_t reserved_7            : 1;
19792         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19793         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19794         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19795         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19796         uint32_t reserved_23           : 1;
19797         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19798 #endif /* Word 0 - End */
19799     } s;
19800     /* struct bdk_pciercx_mrg_lane_ctl_stat5_s cn; */
19801 };
19802 typedef union bdk_pciercx_mrg_lane_ctl_stat5 bdk_pciercx_mrg_lane_ctl_stat5_t;
19803 
19804 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT5(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT5(unsigned long a)19805 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT5(unsigned long a)
19806 {
19807     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19808         return 0x1f4ll + 0x100000000ll * ((a) & 0x3);
19809     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT5", 1, a, 0, 0, 0);
19810 }
19811 
19812 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT5(a) bdk_pciercx_mrg_lane_ctl_stat5_t
19813 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT5(a) BDK_CSR_TYPE_PCICONFIGRC
19814 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT5(a) "PCIERCX_MRG_LANE_CTL_STAT5"
19815 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT5(a) (a)
19816 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT5(a) (a),-1,-1,-1
19817 
19818 /**
19819  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat6
19820  *
19821  * PCIe RC Margining Lane Control and Status Register 6
19822  */
19823 union bdk_pciercx_mrg_lane_ctl_stat6
19824 {
19825     uint32_t u;
19826     struct bdk_pciercx_mrg_lane_ctl_stat6_s
19827     {
19828 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19829         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19830         uint32_t reserved_23           : 1;
19831         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19832         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19833         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19834         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19835         uint32_t reserved_7            : 1;
19836         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19837         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19838         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19839 #else /* Word 0 - Little Endian */
19840         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19841         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19842         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19843         uint32_t reserved_7            : 1;
19844         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19845         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19846         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19847         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19848         uint32_t reserved_23           : 1;
19849         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19850 #endif /* Word 0 - End */
19851     } s;
19852     /* struct bdk_pciercx_mrg_lane_ctl_stat6_s cn; */
19853 };
19854 typedef union bdk_pciercx_mrg_lane_ctl_stat6 bdk_pciercx_mrg_lane_ctl_stat6_t;
19855 
19856 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT6(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT6(unsigned long a)19857 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT6(unsigned long a)
19858 {
19859     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19860         return 0x1f8ll + 0x100000000ll * ((a) & 0x3);
19861     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT6", 1, a, 0, 0, 0);
19862 }
19863 
19864 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT6(a) bdk_pciercx_mrg_lane_ctl_stat6_t
19865 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT6(a) BDK_CSR_TYPE_PCICONFIGRC
19866 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT6(a) "PCIERCX_MRG_LANE_CTL_STAT6"
19867 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT6(a) (a)
19868 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT6(a) (a),-1,-1,-1
19869 
19870 /**
19871  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat7
19872  *
19873  * PCIe RC Margining Lane Control and Status Register 7
19874  */
19875 union bdk_pciercx_mrg_lane_ctl_stat7
19876 {
19877     uint32_t u;
19878     struct bdk_pciercx_mrg_lane_ctl_stat7_s
19879     {
19880 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19881         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19882         uint32_t reserved_23           : 1;
19883         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19884         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19885         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19886         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19887         uint32_t reserved_7            : 1;
19888         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19889         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19890         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19891 #else /* Word 0 - Little Endian */
19892         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19893         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19894         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19895         uint32_t reserved_7            : 1;
19896         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19897         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19898         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19899         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19900         uint32_t reserved_23           : 1;
19901         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19902 #endif /* Word 0 - End */
19903     } s;
19904     /* struct bdk_pciercx_mrg_lane_ctl_stat7_s cn; */
19905 };
19906 typedef union bdk_pciercx_mrg_lane_ctl_stat7 bdk_pciercx_mrg_lane_ctl_stat7_t;
19907 
19908 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT7(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT7(unsigned long a)19909 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT7(unsigned long a)
19910 {
19911     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19912         return 0x1fcll + 0x100000000ll * ((a) & 0x3);
19913     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT7", 1, a, 0, 0, 0);
19914 }
19915 
19916 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT7(a) bdk_pciercx_mrg_lane_ctl_stat7_t
19917 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT7(a) BDK_CSR_TYPE_PCICONFIGRC
19918 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT7(a) "PCIERCX_MRG_LANE_CTL_STAT7"
19919 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT7(a) (a)
19920 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT7(a) (a),-1,-1,-1
19921 
19922 /**
19923  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat8
19924  *
19925  * PCIe RC Margining Lane Control and Status Register 8
19926  */
19927 union bdk_pciercx_mrg_lane_ctl_stat8
19928 {
19929     uint32_t u;
19930     struct bdk_pciercx_mrg_lane_ctl_stat8_s
19931     {
19932 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19933         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19934         uint32_t reserved_23           : 1;
19935         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19936         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19937         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19938         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19939         uint32_t reserved_7            : 1;
19940         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19941         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19942         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19943 #else /* Word 0 - Little Endian */
19944         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19945         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19946         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19947         uint32_t reserved_7            : 1;
19948         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19949         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19950         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19951         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19952         uint32_t reserved_23           : 1;
19953         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19954 #endif /* Word 0 - End */
19955     } s;
19956     /* struct bdk_pciercx_mrg_lane_ctl_stat8_s cn; */
19957 };
19958 typedef union bdk_pciercx_mrg_lane_ctl_stat8 bdk_pciercx_mrg_lane_ctl_stat8_t;
19959 
19960 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT8(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT8(unsigned long a)19961 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT8(unsigned long a)
19962 {
19963     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
19964         return 0x200ll + 0x100000000ll * ((a) & 0x3);
19965     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT8", 1, a, 0, 0, 0);
19966 }
19967 
19968 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT8(a) bdk_pciercx_mrg_lane_ctl_stat8_t
19969 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT8(a) BDK_CSR_TYPE_PCICONFIGRC
19970 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT8(a) "PCIERCX_MRG_LANE_CTL_STAT8"
19971 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT8(a) (a)
19972 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT8(a) (a),-1,-1,-1
19973 
19974 /**
19975  * Register (PCICONFIGRC) pcierc#_mrg_lane_ctl_stat9
19976  *
19977  * PCIe RC Margining Lane Control and Status Register 9
19978  */
19979 union bdk_pciercx_mrg_lane_ctl_stat9
19980 {
19981     uint32_t u;
19982     struct bdk_pciercx_mrg_lane_ctl_stat9_s
19983     {
19984 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
19985         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
19986         uint32_t reserved_23           : 1;
19987         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
19988         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
19989         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
19990         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
19991         uint32_t reserved_7            : 1;
19992         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19993         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19994         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19995 #else /* Word 0 - Little Endian */
19996         uint32_t rnum                  : 3;  /**< [  2:  0](R/W) Receiver number for this lane. */
19997         uint32_t mt                    : 3;  /**< [  5:  3](R/W) Margin type for this lane. */
19998         uint32_t um                    : 1;  /**< [  6:  6](R/W) Usage model for this lane. */
19999         uint32_t reserved_7            : 1;
20000         uint32_t mpl                   : 8;  /**< [ 15:  8](R/W) Margin payload for this lane. */
20001         uint32_t rnum_stat             : 3;  /**< [ 18: 16](RO/H) Receiver number (status) for this lane. */
20002         uint32_t mt_stat               : 3;  /**< [ 21: 19](RO/H) Margin type (status) for this lane. */
20003         uint32_t um_stat               : 1;  /**< [ 22: 22](RO/H) Usage model (status) for this lane. */
20004         uint32_t reserved_23           : 1;
20005         uint32_t pl_stat               : 8;  /**< [ 31: 24](RO/H) Margin payload (status) for this lane. */
20006 #endif /* Word 0 - End */
20007     } s;
20008     /* struct bdk_pciercx_mrg_lane_ctl_stat9_s cn; */
20009 };
20010 typedef union bdk_pciercx_mrg_lane_ctl_stat9 bdk_pciercx_mrg_lane_ctl_stat9_t;
20011 
20012 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT9(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_LANE_CTL_STAT9(unsigned long a)20013 static inline uint64_t BDK_PCIERCX_MRG_LANE_CTL_STAT9(unsigned long a)
20014 {
20015     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20016         return 0x204ll + 0x100000000ll * ((a) & 0x3);
20017     __bdk_csr_fatal("PCIERCX_MRG_LANE_CTL_STAT9", 1, a, 0, 0, 0);
20018 }
20019 
20020 #define typedef_BDK_PCIERCX_MRG_LANE_CTL_STAT9(a) bdk_pciercx_mrg_lane_ctl_stat9_t
20021 #define bustype_BDK_PCIERCX_MRG_LANE_CTL_STAT9(a) BDK_CSR_TYPE_PCICONFIGRC
20022 #define basename_BDK_PCIERCX_MRG_LANE_CTL_STAT9(a) "PCIERCX_MRG_LANE_CTL_STAT9"
20023 #define busnum_BDK_PCIERCX_MRG_LANE_CTL_STAT9(a) (a)
20024 #define arguments_BDK_PCIERCX_MRG_LANE_CTL_STAT9(a) (a),-1,-1,-1
20025 
20026 /**
20027  * Register (PCICONFIGRC) pcierc#_mrg_port_cap_stat
20028  *
20029  * PCIe RC Margining Port Capabilities and Status Register
20030  */
20031 union bdk_pciercx_mrg_port_cap_stat
20032 {
20033     uint32_t u;
20034     struct bdk_pciercx_mrg_port_cap_stat_s
20035     {
20036 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20037         uint32_t reserved_18_31        : 14;
20038         uint32_t m_swrdy               : 1;  /**< [ 17: 17](RO/H) Margining software ready. */
20039         uint32_t m_rdy                 : 1;  /**< [ 16: 16](RO/H) Margining ready. */
20040         uint32_t reserved_1_15         : 15;
20041         uint32_t m_drv                 : 1;  /**< [  0:  0](RO/WRSL) Margining uses driver software. */
20042 #else /* Word 0 - Little Endian */
20043         uint32_t m_drv                 : 1;  /**< [  0:  0](RO/WRSL) Margining uses driver software. */
20044         uint32_t reserved_1_15         : 15;
20045         uint32_t m_rdy                 : 1;  /**< [ 16: 16](RO/H) Margining ready. */
20046         uint32_t m_swrdy               : 1;  /**< [ 17: 17](RO/H) Margining software ready. */
20047         uint32_t reserved_18_31        : 14;
20048 #endif /* Word 0 - End */
20049     } s;
20050     /* struct bdk_pciercx_mrg_port_cap_stat_s cn; */
20051 };
20052 typedef union bdk_pciercx_mrg_port_cap_stat bdk_pciercx_mrg_port_cap_stat_t;
20053 
20054 static inline uint64_t BDK_PCIERCX_MRG_PORT_CAP_STAT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MRG_PORT_CAP_STAT(unsigned long a)20055 static inline uint64_t BDK_PCIERCX_MRG_PORT_CAP_STAT(unsigned long a)
20056 {
20057     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20058         return 0x1dcll + 0x100000000ll * ((a) & 0x3);
20059     __bdk_csr_fatal("PCIERCX_MRG_PORT_CAP_STAT", 1, a, 0, 0, 0);
20060 }
20061 
20062 #define typedef_BDK_PCIERCX_MRG_PORT_CAP_STAT(a) bdk_pciercx_mrg_port_cap_stat_t
20063 #define bustype_BDK_PCIERCX_MRG_PORT_CAP_STAT(a) BDK_CSR_TYPE_PCICONFIGRC
20064 #define basename_BDK_PCIERCX_MRG_PORT_CAP_STAT(a) "PCIERCX_MRG_PORT_CAP_STAT"
20065 #define busnum_BDK_PCIERCX_MRG_PORT_CAP_STAT(a) (a)
20066 #define arguments_BDK_PCIERCX_MRG_PORT_CAP_STAT(a) (a),-1,-1,-1
20067 
20068 /**
20069  * Register (PCICONFIGRC) pcierc#_msix_cap_cntrl
20070  *
20071  * PCIe RC PCI Express MSI-X Capability ID/MSI-X Next Item Pointer/MSI-X Control Register
20072  */
20073 union bdk_pciercx_msix_cap_cntrl
20074 {
20075     uint32_t u;
20076     struct bdk_pciercx_msix_cap_cntrl_s
20077     {
20078 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20079         uint32_t msixen                : 1;  /**< [ 31: 31](R/W) MSI-X enable. If MSI-X is enabled, MSI and INTx must be disabled. */
20080         uint32_t funm                  : 1;  /**< [ 30: 30](R/W) Function mask.
20081                                                                  0 = Each vectors mask bit determines whether the vector is masked or not.
20082                                                                  1 = All vectors associated with the function are masked, regardless of their respective
20083                                                                  per-vector mask bits. */
20084         uint32_t reserved_27_29        : 3;
20085         uint32_t msixts                : 11; /**< [ 26: 16](RO/WRSL) MSI-X table size encoded as (table size - 1). */
20086         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Writable through PEM()_CFG_WR. However, the application must not
20087                                                                  change this field. */
20088         uint32_t msixcid               : 8;  /**< [  7:  0](RO/H) MSI-X capability ID. */
20089 #else /* Word 0 - Little Endian */
20090         uint32_t msixcid               : 8;  /**< [  7:  0](RO/H) MSI-X capability ID. */
20091         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Writable through PEM()_CFG_WR. However, the application must not
20092                                                                  change this field. */
20093         uint32_t msixts                : 11; /**< [ 26: 16](RO/WRSL) MSI-X table size encoded as (table size - 1). */
20094         uint32_t reserved_27_29        : 3;
20095         uint32_t funm                  : 1;  /**< [ 30: 30](R/W) Function mask.
20096                                                                  0 = Each vectors mask bit determines whether the vector is masked or not.
20097                                                                  1 = All vectors associated with the function are masked, regardless of their respective
20098                                                                  per-vector mask bits. */
20099         uint32_t msixen                : 1;  /**< [ 31: 31](R/W) MSI-X enable. If MSI-X is enabled, MSI and INTx must be disabled. */
20100 #endif /* Word 0 - End */
20101     } s;
20102     /* struct bdk_pciercx_msix_cap_cntrl_s cn; */
20103 };
20104 typedef union bdk_pciercx_msix_cap_cntrl bdk_pciercx_msix_cap_cntrl_t;
20105 
20106 static inline uint64_t BDK_PCIERCX_MSIX_CAP_CNTRL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MSIX_CAP_CNTRL(unsigned long a)20107 static inline uint64_t BDK_PCIERCX_MSIX_CAP_CNTRL(unsigned long a)
20108 {
20109     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20110         return 0xb0ll + 0x100000000ll * ((a) & 0x3);
20111     __bdk_csr_fatal("PCIERCX_MSIX_CAP_CNTRL", 1, a, 0, 0, 0);
20112 }
20113 
20114 #define typedef_BDK_PCIERCX_MSIX_CAP_CNTRL(a) bdk_pciercx_msix_cap_cntrl_t
20115 #define bustype_BDK_PCIERCX_MSIX_CAP_CNTRL(a) BDK_CSR_TYPE_PCICONFIGRC
20116 #define basename_BDK_PCIERCX_MSIX_CAP_CNTRL(a) "PCIERCX_MSIX_CAP_CNTRL"
20117 #define busnum_BDK_PCIERCX_MSIX_CAP_CNTRL(a) (a)
20118 #define arguments_BDK_PCIERCX_MSIX_CAP_CNTRL(a) (a),-1,-1,-1
20119 
20120 /**
20121  * Register (PCICONFIGRC) pcierc#_msix_pba
20122  *
20123  * PCIe RC PCI Express MSI-X PBA Offset and BIR Register
20124  */
20125 union bdk_pciercx_msix_pba
20126 {
20127     uint32_t u;
20128     struct bdk_pciercx_msix_pba_s
20129     {
20130 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20131         uint32_t msixpoffs             : 29; /**< [ 31:  3](RO/WRSL/H) MSI-X table offset register. Base address of the MSI-X PBA, as an offset from the base
20132                                                                  address of the BAR indicated by the table PBA bits. Writable through PEM()_CFG_WR.
20133                                                                  However, the application must not change this field. */
20134         uint32_t msixpbir              : 3;  /**< [  2:  0](RO/WRSL) MSI-X PBA BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
20135                                                                  pending bit array into memory space.
20136                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
20137 #else /* Word 0 - Little Endian */
20138         uint32_t msixpbir              : 3;  /**< [  2:  0](RO/WRSL) MSI-X PBA BAR indicator register (BIR). Indicates which BAR is used to map the MSI-X
20139                                                                  pending bit array into memory space.
20140                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
20141         uint32_t msixpoffs             : 29; /**< [ 31:  3](RO/WRSL/H) MSI-X table offset register. Base address of the MSI-X PBA, as an offset from the base
20142                                                                  address of the BAR indicated by the table PBA bits. Writable through PEM()_CFG_WR.
20143                                                                  However, the application must not change this field. */
20144 #endif /* Word 0 - End */
20145     } s;
20146     /* struct bdk_pciercx_msix_pba_s cn; */
20147 };
20148 typedef union bdk_pciercx_msix_pba bdk_pciercx_msix_pba_t;
20149 
20150 static inline uint64_t BDK_PCIERCX_MSIX_PBA(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MSIX_PBA(unsigned long a)20151 static inline uint64_t BDK_PCIERCX_MSIX_PBA(unsigned long a)
20152 {
20153     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20154         return 0xb8ll + 0x100000000ll * ((a) & 0x3);
20155     __bdk_csr_fatal("PCIERCX_MSIX_PBA", 1, a, 0, 0, 0);
20156 }
20157 
20158 #define typedef_BDK_PCIERCX_MSIX_PBA(a) bdk_pciercx_msix_pba_t
20159 #define bustype_BDK_PCIERCX_MSIX_PBA(a) BDK_CSR_TYPE_PCICONFIGRC
20160 #define basename_BDK_PCIERCX_MSIX_PBA(a) "PCIERCX_MSIX_PBA"
20161 #define busnum_BDK_PCIERCX_MSIX_PBA(a) (a)
20162 #define arguments_BDK_PCIERCX_MSIX_PBA(a) (a),-1,-1,-1
20163 
20164 /**
20165  * Register (PCICONFIGRC) pcierc#_msix_table
20166  *
20167  * PCIe RC PCI Express MSI-X Table Offset and BIR Register
20168  */
20169 union bdk_pciercx_msix_table
20170 {
20171     uint32_t u;
20172     struct bdk_pciercx_msix_table_s
20173     {
20174 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20175         uint32_t msixtoffs             : 29; /**< [ 31:  3](RO/WRSL) MSI-X table offset register. Base address of the MSI-X table, as an offset from the base
20176                                                                  address of the BAR indicated by the table BIR bits. Writable through PEM()_CFG_WR.
20177                                                                  However, the application must not change this field. */
20178         uint32_t msixtbir              : 3;  /**< [  2:  0](RO/WRSL) MSI-X table BAR indicator register (BIR). Indicates which BAR is used to map the
20179                                                                  MSI-X table into memory space. Writable through PEM()_CFG_WR. However, the
20180                                                                  application must not change this field. */
20181 #else /* Word 0 - Little Endian */
20182         uint32_t msixtbir              : 3;  /**< [  2:  0](RO/WRSL) MSI-X table BAR indicator register (BIR). Indicates which BAR is used to map the
20183                                                                  MSI-X table into memory space. Writable through PEM()_CFG_WR. However, the
20184                                                                  application must not change this field. */
20185         uint32_t msixtoffs             : 29; /**< [ 31:  3](RO/WRSL) MSI-X table offset register. Base address of the MSI-X table, as an offset from the base
20186                                                                  address of the BAR indicated by the table BIR bits. Writable through PEM()_CFG_WR.
20187                                                                  However, the application must not change this field. */
20188 #endif /* Word 0 - End */
20189     } s;
20190     /* struct bdk_pciercx_msix_table_s cn; */
20191 };
20192 typedef union bdk_pciercx_msix_table bdk_pciercx_msix_table_t;
20193 
20194 static inline uint64_t BDK_PCIERCX_MSIX_TABLE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_MSIX_TABLE(unsigned long a)20195 static inline uint64_t BDK_PCIERCX_MSIX_TABLE(unsigned long a)
20196 {
20197     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20198         return 0xb4ll + 0x100000000ll * ((a) & 0x3);
20199     __bdk_csr_fatal("PCIERCX_MSIX_TABLE", 1, a, 0, 0, 0);
20200 }
20201 
20202 #define typedef_BDK_PCIERCX_MSIX_TABLE(a) bdk_pciercx_msix_table_t
20203 #define bustype_BDK_PCIERCX_MSIX_TABLE(a) BDK_CSR_TYPE_PCICONFIGRC
20204 #define basename_BDK_PCIERCX_MSIX_TABLE(a) "PCIERCX_MSIX_TABLE"
20205 #define busnum_BDK_PCIERCX_MSIX_TABLE(a) (a)
20206 #define arguments_BDK_PCIERCX_MSIX_TABLE(a) (a),-1,-1,-1
20207 
20208 /**
20209  * Register (PCICONFIGRC) pcierc#_np_rcv_credit
20210  *
20211  * PCIe RC VC0 Nonposted Receive Queue Control Register
20212  */
20213 union bdk_pciercx_np_rcv_credit
20214 {
20215     uint32_t u;
20216     struct bdk_pciercx_np_rcv_credit_s
20217     {
20218 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20219         uint32_t reserved_28_31        : 4;
20220         uint32_t data_sc               : 2;  /**< [ 27: 26](R/W) VC0 scale non-posted data credits. */
20221         uint32_t hdr_sc                : 2;  /**< [ 25: 24](R/W) VC0 scale non-posted header credits. */
20222         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 nonposted TLP queue mode. The operating mode of the nonposted receive queue for VC0,
20223                                                                  used only in the segmented-buffer configuration, writable through PEM()_CFG_WR.
20224                                                                  Only one bit can be set at a time:
20225 
20226                                                                  _ Bit 23 = Bypass.
20227 
20228                                                                  _ Bit 22 = Cut-through.
20229 
20230                                                                  _ Bit 21 = Store-and-forward.
20231 
20232                                                                  The application must not change this field. */
20233         uint32_t reserved_20           : 1;
20234         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL) VC0 nonposted header credits. The number of initial nonposted header credits for VC0, used
20235                                                                  for all receive queue buffer configurations. This field is writable through
20236                                                                  PEM()_CFG_WR. However, the application must not change this field. */
20237         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL) VC0 nonposted data credits. The number of initial nonposted data credits for VC0, used for
20238                                                                  all receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
20239                                                                  However, the application must not change this field. */
20240 #else /* Word 0 - Little Endian */
20241         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL) VC0 nonposted data credits. The number of initial nonposted data credits for VC0, used for
20242                                                                  all receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
20243                                                                  However, the application must not change this field. */
20244         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL) VC0 nonposted header credits. The number of initial nonposted header credits for VC0, used
20245                                                                  for all receive queue buffer configurations. This field is writable through
20246                                                                  PEM()_CFG_WR. However, the application must not change this field. */
20247         uint32_t reserved_20           : 1;
20248         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 nonposted TLP queue mode. The operating mode of the nonposted receive queue for VC0,
20249                                                                  used only in the segmented-buffer configuration, writable through PEM()_CFG_WR.
20250                                                                  Only one bit can be set at a time:
20251 
20252                                                                  _ Bit 23 = Bypass.
20253 
20254                                                                  _ Bit 22 = Cut-through.
20255 
20256                                                                  _ Bit 21 = Store-and-forward.
20257 
20258                                                                  The application must not change this field. */
20259         uint32_t hdr_sc                : 2;  /**< [ 25: 24](R/W) VC0 scale non-posted header credits. */
20260         uint32_t data_sc               : 2;  /**< [ 27: 26](R/W) VC0 scale non-posted data credits. */
20261         uint32_t reserved_28_31        : 4;
20262 #endif /* Word 0 - End */
20263     } s;
20264     /* struct bdk_pciercx_np_rcv_credit_s cn; */
20265 };
20266 typedef union bdk_pciercx_np_rcv_credit bdk_pciercx_np_rcv_credit_t;
20267 
20268 static inline uint64_t BDK_PCIERCX_NP_RCV_CREDIT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_NP_RCV_CREDIT(unsigned long a)20269 static inline uint64_t BDK_PCIERCX_NP_RCV_CREDIT(unsigned long a)
20270 {
20271     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20272         return 0x74cll + 0x100000000ll * ((a) & 0x3);
20273     __bdk_csr_fatal("PCIERCX_NP_RCV_CREDIT", 1, a, 0, 0, 0);
20274 }
20275 
20276 #define typedef_BDK_PCIERCX_NP_RCV_CREDIT(a) bdk_pciercx_np_rcv_credit_t
20277 #define bustype_BDK_PCIERCX_NP_RCV_CREDIT(a) BDK_CSR_TYPE_PCICONFIGRC
20278 #define basename_BDK_PCIERCX_NP_RCV_CREDIT(a) "PCIERCX_NP_RCV_CREDIT"
20279 #define busnum_BDK_PCIERCX_NP_RCV_CREDIT(a) (a)
20280 #define arguments_BDK_PCIERCX_NP_RCV_CREDIT(a) (a),-1,-1,-1
20281 
20282 /**
20283  * Register (PCICONFIGRC) pcierc#_np_xmit_credit
20284  *
20285  * PCIe RC Transmit Nonposted FC Credit Status Register
20286  */
20287 union bdk_pciercx_np_xmit_credit
20288 {
20289     uint32_t u;
20290     struct bdk_pciercx_np_xmit_credit_s
20291     {
20292 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20293         uint32_t reserved_20_31        : 12;
20294         uint32_t tchfcc                : 8;  /**< [ 19: 12](RO/H) Transmit nonposted header FC credits. The nonposted header credits advertised by the
20295                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
20296         uint32_t tcdfcc                : 12; /**< [ 11:  0](RO/H) Transmit nonposted data FC credits. The nonposted data credits advertised by the receiver
20297                                                                  at the other end of the link, updated with each UpdateFC DLLP. */
20298 #else /* Word 0 - Little Endian */
20299         uint32_t tcdfcc                : 12; /**< [ 11:  0](RO/H) Transmit nonposted data FC credits. The nonposted data credits advertised by the receiver
20300                                                                  at the other end of the link, updated with each UpdateFC DLLP. */
20301         uint32_t tchfcc                : 8;  /**< [ 19: 12](RO/H) Transmit nonposted header FC credits. The nonposted header credits advertised by the
20302                                                                  receiver at the other end of the link, updated with each UpdateFC DLLP. */
20303         uint32_t reserved_20_31        : 12;
20304 #endif /* Word 0 - End */
20305     } s;
20306     /* struct bdk_pciercx_np_xmit_credit_s cn; */
20307 };
20308 typedef union bdk_pciercx_np_xmit_credit bdk_pciercx_np_xmit_credit_t;
20309 
20310 static inline uint64_t BDK_PCIERCX_NP_XMIT_CREDIT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_NP_XMIT_CREDIT(unsigned long a)20311 static inline uint64_t BDK_PCIERCX_NP_XMIT_CREDIT(unsigned long a)
20312 {
20313     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20314         return 0x734ll + 0x100000000ll * ((a) & 0x3);
20315     __bdk_csr_fatal("PCIERCX_NP_XMIT_CREDIT", 1, a, 0, 0, 0);
20316 }
20317 
20318 #define typedef_BDK_PCIERCX_NP_XMIT_CREDIT(a) bdk_pciercx_np_xmit_credit_t
20319 #define bustype_BDK_PCIERCX_NP_XMIT_CREDIT(a) BDK_CSR_TYPE_PCICONFIGRC
20320 #define basename_BDK_PCIERCX_NP_XMIT_CREDIT(a) "PCIERCX_NP_XMIT_CREDIT"
20321 #define busnum_BDK_PCIERCX_NP_XMIT_CREDIT(a) (a)
20322 #define arguments_BDK_PCIERCX_NP_XMIT_CREDIT(a) (a),-1,-1,-1
20323 
20324 /**
20325  * Register (PCICONFIGRC) pcierc#_omsg_ptr
20326  *
20327  * PCIe RC Other Message Register
20328  */
20329 union bdk_pciercx_omsg_ptr
20330 {
20331     uint32_t u;
20332     struct bdk_pciercx_omsg_ptr_s
20333     {
20334 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20335         uint32_t omr                   : 32; /**< [ 31:  0](R/W) Other message register. This register can be used for either of the following purposes:
20336 
20337                                                                  * To send a specific PCI Express message, the application writes the payload of the
20338                                                                  message into this register, then sets bit 0 of the port link control register to send the
20339                                                                  message.
20340 
20341                                                                  * To store a corruption pattern for corrupting the LCRC on all TLPs, the application
20342                                                                  places a 32-bit corruption pattern into this register and enables this function by setting
20343                                                                  bit 25 of the port link control register. When enabled, the transmit LCRC result is XORed
20344                                                                  with this pattern before inserting it into the packet. */
20345 #else /* Word 0 - Little Endian */
20346         uint32_t omr                   : 32; /**< [ 31:  0](R/W) Other message register. This register can be used for either of the following purposes:
20347 
20348                                                                  * To send a specific PCI Express message, the application writes the payload of the
20349                                                                  message into this register, then sets bit 0 of the port link control register to send the
20350                                                                  message.
20351 
20352                                                                  * To store a corruption pattern for corrupting the LCRC on all TLPs, the application
20353                                                                  places a 32-bit corruption pattern into this register and enables this function by setting
20354                                                                  bit 25 of the port link control register. When enabled, the transmit LCRC result is XORed
20355                                                                  with this pattern before inserting it into the packet. */
20356 #endif /* Word 0 - End */
20357     } s;
20358     /* struct bdk_pciercx_omsg_ptr_s cn; */
20359 };
20360 typedef union bdk_pciercx_omsg_ptr bdk_pciercx_omsg_ptr_t;
20361 
20362 static inline uint64_t BDK_PCIERCX_OMSG_PTR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_OMSG_PTR(unsigned long a)20363 static inline uint64_t BDK_PCIERCX_OMSG_PTR(unsigned long a)
20364 {
20365     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20366         return 0x704ll + 0x100000000ll * ((a) & 0x3);
20367     __bdk_csr_fatal("PCIERCX_OMSG_PTR", 1, a, 0, 0, 0);
20368 }
20369 
20370 #define typedef_BDK_PCIERCX_OMSG_PTR(a) bdk_pciercx_omsg_ptr_t
20371 #define bustype_BDK_PCIERCX_OMSG_PTR(a) BDK_CSR_TYPE_PCICONFIGRC
20372 #define basename_BDK_PCIERCX_OMSG_PTR(a) "PCIERCX_OMSG_PTR"
20373 #define busnum_BDK_PCIERCX_OMSG_PTR(a) (a)
20374 #define arguments_BDK_PCIERCX_OMSG_PTR(a) (a),-1,-1,-1
20375 
20376 /**
20377  * Register (PCICONFIGRC) pcierc#_ord_rule_ctrl
20378  *
20379  * PCIe RC Order Rule Control Register
20380  */
20381 union bdk_pciercx_ord_rule_ctrl
20382 {
20383     uint32_t u;
20384     struct bdk_pciercx_ord_rule_ctrl_s
20385     {
20386 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20387         uint32_t reserved_16_31        : 16;
20388         uint32_t cpl_pass_p            : 8;  /**< [ 15:  8](R/W) Completion passing posted ordering rule control.
20389                                                                  Determines if a CPL can pass halted P queue.
20390                                                                  0x0 = CPL can not pass P (recommended).
20391                                                                  0x1 = CPL can pass P.
20392                                                                  0x2-0xFF = Reserved. */
20393         uint32_t np_pass_p             : 8;  /**< [  7:  0](R/W) Non-Posted passing posted ordering rule control.
20394                                                                  Determines if a NP can pass halted P queue.
20395                                                                  0x0 = NP can not pass P (recommended).
20396                                                                  0x1 = NP can pass P.
20397                                                                  0x2-0xFF = Reserved. */
20398 #else /* Word 0 - Little Endian */
20399         uint32_t np_pass_p             : 8;  /**< [  7:  0](R/W) Non-Posted passing posted ordering rule control.
20400                                                                  Determines if a NP can pass halted P queue.
20401                                                                  0x0 = NP can not pass P (recommended).
20402                                                                  0x1 = NP can pass P.
20403                                                                  0x2-0xFF = Reserved. */
20404         uint32_t cpl_pass_p            : 8;  /**< [ 15:  8](R/W) Completion passing posted ordering rule control.
20405                                                                  Determines if a CPL can pass halted P queue.
20406                                                                  0x0 = CPL can not pass P (recommended).
20407                                                                  0x1 = CPL can pass P.
20408                                                                  0x2-0xFF = Reserved. */
20409         uint32_t reserved_16_31        : 16;
20410 #endif /* Word 0 - End */
20411     } s;
20412     /* struct bdk_pciercx_ord_rule_ctrl_s cn; */
20413 };
20414 typedef union bdk_pciercx_ord_rule_ctrl bdk_pciercx_ord_rule_ctrl_t;
20415 
20416 static inline uint64_t BDK_PCIERCX_ORD_RULE_CTRL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ORD_RULE_CTRL(unsigned long a)20417 static inline uint64_t BDK_PCIERCX_ORD_RULE_CTRL(unsigned long a)
20418 {
20419     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20420         return 0x8b4ll + 0x100000000ll * ((a) & 0x3);
20421     __bdk_csr_fatal("PCIERCX_ORD_RULE_CTRL", 1, a, 0, 0, 0);
20422 }
20423 
20424 #define typedef_BDK_PCIERCX_ORD_RULE_CTRL(a) bdk_pciercx_ord_rule_ctrl_t
20425 #define bustype_BDK_PCIERCX_ORD_RULE_CTRL(a) BDK_CSR_TYPE_PCICONFIGRC
20426 #define basename_BDK_PCIERCX_ORD_RULE_CTRL(a) "PCIERCX_ORD_RULE_CTRL"
20427 #define busnum_BDK_PCIERCX_ORD_RULE_CTRL(a) (a)
20428 #define arguments_BDK_PCIERCX_ORD_RULE_CTRL(a) (a),-1,-1,-1
20429 
20430 /**
20431  * Register (PCICONFIGRC) pcierc#_p_rcv_credit
20432  *
20433  * PCIe RC VC0 Posted Receive Queue Control Register
20434  */
20435 union bdk_pciercx_p_rcv_credit
20436 {
20437     uint32_t u;
20438     struct bdk_pciercx_p_rcv_credit_s
20439     {
20440 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20441         uint32_t rx_queue_order        : 1;  /**< [ 31: 31](R/W) VC ordering for receive queues. Determines the VC ordering rule for the receive queues,
20442                                                                  used only in the segmented-buffer configuration, writable through PEM()_CFG_WR:
20443                                                                  0 = Round robin.
20444                                                                  1 = Strict ordering, higher numbered VCs have higher priority.
20445 
20446                                                                  However, the application must not change this field. */
20447         uint32_t type_ordering         : 1;  /**< [ 30: 30](RO/WRSL) TLP type ordering for VC0. Determines the TLP type ordering rule for VC0 receive queues,
20448                                                                  used only in the segmented-buffer configuration, writable through
20449                                                                  PEM()_CFG_WR:
20450                                                                  0 = Strict ordering for received TLPs: Posted, then completion, then NonPosted.
20451                                                                  1 = Ordering of received TLPs follows the rules in PCI Express Base Specification.
20452 
20453                                                                  The application must not change this field. */
20454         uint32_t reserved_28_29        : 2;
20455         uint32_t data_sc               : 2;  /**< [ 27: 26](R/W) VC0 scale posted data credits. */
20456         uint32_t hdr_sc                : 2;  /**< [ 25: 24](R/W) VC0 scale posted header credits. */
20457         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 posted TLP queue mode. The operating mode of the posted receive queue for VC0, used
20458                                                                  only in the segmented-buffer configuration, writable through PEM()_CFG_WR. However,
20459                                                                  the application must not change this field.
20460                                                                  Only one bit can be set at a time:
20461 
20462                                                                  _ Bit 23 = Bypass.
20463 
20464                                                                  _ Bit 22 = Cut-through.
20465 
20466                                                                  _ Bit 21 = Store-and-forward. */
20467         uint32_t reserved_20           : 1;
20468         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL/H) VC0 posted header credits. The number of initial posted header credits for VC0, used for
20469                                                                  all receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
20470                                                                  However, the application must not change this field.
20471 
20472                                                                  Reset values:
20473                                                                  _ UPEM:      0x40.
20474                                                                  _ BPEM:      0x20. */
20475         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL/H) VC0 posted data credits. The number of initial posted data credits for VC0, used for all
20476                                                                  receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
20477                                                                  However, the application must not change this field.
20478 
20479                                                                  Reset values:
20480                                                                  _ UPEM:      0x400.
20481                                                                  _ BPEM:      0x200. */
20482 #else /* Word 0 - Little Endian */
20483         uint32_t data_credits          : 12; /**< [ 11:  0](RO/WRSL/H) VC0 posted data credits. The number of initial posted data credits for VC0, used for all
20484                                                                  receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
20485                                                                  However, the application must not change this field.
20486 
20487                                                                  Reset values:
20488                                                                  _ UPEM:      0x400.
20489                                                                  _ BPEM:      0x200. */
20490         uint32_t header_credits        : 8;  /**< [ 19: 12](RO/WRSL/H) VC0 posted header credits. The number of initial posted header credits for VC0, used for
20491                                                                  all receive queue buffer configurations. This field is writable through PEM()_CFG_WR.
20492                                                                  However, the application must not change this field.
20493 
20494                                                                  Reset values:
20495                                                                  _ UPEM:      0x40.
20496                                                                  _ BPEM:      0x20. */
20497         uint32_t reserved_20           : 1;
20498         uint32_t queue_mode            : 3;  /**< [ 23: 21](RO/WRSL) VC0 posted TLP queue mode. The operating mode of the posted receive queue for VC0, used
20499                                                                  only in the segmented-buffer configuration, writable through PEM()_CFG_WR. However,
20500                                                                  the application must not change this field.
20501                                                                  Only one bit can be set at a time:
20502 
20503                                                                  _ Bit 23 = Bypass.
20504 
20505                                                                  _ Bit 22 = Cut-through.
20506 
20507                                                                  _ Bit 21 = Store-and-forward. */
20508         uint32_t hdr_sc                : 2;  /**< [ 25: 24](R/W) VC0 scale posted header credits. */
20509         uint32_t data_sc               : 2;  /**< [ 27: 26](R/W) VC0 scale posted data credits. */
20510         uint32_t reserved_28_29        : 2;
20511         uint32_t type_ordering         : 1;  /**< [ 30: 30](RO/WRSL) TLP type ordering for VC0. Determines the TLP type ordering rule for VC0 receive queues,
20512                                                                  used only in the segmented-buffer configuration, writable through
20513                                                                  PEM()_CFG_WR:
20514                                                                  0 = Strict ordering for received TLPs: Posted, then completion, then NonPosted.
20515                                                                  1 = Ordering of received TLPs follows the rules in PCI Express Base Specification.
20516 
20517                                                                  The application must not change this field. */
20518         uint32_t rx_queue_order        : 1;  /**< [ 31: 31](R/W) VC ordering for receive queues. Determines the VC ordering rule for the receive queues,
20519                                                                  used only in the segmented-buffer configuration, writable through PEM()_CFG_WR:
20520                                                                  0 = Round robin.
20521                                                                  1 = Strict ordering, higher numbered VCs have higher priority.
20522 
20523                                                                  However, the application must not change this field. */
20524 #endif /* Word 0 - End */
20525     } s;
20526     /* struct bdk_pciercx_p_rcv_credit_s cn; */
20527 };
20528 typedef union bdk_pciercx_p_rcv_credit bdk_pciercx_p_rcv_credit_t;
20529 
20530 static inline uint64_t BDK_PCIERCX_P_RCV_CREDIT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_P_RCV_CREDIT(unsigned long a)20531 static inline uint64_t BDK_PCIERCX_P_RCV_CREDIT(unsigned long a)
20532 {
20533     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20534         return 0x748ll + 0x100000000ll * ((a) & 0x3);
20535     __bdk_csr_fatal("PCIERCX_P_RCV_CREDIT", 1, a, 0, 0, 0);
20536 }
20537 
20538 #define typedef_BDK_PCIERCX_P_RCV_CREDIT(a) bdk_pciercx_p_rcv_credit_t
20539 #define bustype_BDK_PCIERCX_P_RCV_CREDIT(a) BDK_CSR_TYPE_PCICONFIGRC
20540 #define basename_BDK_PCIERCX_P_RCV_CREDIT(a) "PCIERCX_P_RCV_CREDIT"
20541 #define busnum_BDK_PCIERCX_P_RCV_CREDIT(a) (a)
20542 #define arguments_BDK_PCIERCX_P_RCV_CREDIT(a) (a),-1,-1,-1
20543 
20544 /**
20545  * Register (PCICONFIGRC) pcierc#_p_xmit_credit
20546  *
20547  * PCIe RC Transmit Posted FC Credit Status Register
20548  */
20549 union bdk_pciercx_p_xmit_credit
20550 {
20551     uint32_t u;
20552     struct bdk_pciercx_p_xmit_credit_s
20553     {
20554 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20555         uint32_t reserved_20_31        : 12;
20556         uint32_t tphfcc                : 8;  /**< [ 19: 12](RO/H) Transmit posted header FC credits. The posted header credits advertised by the receiver at
20557                                                                  the other end of the link, updated with each UpdateFC DLLP. */
20558         uint32_t tpdfcc                : 12; /**< [ 11:  0](RO/H) Transmit posted data FC credits. The posted data credits advertised by the receiver at the
20559                                                                  other end of the link, updated with each UpdateFC DLLP. */
20560 #else /* Word 0 - Little Endian */
20561         uint32_t tpdfcc                : 12; /**< [ 11:  0](RO/H) Transmit posted data FC credits. The posted data credits advertised by the receiver at the
20562                                                                  other end of the link, updated with each UpdateFC DLLP. */
20563         uint32_t tphfcc                : 8;  /**< [ 19: 12](RO/H) Transmit posted header FC credits. The posted header credits advertised by the receiver at
20564                                                                  the other end of the link, updated with each UpdateFC DLLP. */
20565         uint32_t reserved_20_31        : 12;
20566 #endif /* Word 0 - End */
20567     } s;
20568     /* struct bdk_pciercx_p_xmit_credit_s cn; */
20569 };
20570 typedef union bdk_pciercx_p_xmit_credit bdk_pciercx_p_xmit_credit_t;
20571 
20572 static inline uint64_t BDK_PCIERCX_P_XMIT_CREDIT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_P_XMIT_CREDIT(unsigned long a)20573 static inline uint64_t BDK_PCIERCX_P_XMIT_CREDIT(unsigned long a)
20574 {
20575     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20576         return 0x730ll + 0x100000000ll * ((a) & 0x3);
20577     __bdk_csr_fatal("PCIERCX_P_XMIT_CREDIT", 1, a, 0, 0, 0);
20578 }
20579 
20580 #define typedef_BDK_PCIERCX_P_XMIT_CREDIT(a) bdk_pciercx_p_xmit_credit_t
20581 #define bustype_BDK_PCIERCX_P_XMIT_CREDIT(a) BDK_CSR_TYPE_PCICONFIGRC
20582 #define basename_BDK_PCIERCX_P_XMIT_CREDIT(a) "PCIERCX_P_XMIT_CREDIT"
20583 #define busnum_BDK_PCIERCX_P_XMIT_CREDIT(a) (a)
20584 #define arguments_BDK_PCIERCX_P_XMIT_CREDIT(a) (a),-1,-1,-1
20585 
20586 /**
20587  * Register (PCICONFIGRC) pcierc#_pb_base
20588  *
20589  * PCIe RC Power Budgeting Extended Capability Header Register
20590  */
20591 union bdk_pciercx_pb_base
20592 {
20593     uint32_t u;
20594     struct bdk_pciercx_pb_base_s
20595     {
20596 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20597         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
20598                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
20599         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
20600                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
20601         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
20602                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
20603 #else /* Word 0 - Little Endian */
20604         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
20605                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
20606         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
20607                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
20608         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
20609                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
20610 #endif /* Word 0 - End */
20611     } s;
20612     /* struct bdk_pciercx_pb_base_s cn; */
20613 };
20614 typedef union bdk_pciercx_pb_base bdk_pciercx_pb_base_t;
20615 
20616 static inline uint64_t BDK_PCIERCX_PB_BASE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PB_BASE(unsigned long a)20617 static inline uint64_t BDK_PCIERCX_PB_BASE(unsigned long a)
20618 {
20619     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20620         return 0x158ll + 0x100000000ll * ((a) & 0x3);
20621     __bdk_csr_fatal("PCIERCX_PB_BASE", 1, a, 0, 0, 0);
20622 }
20623 
20624 #define typedef_BDK_PCIERCX_PB_BASE(a) bdk_pciercx_pb_base_t
20625 #define bustype_BDK_PCIERCX_PB_BASE(a) BDK_CSR_TYPE_PCICONFIGRC
20626 #define basename_BDK_PCIERCX_PB_BASE(a) "PCIERCX_PB_BASE"
20627 #define busnum_BDK_PCIERCX_PB_BASE(a) (a)
20628 #define arguments_BDK_PCIERCX_PB_BASE(a) (a),-1,-1,-1
20629 
20630 /**
20631  * Register (PCICONFIGRC) pcierc#_pb_cap_hdr
20632  *
20633  * PCIe RC Power Budget Capability Header Register
20634  */
20635 union bdk_pciercx_pb_cap_hdr
20636 {
20637     uint32_t u;
20638     struct bdk_pciercx_pb_cap_hdr_s
20639     {
20640 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20641         uint32_t reserved_1_31         : 31;
20642         uint32_t sapb                  : 1;  /**< [  0:  0](RO/WRSL) System allocated PB. */
20643 #else /* Word 0 - Little Endian */
20644         uint32_t sapb                  : 1;  /**< [  0:  0](RO/WRSL) System allocated PB. */
20645         uint32_t reserved_1_31         : 31;
20646 #endif /* Word 0 - End */
20647     } s;
20648     /* struct bdk_pciercx_pb_cap_hdr_s cn; */
20649 };
20650 typedef union bdk_pciercx_pb_cap_hdr bdk_pciercx_pb_cap_hdr_t;
20651 
20652 static inline uint64_t BDK_PCIERCX_PB_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PB_CAP_HDR(unsigned long a)20653 static inline uint64_t BDK_PCIERCX_PB_CAP_HDR(unsigned long a)
20654 {
20655     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20656         return 0x164ll + 0x100000000ll * ((a) & 0x3);
20657     __bdk_csr_fatal("PCIERCX_PB_CAP_HDR", 1, a, 0, 0, 0);
20658 }
20659 
20660 #define typedef_BDK_PCIERCX_PB_CAP_HDR(a) bdk_pciercx_pb_cap_hdr_t
20661 #define bustype_BDK_PCIERCX_PB_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
20662 #define basename_BDK_PCIERCX_PB_CAP_HDR(a) "PCIERCX_PB_CAP_HDR"
20663 #define busnum_BDK_PCIERCX_PB_CAP_HDR(a) (a)
20664 #define arguments_BDK_PCIERCX_PB_CAP_HDR(a) (a),-1,-1,-1
20665 
20666 /**
20667  * Register (PCICONFIGRC) pcierc#_pb_data
20668  *
20669  * PCIe RC Power Budgeting Data Register
20670  */
20671 union bdk_pciercx_pb_data
20672 {
20673     uint32_t u;
20674     struct bdk_pciercx_pb_data_s
20675     {
20676 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20677         uint32_t reserved_21_31        : 11;
20678         uint32_t prs                   : 3;  /**< [ 20: 18](RO) Power rail state. */
20679         uint32_t typ                   : 3;  /**< [ 17: 15](RO) Type of operating condition. */
20680         uint32_t pms                   : 2;  /**< [ 14: 13](RO) PM state. */
20681         uint32_t pmss                  : 3;  /**< [ 12: 10](RO) PM substate. */
20682         uint32_t pds                   : 2;  /**< [  9:  8](RO) Data scale. */
20683         uint32_t pbp                   : 8;  /**< [  7:  0](RO) Base power. */
20684 #else /* Word 0 - Little Endian */
20685         uint32_t pbp                   : 8;  /**< [  7:  0](RO) Base power. */
20686         uint32_t pds                   : 2;  /**< [  9:  8](RO) Data scale. */
20687         uint32_t pmss                  : 3;  /**< [ 12: 10](RO) PM substate. */
20688         uint32_t pms                   : 2;  /**< [ 14: 13](RO) PM state. */
20689         uint32_t typ                   : 3;  /**< [ 17: 15](RO) Type of operating condition. */
20690         uint32_t prs                   : 3;  /**< [ 20: 18](RO) Power rail state. */
20691         uint32_t reserved_21_31        : 11;
20692 #endif /* Word 0 - End */
20693     } s;
20694     /* struct bdk_pciercx_pb_data_s cn; */
20695 };
20696 typedef union bdk_pciercx_pb_data bdk_pciercx_pb_data_t;
20697 
20698 static inline uint64_t BDK_PCIERCX_PB_DATA(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PB_DATA(unsigned long a)20699 static inline uint64_t BDK_PCIERCX_PB_DATA(unsigned long a)
20700 {
20701     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20702         return 0x160ll + 0x100000000ll * ((a) & 0x3);
20703     __bdk_csr_fatal("PCIERCX_PB_DATA", 1, a, 0, 0, 0);
20704 }
20705 
20706 #define typedef_BDK_PCIERCX_PB_DATA(a) bdk_pciercx_pb_data_t
20707 #define bustype_BDK_PCIERCX_PB_DATA(a) BDK_CSR_TYPE_PCICONFIGRC
20708 #define basename_BDK_PCIERCX_PB_DATA(a) "PCIERCX_PB_DATA"
20709 #define busnum_BDK_PCIERCX_PB_DATA(a) (a)
20710 #define arguments_BDK_PCIERCX_PB_DATA(a) (a),-1,-1,-1
20711 
20712 /**
20713  * Register (PCICONFIGRC) pcierc#_pb_data_select
20714  *
20715  * PCIe RC Power Budgeting Data Select Register
20716  */
20717 union bdk_pciercx_pb_data_select
20718 {
20719     uint32_t u;
20720     struct bdk_pciercx_pb_data_select_s
20721     {
20722 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20723         uint32_t reserved_8_31         : 24;
20724         uint32_t dsel                  : 8;  /**< [  7:  0](R/W) Data select register. */
20725 #else /* Word 0 - Little Endian */
20726         uint32_t dsel                  : 8;  /**< [  7:  0](R/W) Data select register. */
20727         uint32_t reserved_8_31         : 24;
20728 #endif /* Word 0 - End */
20729     } s;
20730     /* struct bdk_pciercx_pb_data_select_s cn; */
20731 };
20732 typedef union bdk_pciercx_pb_data_select bdk_pciercx_pb_data_select_t;
20733 
20734 static inline uint64_t BDK_PCIERCX_PB_DATA_SELECT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PB_DATA_SELECT(unsigned long a)20735 static inline uint64_t BDK_PCIERCX_PB_DATA_SELECT(unsigned long a)
20736 {
20737     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20738         return 0x15cll + 0x100000000ll * ((a) & 0x3);
20739     __bdk_csr_fatal("PCIERCX_PB_DATA_SELECT", 1, a, 0, 0, 0);
20740 }
20741 
20742 #define typedef_BDK_PCIERCX_PB_DATA_SELECT(a) bdk_pciercx_pb_data_select_t
20743 #define bustype_BDK_PCIERCX_PB_DATA_SELECT(a) BDK_CSR_TYPE_PCICONFIGRC
20744 #define basename_BDK_PCIERCX_PB_DATA_SELECT(a) "PCIERCX_PB_DATA_SELECT"
20745 #define busnum_BDK_PCIERCX_PB_DATA_SELECT(a) (a)
20746 #define arguments_BDK_PCIERCX_PB_DATA_SELECT(a) (a),-1,-1,-1
20747 
20748 /**
20749  * Register (PCICONFIGRC) pcierc#_phy_ctl
20750  *
20751  * PCIe RC PHY Control Register
20752  */
20753 union bdk_pciercx_phy_ctl
20754 {
20755     uint32_t u;
20756     struct bdk_pciercx_phy_ctl_s
20757     {
20758 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20759         uint32_t phy_ctrl              : 32; /**< [ 31:  0](R/W) PHY control.  Sideband control signaling (not supported). */
20760 #else /* Word 0 - Little Endian */
20761         uint32_t phy_ctrl              : 32; /**< [ 31:  0](R/W) PHY control.  Sideband control signaling (not supported). */
20762 #endif /* Word 0 - End */
20763     } s;
20764     /* struct bdk_pciercx_phy_ctl_s cn; */
20765 };
20766 typedef union bdk_pciercx_phy_ctl bdk_pciercx_phy_ctl_t;
20767 
20768 static inline uint64_t BDK_PCIERCX_PHY_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PHY_CTL(unsigned long a)20769 static inline uint64_t BDK_PCIERCX_PHY_CTL(unsigned long a)
20770 {
20771     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20772         return 0x814ll + 0x100000000ll * ((a) & 0x3);
20773     __bdk_csr_fatal("PCIERCX_PHY_CTL", 1, a, 0, 0, 0);
20774 }
20775 
20776 #define typedef_BDK_PCIERCX_PHY_CTL(a) bdk_pciercx_phy_ctl_t
20777 #define bustype_BDK_PCIERCX_PHY_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
20778 #define basename_BDK_PCIERCX_PHY_CTL(a) "PCIERCX_PHY_CTL"
20779 #define busnum_BDK_PCIERCX_PHY_CTL(a) (a)
20780 #define arguments_BDK_PCIERCX_PHY_CTL(a) (a),-1,-1,-1
20781 
20782 /**
20783  * Register (PCICONFIGRC) pcierc#_phy_gen3_ctl
20784  *
20785  * PCIe RC Gen3 Control Register
20786  */
20787 union bdk_pciercx_phy_gen3_ctl
20788 {
20789     uint32_t u;
20790     struct bdk_pciercx_phy_gen3_ctl_s
20791     {
20792 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20793         uint32_t reserved_26_31        : 6;
20794         uint32_t rss                   : 2;  /**< [ 25: 24](R/W) Data rate for shadow register. */
20795         uint32_t eiedd                 : 1;  /**< [ 23: 23](R/W) Eq InvalidRequest and RxEqEval different time assertion disable.  Disable the assertion of
20796                                                                  Eq InvalidRequest and RxEqEval at different time. */
20797         uint32_t us8etd                : 1;  /**< [ 22: 22](R/W/H) Upstream port send 8GT/s EQ TS2 disable. The base spec defines that USP can
20798                                                                  optionally send 8GT EQ TS2 and it means USP can set DSP TxPreset value in Gen4
20799                                                                  Data Rate. If this register set to 0, USP sends 8GT EQ TS2. If this register
20800                                                                  set to 1, USP does not send 8GT EQ TS2. This applies to upstream ports only.
20801                                                                  No Function for downstream ports.
20802                                                                  Note: When CX_GEN4_SPEED, this register is shadow register for Gen3 and Gen4 data
20803                                                                  rate. If RATE_SHADOW_SEL==00b, this register is RSVD and cannot be written.
20804                                                                  If RATE_SHADOW_SEL==01b, this register is for Gen4 data rate and can be written. */
20805         uint32_t aed                   : 1;  /**< [ 21: 21](R/W) Autonomous equalization disable. When the controller is in L0 state at Gen3
20806                                                                  data rate and equalization was completed successfully in Autonomous EQ Mechanism,
20807                                                                  setting this bit in DSP will not direct the controller to Recovery state to
20808                                                                  perform Gen4 equalization. Link stays in Gen3 rate and DSP sends DLLPs to USP.
20809                                                                  If the bit is 0, DSP will block DLLPs and direct the link to perform Gen4 EQ
20810                                                                  in Autonomous Mechanism.
20811                                                                  Note: When CX_GEN4_SPEED, this register is shadow register for Gen3 and Gen4 data
20812                                                                  rate. If RATE_SHADOW_SEL==00b, this register is RSVD and cannot be written.
20813                                                                  If RATE_SHADOW_SEL==01b, this register is for Gen4 data rate and can be written. */
20814         uint32_t reserved_19_20        : 2;
20815         uint32_t dcbd                  : 1;  /**< [ 18: 18](R/W) Disable balance disable. Disable DC balance feature. */
20816         uint32_t dtdd                  : 1;  /**< [ 17: 17](R/W) DLLP transmission delay disable. Disable delay transmission of DLLPs before equalization. */
20817         uint32_t ed                    : 1;  /**< [ 16: 16](R/W) Equalization disable. Disable equalization feature. */
20818         uint32_t reserved_14_15        : 2;
20819         uint32_t rxeq_rgrdless_rsts    : 1;  /**< [ 13: 13](R/W) The controller as Gen3 EQ master asserts RxEqEval to instruct the
20820                                                                  PHY to do Rx adaptation and evaluation.
20821                                                                  0x0 = Asserts after 1 us and 2 TS1 received from remote partner.
20822                                                                  0x1 = Asserts after 500 ns regardless of TS's received or not. */
20823         uint32_t rxeq_ph01_en          : 1;  /**< [ 12: 12](R/W) Rx equalization phase 0/phase 1 hold enable. */
20824         uint32_t erd                   : 1;  /**< [ 11: 11](R/W) Equalization redo disable. Disable requesting reset of EIEOS count during equalization. */
20825         uint32_t ecrd                  : 1;  /**< [ 10: 10](R/W) Equalization EIEOS count reset disable. Disable requesting reset of EIEOS count during
20826                                                                  equalization. */
20827         uint32_t ep2p3d                : 1;  /**< [  9:  9](R/W) Equalization phase 2 and phase 3 disable. This applies to downstream ports only. */
20828         uint32_t dsg3                  : 1;  /**< [  8:  8](R/W) Disable scrambler for Gen3 data rate. The Gen3 scrambler/descrambler within the core needs
20829                                                                  to be disabled when the scrambling function is implemented outside of the core (within the
20830                                                                  PHY). */
20831         uint32_t reserved_1_7          : 7;
20832         uint32_t grizdnc               : 1;  /**< [  0:  0](R/W) Gen3 receiver impedance ZRX-DC not compliant. */
20833 #else /* Word 0 - Little Endian */
20834         uint32_t grizdnc               : 1;  /**< [  0:  0](R/W) Gen3 receiver impedance ZRX-DC not compliant. */
20835         uint32_t reserved_1_7          : 7;
20836         uint32_t dsg3                  : 1;  /**< [  8:  8](R/W) Disable scrambler for Gen3 data rate. The Gen3 scrambler/descrambler within the core needs
20837                                                                  to be disabled when the scrambling function is implemented outside of the core (within the
20838                                                                  PHY). */
20839         uint32_t ep2p3d                : 1;  /**< [  9:  9](R/W) Equalization phase 2 and phase 3 disable. This applies to downstream ports only. */
20840         uint32_t ecrd                  : 1;  /**< [ 10: 10](R/W) Equalization EIEOS count reset disable. Disable requesting reset of EIEOS count during
20841                                                                  equalization. */
20842         uint32_t erd                   : 1;  /**< [ 11: 11](R/W) Equalization redo disable. Disable requesting reset of EIEOS count during equalization. */
20843         uint32_t rxeq_ph01_en          : 1;  /**< [ 12: 12](R/W) Rx equalization phase 0/phase 1 hold enable. */
20844         uint32_t rxeq_rgrdless_rsts    : 1;  /**< [ 13: 13](R/W) The controller as Gen3 EQ master asserts RxEqEval to instruct the
20845                                                                  PHY to do Rx adaptation and evaluation.
20846                                                                  0x0 = Asserts after 1 us and 2 TS1 received from remote partner.
20847                                                                  0x1 = Asserts after 500 ns regardless of TS's received or not. */
20848         uint32_t reserved_14_15        : 2;
20849         uint32_t ed                    : 1;  /**< [ 16: 16](R/W) Equalization disable. Disable equalization feature. */
20850         uint32_t dtdd                  : 1;  /**< [ 17: 17](R/W) DLLP transmission delay disable. Disable delay transmission of DLLPs before equalization. */
20851         uint32_t dcbd                  : 1;  /**< [ 18: 18](R/W) Disable balance disable. Disable DC balance feature. */
20852         uint32_t reserved_19_20        : 2;
20853         uint32_t aed                   : 1;  /**< [ 21: 21](R/W) Autonomous equalization disable. When the controller is in L0 state at Gen3
20854                                                                  data rate and equalization was completed successfully in Autonomous EQ Mechanism,
20855                                                                  setting this bit in DSP will not direct the controller to Recovery state to
20856                                                                  perform Gen4 equalization. Link stays in Gen3 rate and DSP sends DLLPs to USP.
20857                                                                  If the bit is 0, DSP will block DLLPs and direct the link to perform Gen4 EQ
20858                                                                  in Autonomous Mechanism.
20859                                                                  Note: When CX_GEN4_SPEED, this register is shadow register for Gen3 and Gen4 data
20860                                                                  rate. If RATE_SHADOW_SEL==00b, this register is RSVD and cannot be written.
20861                                                                  If RATE_SHADOW_SEL==01b, this register is for Gen4 data rate and can be written. */
20862         uint32_t us8etd                : 1;  /**< [ 22: 22](R/W/H) Upstream port send 8GT/s EQ TS2 disable. The base spec defines that USP can
20863                                                                  optionally send 8GT EQ TS2 and it means USP can set DSP TxPreset value in Gen4
20864                                                                  Data Rate. If this register set to 0, USP sends 8GT EQ TS2. If this register
20865                                                                  set to 1, USP does not send 8GT EQ TS2. This applies to upstream ports only.
20866                                                                  No Function for downstream ports.
20867                                                                  Note: When CX_GEN4_SPEED, this register is shadow register for Gen3 and Gen4 data
20868                                                                  rate. If RATE_SHADOW_SEL==00b, this register is RSVD and cannot be written.
20869                                                                  If RATE_SHADOW_SEL==01b, this register is for Gen4 data rate and can be written. */
20870         uint32_t eiedd                 : 1;  /**< [ 23: 23](R/W) Eq InvalidRequest and RxEqEval different time assertion disable.  Disable the assertion of
20871                                                                  Eq InvalidRequest and RxEqEval at different time. */
20872         uint32_t rss                   : 2;  /**< [ 25: 24](R/W) Data rate for shadow register. */
20873         uint32_t reserved_26_31        : 6;
20874 #endif /* Word 0 - End */
20875     } s;
20876     /* struct bdk_pciercx_phy_gen3_ctl_s cn; */
20877 };
20878 typedef union bdk_pciercx_phy_gen3_ctl bdk_pciercx_phy_gen3_ctl_t;
20879 
20880 static inline uint64_t BDK_PCIERCX_PHY_GEN3_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PHY_GEN3_CTL(unsigned long a)20881 static inline uint64_t BDK_PCIERCX_PHY_GEN3_CTL(unsigned long a)
20882 {
20883     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20884         return 0x890ll + 0x100000000ll * ((a) & 0x3);
20885     __bdk_csr_fatal("PCIERCX_PHY_GEN3_CTL", 1, a, 0, 0, 0);
20886 }
20887 
20888 #define typedef_BDK_PCIERCX_PHY_GEN3_CTL(a) bdk_pciercx_phy_gen3_ctl_t
20889 #define bustype_BDK_PCIERCX_PHY_GEN3_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
20890 #define basename_BDK_PCIERCX_PHY_GEN3_CTL(a) "PCIERCX_PHY_GEN3_CTL"
20891 #define busnum_BDK_PCIERCX_PHY_GEN3_CTL(a) (a)
20892 #define arguments_BDK_PCIERCX_PHY_GEN3_CTL(a) (a),-1,-1,-1
20893 
20894 /**
20895  * Register (PCICONFIGRC) pcierc#_phy_intop_ctl
20896  *
20897  * PCIe RC PHY Interoperability Control Register
20898  */
20899 union bdk_pciercx_phy_intop_ctl
20900 {
20901     uint32_t u;
20902     struct bdk_pciercx_phy_intop_ctl_s
20903     {
20904 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20905         uint32_t reserved_11_31        : 21;
20906         uint32_t l1_clk_sel            : 1;  /**< [ 10: 10](R/W) L1 clock control bit.
20907                                                                    0 = Controller requests aux_clk switch and core_clk gating in L1.
20908                                                                    1 = Controller does not request aux_clk switch and core_clk gating in L1. */
20909         uint32_t l1_nowait_p1          : 1;  /**< [  9:  9](RO) L1 entry control bit.
20910                                                                    0 = Core waits for the PHY to acknowledge transition to P1 before entering L1.
20911                                                                    1 = Core does not wait for PHY to acknowledge transition to P1 before entering L1. */
20912         uint32_t l1sub_exit_mode       : 1;  /**< [  8:  8](R/W) L1 exit control using phy_mac_pclkack_n.
20913                                                                    0 = Core waits for the PHY to assert phy_mac_pclkack_n before exiting L1.
20914                                                                    1 = Core exits L1 without waiting for the PHY to assert phy_mac_pclkack_n. */
20915         uint32_t reserved_7            : 1;
20916         uint32_t rxstby_ctl            : 7;  /**< [  6:  0](R/W) Rxstandby control. Bits 0..5 determine if the controller asserts the RxStandby signal
20917                                                                  (mac_phy_rxstandby) in the indicated condition. Bit 6 enables the controller
20918                                                                  to perform the RxStandby/RxStandbyStatus handshake.
20919                                                                    0x0 = Rx EIOS and subsequent T TX-IDLE-MIN.
20920                                                                    0x1 = Rate Change.
20921                                                                    0x2 = Inactive lane for upconfigure/downconfigure.
20922                                                                    0x3 = PowerDown = P1orP2.
20923                                                                    0x4 = RxL0s.Idle.
20924                                                                    0x5 = EI Infer in L0.
20925                                                                    0x6 = Execute RxStandby/RxStandbyStatus Handshake. */
20926 #else /* Word 0 - Little Endian */
20927         uint32_t rxstby_ctl            : 7;  /**< [  6:  0](R/W) Rxstandby control. Bits 0..5 determine if the controller asserts the RxStandby signal
20928                                                                  (mac_phy_rxstandby) in the indicated condition. Bit 6 enables the controller
20929                                                                  to perform the RxStandby/RxStandbyStatus handshake.
20930                                                                    0x0 = Rx EIOS and subsequent T TX-IDLE-MIN.
20931                                                                    0x1 = Rate Change.
20932                                                                    0x2 = Inactive lane for upconfigure/downconfigure.
20933                                                                    0x3 = PowerDown = P1orP2.
20934                                                                    0x4 = RxL0s.Idle.
20935                                                                    0x5 = EI Infer in L0.
20936                                                                    0x6 = Execute RxStandby/RxStandbyStatus Handshake. */
20937         uint32_t reserved_7            : 1;
20938         uint32_t l1sub_exit_mode       : 1;  /**< [  8:  8](R/W) L1 exit control using phy_mac_pclkack_n.
20939                                                                    0 = Core waits for the PHY to assert phy_mac_pclkack_n before exiting L1.
20940                                                                    1 = Core exits L1 without waiting for the PHY to assert phy_mac_pclkack_n. */
20941         uint32_t l1_nowait_p1          : 1;  /**< [  9:  9](RO) L1 entry control bit.
20942                                                                    0 = Core waits for the PHY to acknowledge transition to P1 before entering L1.
20943                                                                    1 = Core does not wait for PHY to acknowledge transition to P1 before entering L1. */
20944         uint32_t l1_clk_sel            : 1;  /**< [ 10: 10](R/W) L1 clock control bit.
20945                                                                    0 = Controller requests aux_clk switch and core_clk gating in L1.
20946                                                                    1 = Controller does not request aux_clk switch and core_clk gating in L1. */
20947         uint32_t reserved_11_31        : 21;
20948 #endif /* Word 0 - End */
20949     } s;
20950     /* struct bdk_pciercx_phy_intop_ctl_s cn; */
20951 };
20952 typedef union bdk_pciercx_phy_intop_ctl bdk_pciercx_phy_intop_ctl_t;
20953 
20954 static inline uint64_t BDK_PCIERCX_PHY_INTOP_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PHY_INTOP_CTL(unsigned long a)20955 static inline uint64_t BDK_PCIERCX_PHY_INTOP_CTL(unsigned long a)
20956 {
20957     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20958         return 0x8c4ll + 0x100000000ll * ((a) & 0x3);
20959     __bdk_csr_fatal("PCIERCX_PHY_INTOP_CTL", 1, a, 0, 0, 0);
20960 }
20961 
20962 #define typedef_BDK_PCIERCX_PHY_INTOP_CTL(a) bdk_pciercx_phy_intop_ctl_t
20963 #define bustype_BDK_PCIERCX_PHY_INTOP_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
20964 #define basename_BDK_PCIERCX_PHY_INTOP_CTL(a) "PCIERCX_PHY_INTOP_CTL"
20965 #define busnum_BDK_PCIERCX_PHY_INTOP_CTL(a) (a)
20966 #define arguments_BDK_PCIERCX_PHY_INTOP_CTL(a) (a),-1,-1,-1
20967 
20968 /**
20969  * Register (PCICONFIGRC) pcierc#_phy_status
20970  *
20971  * PCIe RC PHY Status Register
20972  */
20973 union bdk_pciercx_phy_status
20974 {
20975     uint32_t u;
20976     struct bdk_pciercx_phy_status_s
20977     {
20978 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
20979         uint32_t phy_stat              : 32; /**< [ 31:  0](RO/H) PHY status.  Sideband control signaling (not supported). */
20980 #else /* Word 0 - Little Endian */
20981         uint32_t phy_stat              : 32; /**< [ 31:  0](RO/H) PHY status.  Sideband control signaling (not supported). */
20982 #endif /* Word 0 - End */
20983     } s;
20984     /* struct bdk_pciercx_phy_status_s cn; */
20985 };
20986 typedef union bdk_pciercx_phy_status bdk_pciercx_phy_status_t;
20987 
20988 static inline uint64_t BDK_PCIERCX_PHY_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PHY_STATUS(unsigned long a)20989 static inline uint64_t BDK_PCIERCX_PHY_STATUS(unsigned long a)
20990 {
20991     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
20992         return 0x810ll + 0x100000000ll * ((a) & 0x3);
20993     __bdk_csr_fatal("PCIERCX_PHY_STATUS", 1, a, 0, 0, 0);
20994 }
20995 
20996 #define typedef_BDK_PCIERCX_PHY_STATUS(a) bdk_pciercx_phy_status_t
20997 #define bustype_BDK_PCIERCX_PHY_STATUS(a) BDK_CSR_TYPE_PCICONFIGRC
20998 #define basename_BDK_PCIERCX_PHY_STATUS(a) "PCIERCX_PHY_STATUS"
20999 #define busnum_BDK_PCIERCX_PHY_STATUS(a) (a)
21000 #define arguments_BDK_PCIERCX_PHY_STATUS(a) (a),-1,-1,-1
21001 
21002 /**
21003  * Register (PCICONFIGRC) pcierc#_pipe_rel
21004  *
21005  * PCIe RC Pipe Related Register
21006  */
21007 union bdk_pciercx_pipe_rel
21008 {
21009     uint32_t u;
21010     struct bdk_pciercx_pipe_rel_s
21011     {
21012 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21013         uint32_t reserved_8_31         : 24;
21014         uint32_t tx_msg_wbuf_depth     : 4;  /**< [  7:  4](RO/H) Tx message bus write buffer depth. */
21015         uint32_t rx_msg_wbuf_depth     : 4;  /**< [  3:  0](RO/H) Rx message bus write buffer depth. */
21016 #else /* Word 0 - Little Endian */
21017         uint32_t rx_msg_wbuf_depth     : 4;  /**< [  3:  0](RO/H) Rx message bus write buffer depth. */
21018         uint32_t tx_msg_wbuf_depth     : 4;  /**< [  7:  4](RO/H) Tx message bus write buffer depth. */
21019         uint32_t reserved_8_31         : 24;
21020 #endif /* Word 0 - End */
21021     } s;
21022     /* struct bdk_pciercx_pipe_rel_s cn; */
21023 };
21024 typedef union bdk_pciercx_pipe_rel bdk_pciercx_pipe_rel_t;
21025 
21026 static inline uint64_t BDK_PCIERCX_PIPE_REL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PIPE_REL(unsigned long a)21027 static inline uint64_t BDK_PCIERCX_PIPE_REL(unsigned long a)
21028 {
21029     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21030         return 0xb90ll + 0x100000000ll * ((a) & 0x3);
21031     __bdk_csr_fatal("PCIERCX_PIPE_REL", 1, a, 0, 0, 0);
21032 }
21033 
21034 #define typedef_BDK_PCIERCX_PIPE_REL(a) bdk_pciercx_pipe_rel_t
21035 #define bustype_BDK_PCIERCX_PIPE_REL(a) BDK_CSR_TYPE_PCICONFIGRC
21036 #define basename_BDK_PCIERCX_PIPE_REL(a) "PCIERCX_PIPE_REL"
21037 #define busnum_BDK_PCIERCX_PIPE_REL(a) (a)
21038 #define arguments_BDK_PCIERCX_PIPE_REL(a) (a),-1,-1,-1
21039 
21040 /**
21041  * Register (PCICONFIGRC) pcierc#_pl16g_cap
21042  *
21043  * PCIe RC 16.0 GT/s Capabilities Register
21044  */
21045 union bdk_pciercx_pl16g_cap
21046 {
21047     uint32_t u;
21048     struct bdk_pciercx_pl16g_cap_s
21049     {
21050 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21051         uint32_t reserved_0_31         : 32;
21052 #else /* Word 0 - Little Endian */
21053         uint32_t reserved_0_31         : 32;
21054 #endif /* Word 0 - End */
21055     } s;
21056     /* struct bdk_pciercx_pl16g_cap_s cn; */
21057 };
21058 typedef union bdk_pciercx_pl16g_cap bdk_pciercx_pl16g_cap_t;
21059 
21060 static inline uint64_t BDK_PCIERCX_PL16G_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_CAP(unsigned long a)21061 static inline uint64_t BDK_PCIERCX_PL16G_CAP(unsigned long a)
21062 {
21063     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21064         return 0x1acll + 0x100000000ll * ((a) & 0x3);
21065     __bdk_csr_fatal("PCIERCX_PL16G_CAP", 1, a, 0, 0, 0);
21066 }
21067 
21068 #define typedef_BDK_PCIERCX_PL16G_CAP(a) bdk_pciercx_pl16g_cap_t
21069 #define bustype_BDK_PCIERCX_PL16G_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
21070 #define basename_BDK_PCIERCX_PL16G_CAP(a) "PCIERCX_PL16G_CAP"
21071 #define busnum_BDK_PCIERCX_PL16G_CAP(a) (a)
21072 #define arguments_BDK_PCIERCX_PL16G_CAP(a) (a),-1,-1,-1
21073 
21074 /**
21075  * Register (PCICONFIGRC) pcierc#_pl16g_ctl
21076  *
21077  * PCIe RC 16.0 GT/s Control Register
21078  */
21079 union bdk_pciercx_pl16g_ctl
21080 {
21081     uint32_t u;
21082     struct bdk_pciercx_pl16g_ctl_s
21083     {
21084 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21085         uint32_t reserved_0_31         : 32;
21086 #else /* Word 0 - Little Endian */
21087         uint32_t reserved_0_31         : 32;
21088 #endif /* Word 0 - End */
21089     } s;
21090     /* struct bdk_pciercx_pl16g_ctl_s cn; */
21091 };
21092 typedef union bdk_pciercx_pl16g_ctl bdk_pciercx_pl16g_ctl_t;
21093 
21094 static inline uint64_t BDK_PCIERCX_PL16G_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_CTL(unsigned long a)21095 static inline uint64_t BDK_PCIERCX_PL16G_CTL(unsigned long a)
21096 {
21097     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21098         return 0x1b0ll + 0x100000000ll * ((a) & 0x3);
21099     __bdk_csr_fatal("PCIERCX_PL16G_CTL", 1, a, 0, 0, 0);
21100 }
21101 
21102 #define typedef_BDK_PCIERCX_PL16G_CTL(a) bdk_pciercx_pl16g_ctl_t
21103 #define bustype_BDK_PCIERCX_PL16G_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
21104 #define basename_BDK_PCIERCX_PL16G_CTL(a) "PCIERCX_PL16G_CTL"
21105 #define busnum_BDK_PCIERCX_PL16G_CTL(a) (a)
21106 #define arguments_BDK_PCIERCX_PL16G_CTL(a) (a),-1,-1,-1
21107 
21108 /**
21109  * Register (PCICONFIGRC) pcierc#_pl16g_eq_ctl0123
21110  *
21111  * PCIe RC 16.0 GT/s Lane Equalization Control for Lane 0-3 Register
21112  */
21113 union bdk_pciercx_pl16g_eq_ctl0123
21114 {
21115     uint32_t u;
21116     struct bdk_pciercx_pl16g_eq_ctl0123_s
21117     {
21118 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21119         uint32_t l3utp                 : 4;  /**< [ 31: 28](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 3. */
21120         uint32_t l3dtp                 : 4;  /**< [ 27: 24](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 3. */
21121         uint32_t l2utp                 : 4;  /**< [ 23: 20](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 2. */
21122         uint32_t l2dtp                 : 4;  /**< [ 19: 16](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 2. */
21123         uint32_t l1utp                 : 4;  /**< [ 15: 12](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 1. */
21124         uint32_t l1dtp                 : 4;  /**< [ 11:  8](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 1. */
21125         uint32_t l0utp                 : 4;  /**< [  7:  4](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 0. */
21126         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 0. */
21127 #else /* Word 0 - Little Endian */
21128         uint32_t l0dtp                 : 4;  /**< [  3:  0](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 0. */
21129         uint32_t l0utp                 : 4;  /**< [  7:  4](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 0. */
21130         uint32_t l1dtp                 : 4;  /**< [ 11:  8](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 1. */
21131         uint32_t l1utp                 : 4;  /**< [ 15: 12](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 1. */
21132         uint32_t l2dtp                 : 4;  /**< [ 19: 16](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 2. */
21133         uint32_t l2utp                 : 4;  /**< [ 23: 20](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 2. */
21134         uint32_t l3dtp                 : 4;  /**< [ 27: 24](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 3. */
21135         uint32_t l3utp                 : 4;  /**< [ 31: 28](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 3. */
21136 #endif /* Word 0 - End */
21137     } s;
21138     /* struct bdk_pciercx_pl16g_eq_ctl0123_s cn; */
21139 };
21140 typedef union bdk_pciercx_pl16g_eq_ctl0123 bdk_pciercx_pl16g_eq_ctl0123_t;
21141 
21142 static inline uint64_t BDK_PCIERCX_PL16G_EQ_CTL0123(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_EQ_CTL0123(unsigned long a)21143 static inline uint64_t BDK_PCIERCX_PL16G_EQ_CTL0123(unsigned long a)
21144 {
21145     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21146         return 0x1c8ll + 0x100000000ll * ((a) & 0x3);
21147     __bdk_csr_fatal("PCIERCX_PL16G_EQ_CTL0123", 1, a, 0, 0, 0);
21148 }
21149 
21150 #define typedef_BDK_PCIERCX_PL16G_EQ_CTL0123(a) bdk_pciercx_pl16g_eq_ctl0123_t
21151 #define bustype_BDK_PCIERCX_PL16G_EQ_CTL0123(a) BDK_CSR_TYPE_PCICONFIGRC
21152 #define basename_BDK_PCIERCX_PL16G_EQ_CTL0123(a) "PCIERCX_PL16G_EQ_CTL0123"
21153 #define busnum_BDK_PCIERCX_PL16G_EQ_CTL0123(a) (a)
21154 #define arguments_BDK_PCIERCX_PL16G_EQ_CTL0123(a) (a),-1,-1,-1
21155 
21156 /**
21157  * Register (PCICONFIGRC) pcierc#_pl16g_eq_ctl12131415
21158  *
21159  * PCIe RC 16.0 GT/s Lane Equalization Control for Lane 12-15 Register
21160  */
21161 union bdk_pciercx_pl16g_eq_ctl12131415
21162 {
21163     uint32_t u;
21164     struct bdk_pciercx_pl16g_eq_ctl12131415_s
21165     {
21166 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21167         uint32_t l15utp                : 4;  /**< [ 31: 28](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 15. */
21168         uint32_t l15dtp                : 4;  /**< [ 27: 24](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 15. */
21169         uint32_t l14utp                : 4;  /**< [ 23: 20](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 14. */
21170         uint32_t l14dtp                : 4;  /**< [ 19: 16](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 14. */
21171         uint32_t l13utp                : 4;  /**< [ 15: 12](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 13. */
21172         uint32_t l13dtp                : 4;  /**< [ 11:  8](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 13. */
21173         uint32_t l12utp                : 4;  /**< [  7:  4](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 12. */
21174         uint32_t l12dtp                : 4;  /**< [  3:  0](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 12. */
21175 #else /* Word 0 - Little Endian */
21176         uint32_t l12dtp                : 4;  /**< [  3:  0](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 12. */
21177         uint32_t l12utp                : 4;  /**< [  7:  4](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 12. */
21178         uint32_t l13dtp                : 4;  /**< [ 11:  8](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 13. */
21179         uint32_t l13utp                : 4;  /**< [ 15: 12](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 13. */
21180         uint32_t l14dtp                : 4;  /**< [ 19: 16](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 14. */
21181         uint32_t l14utp                : 4;  /**< [ 23: 20](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 14. */
21182         uint32_t l15dtp                : 4;  /**< [ 27: 24](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 15. */
21183         uint32_t l15utp                : 4;  /**< [ 31: 28](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 15. */
21184 #endif /* Word 0 - End */
21185     } s;
21186     /* struct bdk_pciercx_pl16g_eq_ctl12131415_s cn; */
21187 };
21188 typedef union bdk_pciercx_pl16g_eq_ctl12131415 bdk_pciercx_pl16g_eq_ctl12131415_t;
21189 
21190 static inline uint64_t BDK_PCIERCX_PL16G_EQ_CTL12131415(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_EQ_CTL12131415(unsigned long a)21191 static inline uint64_t BDK_PCIERCX_PL16G_EQ_CTL12131415(unsigned long a)
21192 {
21193     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21194         return 0x1d4ll + 0x100000000ll * ((a) & 0x3);
21195     __bdk_csr_fatal("PCIERCX_PL16G_EQ_CTL12131415", 1, a, 0, 0, 0);
21196 }
21197 
21198 #define typedef_BDK_PCIERCX_PL16G_EQ_CTL12131415(a) bdk_pciercx_pl16g_eq_ctl12131415_t
21199 #define bustype_BDK_PCIERCX_PL16G_EQ_CTL12131415(a) BDK_CSR_TYPE_PCICONFIGRC
21200 #define basename_BDK_PCIERCX_PL16G_EQ_CTL12131415(a) "PCIERCX_PL16G_EQ_CTL12131415"
21201 #define busnum_BDK_PCIERCX_PL16G_EQ_CTL12131415(a) (a)
21202 #define arguments_BDK_PCIERCX_PL16G_EQ_CTL12131415(a) (a),-1,-1,-1
21203 
21204 /**
21205  * Register (PCICONFIGRC) pcierc#_pl16g_eq_ctl4567
21206  *
21207  * PCIe RC 16.0 GT/s Lane Equalization Control for Lane 4-7 Register
21208  */
21209 union bdk_pciercx_pl16g_eq_ctl4567
21210 {
21211     uint32_t u;
21212     struct bdk_pciercx_pl16g_eq_ctl4567_s
21213     {
21214 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21215         uint32_t l7utp                 : 4;  /**< [ 31: 28](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 7. */
21216         uint32_t l7dtp                 : 4;  /**< [ 27: 24](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 7. */
21217         uint32_t l6utp                 : 4;  /**< [ 23: 20](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 6. */
21218         uint32_t l6dtp                 : 4;  /**< [ 19: 16](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 6. */
21219         uint32_t l5utp                 : 4;  /**< [ 15: 12](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 5. */
21220         uint32_t l5dtp                 : 4;  /**< [ 11:  8](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 5. */
21221         uint32_t l4utp                 : 4;  /**< [  7:  4](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 4. */
21222         uint32_t l4dtp                 : 4;  /**< [  3:  0](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 4. */
21223 #else /* Word 0 - Little Endian */
21224         uint32_t l4dtp                 : 4;  /**< [  3:  0](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 4. */
21225         uint32_t l4utp                 : 4;  /**< [  7:  4](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 4. */
21226         uint32_t l5dtp                 : 4;  /**< [ 11:  8](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 5. */
21227         uint32_t l5utp                 : 4;  /**< [ 15: 12](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 5. */
21228         uint32_t l6dtp                 : 4;  /**< [ 19: 16](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 6. */
21229         uint32_t l6utp                 : 4;  /**< [ 23: 20](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 6. */
21230         uint32_t l7dtp                 : 4;  /**< [ 27: 24](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 7. */
21231         uint32_t l7utp                 : 4;  /**< [ 31: 28](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 7. */
21232 #endif /* Word 0 - End */
21233     } s;
21234     /* struct bdk_pciercx_pl16g_eq_ctl4567_s cn; */
21235 };
21236 typedef union bdk_pciercx_pl16g_eq_ctl4567 bdk_pciercx_pl16g_eq_ctl4567_t;
21237 
21238 static inline uint64_t BDK_PCIERCX_PL16G_EQ_CTL4567(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_EQ_CTL4567(unsigned long a)21239 static inline uint64_t BDK_PCIERCX_PL16G_EQ_CTL4567(unsigned long a)
21240 {
21241     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21242         return 0x1ccll + 0x100000000ll * ((a) & 0x3);
21243     __bdk_csr_fatal("PCIERCX_PL16G_EQ_CTL4567", 1, a, 0, 0, 0);
21244 }
21245 
21246 #define typedef_BDK_PCIERCX_PL16G_EQ_CTL4567(a) bdk_pciercx_pl16g_eq_ctl4567_t
21247 #define bustype_BDK_PCIERCX_PL16G_EQ_CTL4567(a) BDK_CSR_TYPE_PCICONFIGRC
21248 #define basename_BDK_PCIERCX_PL16G_EQ_CTL4567(a) "PCIERCX_PL16G_EQ_CTL4567"
21249 #define busnum_BDK_PCIERCX_PL16G_EQ_CTL4567(a) (a)
21250 #define arguments_BDK_PCIERCX_PL16G_EQ_CTL4567(a) (a),-1,-1,-1
21251 
21252 /**
21253  * Register (PCICONFIGRC) pcierc#_pl16g_eq_ctl891011
21254  *
21255  * PCIe RC 16.0 GT/s Lane Equalization Control for Lane 8-11 Register
21256  */
21257 union bdk_pciercx_pl16g_eq_ctl891011
21258 {
21259     uint32_t u;
21260     struct bdk_pciercx_pl16g_eq_ctl891011_s
21261     {
21262 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21263         uint32_t l11utp                : 4;  /**< [ 31: 28](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 11. */
21264         uint32_t l11dtp                : 4;  /**< [ 27: 24](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 11. */
21265         uint32_t l10utp                : 4;  /**< [ 23: 20](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 10. */
21266         uint32_t l10dtp                : 4;  /**< [ 19: 16](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 10. */
21267         uint32_t l9utp                 : 4;  /**< [ 15: 12](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 9. */
21268         uint32_t l9dtp                 : 4;  /**< [ 11:  8](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 9. */
21269         uint32_t l8utp                 : 4;  /**< [  7:  4](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 8. */
21270         uint32_t l8dtp                 : 4;  /**< [  3:  0](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 8. */
21271 #else /* Word 0 - Little Endian */
21272         uint32_t l8dtp                 : 4;  /**< [  3:  0](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 8. */
21273         uint32_t l8utp                 : 4;  /**< [  7:  4](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 8. */
21274         uint32_t l9dtp                 : 4;  /**< [ 11:  8](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 9. */
21275         uint32_t l9utp                 : 4;  /**< [ 15: 12](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 9. */
21276         uint32_t l10dtp                : 4;  /**< [ 19: 16](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 10. */
21277         uint32_t l10utp                : 4;  /**< [ 23: 20](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 10. */
21278         uint32_t l11dtp                : 4;  /**< [ 27: 24](RO/WRSL) Downstream port 16.0 GT/s transmitter preset 11. */
21279         uint32_t l11utp                : 4;  /**< [ 31: 28](RO/WRSL) Upstream port 16.0 GT/s transmitter preset 11. */
21280 #endif /* Word 0 - End */
21281     } s;
21282     /* struct bdk_pciercx_pl16g_eq_ctl891011_s cn; */
21283 };
21284 typedef union bdk_pciercx_pl16g_eq_ctl891011 bdk_pciercx_pl16g_eq_ctl891011_t;
21285 
21286 static inline uint64_t BDK_PCIERCX_PL16G_EQ_CTL891011(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_EQ_CTL891011(unsigned long a)21287 static inline uint64_t BDK_PCIERCX_PL16G_EQ_CTL891011(unsigned long a)
21288 {
21289     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21290         return 0x1d0ll + 0x100000000ll * ((a) & 0x3);
21291     __bdk_csr_fatal("PCIERCX_PL16G_EQ_CTL891011", 1, a, 0, 0, 0);
21292 }
21293 
21294 #define typedef_BDK_PCIERCX_PL16G_EQ_CTL891011(a) bdk_pciercx_pl16g_eq_ctl891011_t
21295 #define bustype_BDK_PCIERCX_PL16G_EQ_CTL891011(a) BDK_CSR_TYPE_PCICONFIGRC
21296 #define basename_BDK_PCIERCX_PL16G_EQ_CTL891011(a) "PCIERCX_PL16G_EQ_CTL891011"
21297 #define busnum_BDK_PCIERCX_PL16G_EQ_CTL891011(a) (a)
21298 #define arguments_BDK_PCIERCX_PL16G_EQ_CTL891011(a) (a),-1,-1,-1
21299 
21300 /**
21301  * Register (PCICONFIGRC) pcierc#_pl16g_ext_cap_hdr
21302  *
21303  * PCIe RC Pysical Layer 16.0 GT/s Extended Capability Header Register
21304  */
21305 union bdk_pciercx_pl16g_ext_cap_hdr
21306 {
21307     uint32_t u;
21308     struct bdk_pciercx_pl16g_ext_cap_hdr_s
21309     {
21310 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21311         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
21312                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
21313         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
21314                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
21315         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
21316                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
21317 #else /* Word 0 - Little Endian */
21318         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
21319                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
21320         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
21321                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
21322         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
21323                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
21324 #endif /* Word 0 - End */
21325     } s;
21326     /* struct bdk_pciercx_pl16g_ext_cap_hdr_s cn; */
21327 };
21328 typedef union bdk_pciercx_pl16g_ext_cap_hdr bdk_pciercx_pl16g_ext_cap_hdr_t;
21329 
21330 static inline uint64_t BDK_PCIERCX_PL16G_EXT_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_EXT_CAP_HDR(unsigned long a)21331 static inline uint64_t BDK_PCIERCX_PL16G_EXT_CAP_HDR(unsigned long a)
21332 {
21333     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21334         return 0x1a8ll + 0x100000000ll * ((a) & 0x3);
21335     __bdk_csr_fatal("PCIERCX_PL16G_EXT_CAP_HDR", 1, a, 0, 0, 0);
21336 }
21337 
21338 #define typedef_BDK_PCIERCX_PL16G_EXT_CAP_HDR(a) bdk_pciercx_pl16g_ext_cap_hdr_t
21339 #define bustype_BDK_PCIERCX_PL16G_EXT_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
21340 #define basename_BDK_PCIERCX_PL16G_EXT_CAP_HDR(a) "PCIERCX_PL16G_EXT_CAP_HDR"
21341 #define busnum_BDK_PCIERCX_PL16G_EXT_CAP_HDR(a) (a)
21342 #define arguments_BDK_PCIERCX_PL16G_EXT_CAP_HDR(a) (a),-1,-1,-1
21343 
21344 /**
21345  * Register (PCICONFIGRC) pcierc#_pl16g_fret_dpar_stat
21346  *
21347  * PCIe RC 16.0 GT/s First Retimer Data Parity Mismatch Status Register
21348  */
21349 union bdk_pciercx_pl16g_fret_dpar_stat
21350 {
21351     uint32_t u;
21352     struct bdk_pciercx_pl16g_fret_dpar_stat_s
21353     {
21354 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21355         uint32_t reserved_16_31        : 16;
21356         uint32_t frt_dp_status         : 16; /**< [ 15:  0](R/W/H) First retimer data parity mismatch status. */
21357 #else /* Word 0 - Little Endian */
21358         uint32_t frt_dp_status         : 16; /**< [ 15:  0](R/W/H) First retimer data parity mismatch status. */
21359         uint32_t reserved_16_31        : 16;
21360 #endif /* Word 0 - End */
21361     } s;
21362     /* struct bdk_pciercx_pl16g_fret_dpar_stat_s cn; */
21363 };
21364 typedef union bdk_pciercx_pl16g_fret_dpar_stat bdk_pciercx_pl16g_fret_dpar_stat_t;
21365 
21366 static inline uint64_t BDK_PCIERCX_PL16G_FRET_DPAR_STAT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_FRET_DPAR_STAT(unsigned long a)21367 static inline uint64_t BDK_PCIERCX_PL16G_FRET_DPAR_STAT(unsigned long a)
21368 {
21369     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21370         return 0x1bcll + 0x100000000ll * ((a) & 0x3);
21371     __bdk_csr_fatal("PCIERCX_PL16G_FRET_DPAR_STAT", 1, a, 0, 0, 0);
21372 }
21373 
21374 #define typedef_BDK_PCIERCX_PL16G_FRET_DPAR_STAT(a) bdk_pciercx_pl16g_fret_dpar_stat_t
21375 #define bustype_BDK_PCIERCX_PL16G_FRET_DPAR_STAT(a) BDK_CSR_TYPE_PCICONFIGRC
21376 #define basename_BDK_PCIERCX_PL16G_FRET_DPAR_STAT(a) "PCIERCX_PL16G_FRET_DPAR_STAT"
21377 #define busnum_BDK_PCIERCX_PL16G_FRET_DPAR_STAT(a) (a)
21378 #define arguments_BDK_PCIERCX_PL16G_FRET_DPAR_STAT(a) (a),-1,-1,-1
21379 
21380 /**
21381  * Register (PCICONFIGRC) pcierc#_pl16g_lc_dpar_stat
21382  *
21383  * PCIe RC 16.0 GT/s Local Data Parity Mismatch Status Register
21384  */
21385 union bdk_pciercx_pl16g_lc_dpar_stat
21386 {
21387     uint32_t u;
21388     struct bdk_pciercx_pl16g_lc_dpar_stat_s
21389     {
21390 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21391         uint32_t reserved_16_31        : 16;
21392         uint32_t ldp_status            : 16; /**< [ 15:  0](R/W/H) Local data parity mismatch status. */
21393 #else /* Word 0 - Little Endian */
21394         uint32_t ldp_status            : 16; /**< [ 15:  0](R/W/H) Local data parity mismatch status. */
21395         uint32_t reserved_16_31        : 16;
21396 #endif /* Word 0 - End */
21397     } s;
21398     /* struct bdk_pciercx_pl16g_lc_dpar_stat_s cn; */
21399 };
21400 typedef union bdk_pciercx_pl16g_lc_dpar_stat bdk_pciercx_pl16g_lc_dpar_stat_t;
21401 
21402 static inline uint64_t BDK_PCIERCX_PL16G_LC_DPAR_STAT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_LC_DPAR_STAT(unsigned long a)21403 static inline uint64_t BDK_PCIERCX_PL16G_LC_DPAR_STAT(unsigned long a)
21404 {
21405     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21406         return 0x1b8ll + 0x100000000ll * ((a) & 0x3);
21407     __bdk_csr_fatal("PCIERCX_PL16G_LC_DPAR_STAT", 1, a, 0, 0, 0);
21408 }
21409 
21410 #define typedef_BDK_PCIERCX_PL16G_LC_DPAR_STAT(a) bdk_pciercx_pl16g_lc_dpar_stat_t
21411 #define bustype_BDK_PCIERCX_PL16G_LC_DPAR_STAT(a) BDK_CSR_TYPE_PCICONFIGRC
21412 #define basename_BDK_PCIERCX_PL16G_LC_DPAR_STAT(a) "PCIERCX_PL16G_LC_DPAR_STAT"
21413 #define busnum_BDK_PCIERCX_PL16G_LC_DPAR_STAT(a) (a)
21414 #define arguments_BDK_PCIERCX_PL16G_LC_DPAR_STAT(a) (a),-1,-1,-1
21415 
21416 /**
21417  * Register (PCICONFIGRC) pcierc#_pl16g_sret_dpar_stat
21418  *
21419  * PCIe RC 16.0 GT/s Second Retimer Data Parity Mismatch Status Register
21420  */
21421 union bdk_pciercx_pl16g_sret_dpar_stat
21422 {
21423     uint32_t u;
21424     struct bdk_pciercx_pl16g_sret_dpar_stat_s
21425     {
21426 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21427         uint32_t reserved_16_31        : 16;
21428         uint32_t srt_dp_status         : 16; /**< [ 15:  0](R/W/H) Second retimer data parity mismatch status. */
21429 #else /* Word 0 - Little Endian */
21430         uint32_t srt_dp_status         : 16; /**< [ 15:  0](R/W/H) Second retimer data parity mismatch status. */
21431         uint32_t reserved_16_31        : 16;
21432 #endif /* Word 0 - End */
21433     } s;
21434     /* struct bdk_pciercx_pl16g_sret_dpar_stat_s cn; */
21435 };
21436 typedef union bdk_pciercx_pl16g_sret_dpar_stat bdk_pciercx_pl16g_sret_dpar_stat_t;
21437 
21438 static inline uint64_t BDK_PCIERCX_PL16G_SRET_DPAR_STAT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_SRET_DPAR_STAT(unsigned long a)21439 static inline uint64_t BDK_PCIERCX_PL16G_SRET_DPAR_STAT(unsigned long a)
21440 {
21441     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21442         return 0x1c0ll + 0x100000000ll * ((a) & 0x3);
21443     __bdk_csr_fatal("PCIERCX_PL16G_SRET_DPAR_STAT", 1, a, 0, 0, 0);
21444 }
21445 
21446 #define typedef_BDK_PCIERCX_PL16G_SRET_DPAR_STAT(a) bdk_pciercx_pl16g_sret_dpar_stat_t
21447 #define bustype_BDK_PCIERCX_PL16G_SRET_DPAR_STAT(a) BDK_CSR_TYPE_PCICONFIGRC
21448 #define basename_BDK_PCIERCX_PL16G_SRET_DPAR_STAT(a) "PCIERCX_PL16G_SRET_DPAR_STAT"
21449 #define busnum_BDK_PCIERCX_PL16G_SRET_DPAR_STAT(a) (a)
21450 #define arguments_BDK_PCIERCX_PL16G_SRET_DPAR_STAT(a) (a),-1,-1,-1
21451 
21452 /**
21453  * Register (PCICONFIGRC) pcierc#_pl16g_status
21454  *
21455  * PCIe RC 16.0 GT/s Status Register
21456  */
21457 union bdk_pciercx_pl16g_status
21458 {
21459     uint32_t u;
21460     struct bdk_pciercx_pl16g_status_s
21461     {
21462 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21463         uint32_t reserved_5_31         : 27;
21464         uint32_t leq_req               : 1;  /**< [  4:  4](R/W/H) Link equalization request 16.0 GT/s */
21465         uint32_t eq_cpl_p3             : 1;  /**< [  3:  3](RO/H) Equalization 16.0 GT/s phase 3 successful. */
21466         uint32_t eq_cpl_p2             : 1;  /**< [  2:  2](RO/H) Equalization 16.0 GT/s phase 3 successful. */
21467         uint32_t eq_cpl_p1             : 1;  /**< [  1:  1](RO/H) Equalization 16.0 GT/s phase 3 successful. */
21468         uint32_t eq_cpl                : 1;  /**< [  0:  0](RO/H) Equalization 16.0 GT/s complete. */
21469 #else /* Word 0 - Little Endian */
21470         uint32_t eq_cpl                : 1;  /**< [  0:  0](RO/H) Equalization 16.0 GT/s complete. */
21471         uint32_t eq_cpl_p1             : 1;  /**< [  1:  1](RO/H) Equalization 16.0 GT/s phase 3 successful. */
21472         uint32_t eq_cpl_p2             : 1;  /**< [  2:  2](RO/H) Equalization 16.0 GT/s phase 3 successful. */
21473         uint32_t eq_cpl_p3             : 1;  /**< [  3:  3](RO/H) Equalization 16.0 GT/s phase 3 successful. */
21474         uint32_t leq_req               : 1;  /**< [  4:  4](R/W/H) Link equalization request 16.0 GT/s */
21475         uint32_t reserved_5_31         : 27;
21476 #endif /* Word 0 - End */
21477     } s;
21478     /* struct bdk_pciercx_pl16g_status_s cn; */
21479 };
21480 typedef union bdk_pciercx_pl16g_status bdk_pciercx_pl16g_status_t;
21481 
21482 static inline uint64_t BDK_PCIERCX_PL16G_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL16G_STATUS(unsigned long a)21483 static inline uint64_t BDK_PCIERCX_PL16G_STATUS(unsigned long a)
21484 {
21485     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21486         return 0x1b4ll + 0x100000000ll * ((a) & 0x3);
21487     __bdk_csr_fatal("PCIERCX_PL16G_STATUS", 1, a, 0, 0, 0);
21488 }
21489 
21490 #define typedef_BDK_PCIERCX_PL16G_STATUS(a) bdk_pciercx_pl16g_status_t
21491 #define bustype_BDK_PCIERCX_PL16G_STATUS(a) BDK_CSR_TYPE_PCICONFIGRC
21492 #define basename_BDK_PCIERCX_PL16G_STATUS(a) "PCIERCX_PL16G_STATUS"
21493 #define busnum_BDK_PCIERCX_PL16G_STATUS(a) (a)
21494 #define arguments_BDK_PCIERCX_PL16G_STATUS(a) (a),-1,-1,-1
21495 
21496 /**
21497  * Register (PCICONFIGRC) pcierc#_pl_ltr_latency
21498  *
21499  * PCIe RC LTR Latency Register
21500  */
21501 union bdk_pciercx_pl_ltr_latency
21502 {
21503     uint32_t u;
21504     struct bdk_pciercx_pl_ltr_latency_s
21505     {
21506 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21507         uint32_t nslreq                : 1;  /**< [ 31: 31](R/W) No snoop latency requirement. */
21508         uint32_t reserved_29_30        : 2;
21509         uint32_t nsls                  : 3;  /**< [ 28: 26](R/W) No snoop latency scale. */
21510         uint32_t nslv                  : 10; /**< [ 25: 16](R/W) No snoop latency value. */
21511         uint32_t slr                   : 1;  /**< [ 15: 15](R/W) Snoop latency requirement. */
21512         uint32_t reserved_13_14        : 2;
21513         uint32_t sls                   : 3;  /**< [ 12: 10](R/W) Snoop latency scale. */
21514         uint32_t slv                   : 10; /**< [  9:  0](R/W) Snoop latency value. */
21515 #else /* Word 0 - Little Endian */
21516         uint32_t slv                   : 10; /**< [  9:  0](R/W) Snoop latency value. */
21517         uint32_t sls                   : 3;  /**< [ 12: 10](R/W) Snoop latency scale. */
21518         uint32_t reserved_13_14        : 2;
21519         uint32_t slr                   : 1;  /**< [ 15: 15](R/W) Snoop latency requirement. */
21520         uint32_t nslv                  : 10; /**< [ 25: 16](R/W) No snoop latency value. */
21521         uint32_t nsls                  : 3;  /**< [ 28: 26](R/W) No snoop latency scale. */
21522         uint32_t reserved_29_30        : 2;
21523         uint32_t nslreq                : 1;  /**< [ 31: 31](R/W) No snoop latency requirement. */
21524 #endif /* Word 0 - End */
21525     } s;
21526     /* struct bdk_pciercx_pl_ltr_latency_s cn; */
21527 };
21528 typedef union bdk_pciercx_pl_ltr_latency bdk_pciercx_pl_ltr_latency_t;
21529 
21530 static inline uint64_t BDK_PCIERCX_PL_LTR_LATENCY(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PL_LTR_LATENCY(unsigned long a)21531 static inline uint64_t BDK_PCIERCX_PL_LTR_LATENCY(unsigned long a)
21532 {
21533     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21534         return 0xb30ll + 0x100000000ll * ((a) & 0x3);
21535     __bdk_csr_fatal("PCIERCX_PL_LTR_LATENCY", 1, a, 0, 0, 0);
21536 }
21537 
21538 #define typedef_BDK_PCIERCX_PL_LTR_LATENCY(a) bdk_pciercx_pl_ltr_latency_t
21539 #define bustype_BDK_PCIERCX_PL_LTR_LATENCY(a) BDK_CSR_TYPE_PCICONFIGRC
21540 #define basename_BDK_PCIERCX_PL_LTR_LATENCY(a) "PCIERCX_PL_LTR_LATENCY"
21541 #define busnum_BDK_PCIERCX_PL_LTR_LATENCY(a) (a)
21542 #define arguments_BDK_PCIERCX_PL_LTR_LATENCY(a) (a),-1,-1,-1
21543 
21544 /**
21545  * Register (PCICONFIGRC) pcierc#_pm_cap_id
21546  *
21547  * PCIe RC Power Management Capability ID Register
21548  */
21549 union bdk_pciercx_pm_cap_id
21550 {
21551     uint32_t u;
21552     struct bdk_pciercx_pm_cap_id_s
21553     {
21554 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21555         uint32_t pmes                  : 5;  /**< [ 31: 27](RO/WRSL/H) PME_Support. A value of 0x0 for any bit indicates that the device (or function) is not
21556                                                                  capable of generating PME messages while in that power state:
21557 
21558                                                                  _ Bit 11: If set, PME Messages can be generated from D0.
21559 
21560                                                                  _ Bit 12: If set, PME Messages can be generated from D1.
21561 
21562                                                                  _ Bit 13: If set, PME Messages can be generated from D2.
21563 
21564                                                                  _ Bit 14: If set, PME Messages can be generated from D3hot.
21565 
21566                                                                  _ Bit 15: If set, PME Messages can be generated from D3cold.
21567 
21568                                                                  This field is writable through PEM()_CFG_WR. However, the application must not
21569                                                                  change this field. */
21570         uint32_t d2s                   : 1;  /**< [ 26: 26](RO/WRSL) D2 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
21571         uint32_t d1s                   : 1;  /**< [ 25: 25](RO/WRSL) D1 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
21572         uint32_t auxc                  : 3;  /**< [ 24: 22](RO/WRSL) AUX current, writable through PEM()_CFG_WR. However, the application must not change
21573                                                                  this field. */
21574         uint32_t dsi                   : 1;  /**< [ 21: 21](RO/WRSL) Device specific initialization (DSI), writable through PEM()_CFG_WR.
21575                                                                  However, the application must not change this field. */
21576         uint32_t reserved_20           : 1;
21577         uint32_t pme_clock             : 1;  /**< [ 19: 19](RO) PME clock, hardwired to zero. */
21578         uint32_t pmsv                  : 3;  /**< [ 18: 16](RO/WRSL) Power management specification version, writable through
21579                                                                  PEM()_CFG_WR. However, the application must not change this field. */
21580         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the PCIe capabilities list by default, writable
21581                                                                  through PEM()_CFG_WR.  For a root complex, should be changed by configuration software
21582                                                                  to 0x50 (Enhanced Allocation). */
21583         uint32_t pmcid                 : 8;  /**< [  7:  0](RO) Power management capability ID. */
21584 #else /* Word 0 - Little Endian */
21585         uint32_t pmcid                 : 8;  /**< [  7:  0](RO) Power management capability ID. */
21586         uint32_t ncp                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability pointer. Points to the PCIe capabilities list by default, writable
21587                                                                  through PEM()_CFG_WR.  For a root complex, should be changed by configuration software
21588                                                                  to 0x50 (Enhanced Allocation). */
21589         uint32_t pmsv                  : 3;  /**< [ 18: 16](RO/WRSL) Power management specification version, writable through
21590                                                                  PEM()_CFG_WR. However, the application must not change this field. */
21591         uint32_t pme_clock             : 1;  /**< [ 19: 19](RO) PME clock, hardwired to zero. */
21592         uint32_t reserved_20           : 1;
21593         uint32_t dsi                   : 1;  /**< [ 21: 21](RO/WRSL) Device specific initialization (DSI), writable through PEM()_CFG_WR.
21594                                                                  However, the application must not change this field. */
21595         uint32_t auxc                  : 3;  /**< [ 24: 22](RO/WRSL) AUX current, writable through PEM()_CFG_WR. However, the application must not change
21596                                                                  this field. */
21597         uint32_t d1s                   : 1;  /**< [ 25: 25](RO/WRSL) D1 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
21598         uint32_t d2s                   : 1;  /**< [ 26: 26](RO/WRSL) D2 support, writable through PEM()_CFG_WR. However, the application must not change this field. */
21599         uint32_t pmes                  : 5;  /**< [ 31: 27](RO/WRSL/H) PME_Support. A value of 0x0 for any bit indicates that the device (or function) is not
21600                                                                  capable of generating PME messages while in that power state:
21601 
21602                                                                  _ Bit 11: If set, PME Messages can be generated from D0.
21603 
21604                                                                  _ Bit 12: If set, PME Messages can be generated from D1.
21605 
21606                                                                  _ Bit 13: If set, PME Messages can be generated from D2.
21607 
21608                                                                  _ Bit 14: If set, PME Messages can be generated from D3hot.
21609 
21610                                                                  _ Bit 15: If set, PME Messages can be generated from D3cold.
21611 
21612                                                                  This field is writable through PEM()_CFG_WR. However, the application must not
21613                                                                  change this field. */
21614 #endif /* Word 0 - End */
21615     } s;
21616     /* struct bdk_pciercx_pm_cap_id_s cn; */
21617 };
21618 typedef union bdk_pciercx_pm_cap_id bdk_pciercx_pm_cap_id_t;
21619 
21620 static inline uint64_t BDK_PCIERCX_PM_CAP_ID(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PM_CAP_ID(unsigned long a)21621 static inline uint64_t BDK_PCIERCX_PM_CAP_ID(unsigned long a)
21622 {
21623     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21624         return 0x40ll + 0x100000000ll * ((a) & 0x3);
21625     __bdk_csr_fatal("PCIERCX_PM_CAP_ID", 1, a, 0, 0, 0);
21626 }
21627 
21628 #define typedef_BDK_PCIERCX_PM_CAP_ID(a) bdk_pciercx_pm_cap_id_t
21629 #define bustype_BDK_PCIERCX_PM_CAP_ID(a) BDK_CSR_TYPE_PCICONFIGRC
21630 #define basename_BDK_PCIERCX_PM_CAP_ID(a) "PCIERCX_PM_CAP_ID"
21631 #define busnum_BDK_PCIERCX_PM_CAP_ID(a) (a)
21632 #define arguments_BDK_PCIERCX_PM_CAP_ID(a) (a),-1,-1,-1
21633 
21634 /**
21635  * Register (PCICONFIGRC) pcierc#_pm_ctl
21636  *
21637  * PCIe RC Power Management Control and Status Register
21638  */
21639 union bdk_pciercx_pm_ctl
21640 {
21641     uint32_t u;
21642     struct bdk_pciercx_pm_ctl_s
21643     {
21644 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21645         uint32_t pmdia                 : 8;  /**< [ 31: 24](RO) Data register for additional information (not supported). */
21646         uint32_t bpccee                : 1;  /**< [ 23: 23](RO) Bus power/clock control enable, hardwired to zero. */
21647         uint32_t bd3h                  : 1;  /**< [ 22: 22](RO) B2/B3 support, hardwired to zero. */
21648         uint32_t reserved_16_21        : 6;
21649         uint32_t pmess                 : 1;  /**< [ 15: 15](R/W1C/H) PME status. Indicates whether or not a previously enabled PME event occurred. */
21650         uint32_t pmedsia               : 2;  /**< [ 14: 13](RO) Data scale (not supported). */
21651         uint32_t pmds                  : 4;  /**< [ 12:  9](RO) Data select (not supported). */
21652         uint32_t pmeens                : 1;  /**< [  8:  8](R/W) PME enable. A value of one indicates that the device is enabled to generate PME. */
21653         uint32_t reserved_4_7          : 4;
21654         uint32_t nsr                   : 1;  /**< [  3:  3](RO/WRSL) No soft reset, writable through PEM()_CFG_WR. However, the application must not change
21655                                                                  this field. */
21656         uint32_t reserved_2            : 1;
21657         uint32_t ps                    : 2;  /**< [  1:  0](R/W/H) Power state. Controls the device power state:
21658                                                                  0x0 = D0.
21659                                                                  0x1 = D1.
21660                                                                  0x2 = D2.
21661                                                                  0x3 = D3.
21662 
21663                                                                  The written value is ignored if the specific state is not supported. */
21664 #else /* Word 0 - Little Endian */
21665         uint32_t ps                    : 2;  /**< [  1:  0](R/W/H) Power state. Controls the device power state:
21666                                                                  0x0 = D0.
21667                                                                  0x1 = D1.
21668                                                                  0x2 = D2.
21669                                                                  0x3 = D3.
21670 
21671                                                                  The written value is ignored if the specific state is not supported. */
21672         uint32_t reserved_2            : 1;
21673         uint32_t nsr                   : 1;  /**< [  3:  3](RO/WRSL) No soft reset, writable through PEM()_CFG_WR. However, the application must not change
21674                                                                  this field. */
21675         uint32_t reserved_4_7          : 4;
21676         uint32_t pmeens                : 1;  /**< [  8:  8](R/W) PME enable. A value of one indicates that the device is enabled to generate PME. */
21677         uint32_t pmds                  : 4;  /**< [ 12:  9](RO) Data select (not supported). */
21678         uint32_t pmedsia               : 2;  /**< [ 14: 13](RO) Data scale (not supported). */
21679         uint32_t pmess                 : 1;  /**< [ 15: 15](R/W1C/H) PME status. Indicates whether or not a previously enabled PME event occurred. */
21680         uint32_t reserved_16_21        : 6;
21681         uint32_t bd3h                  : 1;  /**< [ 22: 22](RO) B2/B3 support, hardwired to zero. */
21682         uint32_t bpccee                : 1;  /**< [ 23: 23](RO) Bus power/clock control enable, hardwired to zero. */
21683         uint32_t pmdia                 : 8;  /**< [ 31: 24](RO) Data register for additional information (not supported). */
21684 #endif /* Word 0 - End */
21685     } s;
21686     /* struct bdk_pciercx_pm_ctl_s cn; */
21687 };
21688 typedef union bdk_pciercx_pm_ctl bdk_pciercx_pm_ctl_t;
21689 
21690 static inline uint64_t BDK_PCIERCX_PM_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PM_CTL(unsigned long a)21691 static inline uint64_t BDK_PCIERCX_PM_CTL(unsigned long a)
21692 {
21693     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21694         return 0x44ll + 0x100000000ll * ((a) & 0x3);
21695     __bdk_csr_fatal("PCIERCX_PM_CTL", 1, a, 0, 0, 0);
21696 }
21697 
21698 #define typedef_BDK_PCIERCX_PM_CTL(a) bdk_pciercx_pm_ctl_t
21699 #define bustype_BDK_PCIERCX_PM_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
21700 #define basename_BDK_PCIERCX_PM_CTL(a) "PCIERCX_PM_CTL"
21701 #define busnum_BDK_PCIERCX_PM_CTL(a) (a)
21702 #define arguments_BDK_PCIERCX_PM_CTL(a) (a),-1,-1,-1
21703 
21704 /**
21705  * Register (PCICONFIGRC) pcierc#_pmem
21706  *
21707  * PCIe RC Prefetchable Memory and Limit Register
21708  */
21709 union bdk_pciercx_pmem
21710 {
21711     uint32_t u;
21712     struct bdk_pciercx_pmem_s
21713     {
21714 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21715         uint32_t lmem_limit            : 12; /**< [ 31: 20](R/W) Upper 12 bits of 32-bit prefetchable memory end address. */
21716         uint32_t reserved_17_19        : 3;
21717         uint32_t mem64b                : 1;  /**< [ 16: 16](RO) 64-bit memory addressing:
21718                                                                  0 = 32-bit memory addressing.
21719                                                                  1 = 64-bit memory addressing. */
21720         uint32_t lmem_base             : 12; /**< [ 15:  4](R/W) Upper 12 bits of 32-bit prefetchable memory start address. */
21721         uint32_t reserved_1_3          : 3;
21722         uint32_t mem64a                : 1;  /**< [  0:  0](RO/WRSL) 64-bit memory addressing:
21723                                                                  0 = 32-bit memory addressing.
21724                                                                  1 = 64-bit memory addressing.
21725 
21726                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
21727                                                                  through PEM()_CFG_WR, the same value is written to bit 16 of this register. */
21728 #else /* Word 0 - Little Endian */
21729         uint32_t mem64a                : 1;  /**< [  0:  0](RO/WRSL) 64-bit memory addressing:
21730                                                                  0 = 32-bit memory addressing.
21731                                                                  1 = 64-bit memory addressing.
21732 
21733                                                                  This bit is writable through PEM()_CFG_WR. When the application writes to this bit
21734                                                                  through PEM()_CFG_WR, the same value is written to bit 16 of this register. */
21735         uint32_t reserved_1_3          : 3;
21736         uint32_t lmem_base             : 12; /**< [ 15:  4](R/W) Upper 12 bits of 32-bit prefetchable memory start address. */
21737         uint32_t mem64b                : 1;  /**< [ 16: 16](RO) 64-bit memory addressing:
21738                                                                  0 = 32-bit memory addressing.
21739                                                                  1 = 64-bit memory addressing. */
21740         uint32_t reserved_17_19        : 3;
21741         uint32_t lmem_limit            : 12; /**< [ 31: 20](R/W) Upper 12 bits of 32-bit prefetchable memory end address. */
21742 #endif /* Word 0 - End */
21743     } s;
21744     /* struct bdk_pciercx_pmem_s cn; */
21745 };
21746 typedef union bdk_pciercx_pmem bdk_pciercx_pmem_t;
21747 
21748 static inline uint64_t BDK_PCIERCX_PMEM(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PMEM(unsigned long a)21749 static inline uint64_t BDK_PCIERCX_PMEM(unsigned long a)
21750 {
21751     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21752         return 0x24ll + 0x100000000ll * ((a) & 0x3);
21753     __bdk_csr_fatal("PCIERCX_PMEM", 1, a, 0, 0, 0);
21754 }
21755 
21756 #define typedef_BDK_PCIERCX_PMEM(a) bdk_pciercx_pmem_t
21757 #define bustype_BDK_PCIERCX_PMEM(a) BDK_CSR_TYPE_PCICONFIGRC
21758 #define basename_BDK_PCIERCX_PMEM(a) "PCIERCX_PMEM"
21759 #define busnum_BDK_PCIERCX_PMEM(a) (a)
21760 #define arguments_BDK_PCIERCX_PMEM(a) (a),-1,-1,-1
21761 
21762 /**
21763  * Register (PCICONFIGRC) pcierc#_port_ctl
21764  *
21765  * PCIe RC Port Link Control Register
21766  */
21767 union bdk_pciercx_port_ctl
21768 {
21769     uint32_t u;
21770     struct bdk_pciercx_port_ctl_s
21771     {
21772 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21773         uint32_t reserved_28_31        : 4;
21774         uint32_t xlr_en                : 1;  /**< [ 27: 27](R/W) Transmit lane reversible enable.  Internally reserved field, do not set. */
21775         uint32_t ex_synch              : 1;  /**< [ 26: 26](R/W) Extended synch.  Internally reserved field, do not set. */
21776         uint32_t clcrc_en              : 1;  /**< [ 25: 25](R/W) Corrupt LCRC enable.  Internally reserved field, do not set. */
21777         uint32_t beacon_en             : 1;  /**< [ 24: 24](R/W) Beacon enable.  Internally reserved field, do not set. */
21778         uint32_t cle                   : 2;  /**< [ 23: 22](RAZ) Reserved. */
21779         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
21780                                                                  0x1 = x1.
21781                                                                  0x3 = x2.
21782                                                                  0x7 = x4.
21783                                                                  0xF = x8.
21784                                                                  0x1F = x16.
21785                                                                  0x3F = x32 (not supported).
21786 
21787                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
21788                                                                  be set less than 0x1F to limit the number of lanes that the PCIe will attempt to use. The
21789                                                                  programming of this field needs to be done by software before enabling the link. See also
21790                                                                  PCIERC_LINK_CAP[MLW].
21791                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
21792                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
21793                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x16, x8,
21794                                                                  x4, x2, and x1 are supported when
21795                                                                  [LME] = 0x1F, for example. */
21796         uint32_t reserved_12_15        : 4;
21797         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
21798         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes.
21799                                                                  The scaling factor is configured by PCIERC_TIMER_CTL[FLMSF]. */
21800         uint32_t ldis                  : 1;  /**< [  6:  6](R/W) Link disable. Internally reserved field, do not set. */
21801         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
21802                                                                  does not transmit InitFC DLLPs and does not establish a link. */
21803         uint32_t reserved_4            : 1;
21804         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
21805                                                                  port only). */
21806         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
21807                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
21808                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
21809                                                                  mode, take the link through a reset sequence. */
21810         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
21811         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a one to this bit, the PCI Express bus transmits
21812                                                                  the message contained in the other message register. */
21813 #else /* Word 0 - Little Endian */
21814         uint32_t omr                   : 1;  /**< [  0:  0](WO/H) Other message request. When software writes a one to this bit, the PCI Express bus transmits
21815                                                                  the message contained in the other message register. */
21816         uint32_t sd                    : 1;  /**< [  1:  1](R/W) Scramble disable. Setting this bit turns off data scrambling. */
21817         uint32_t le                    : 1;  /**< [  2:  2](R/W) Loopback enable. Initiate loopback mode as a master. On a 0-\>1 transition, the PCIe core
21818                                                                  sends TS ordered sets with the loopback bit set to cause the link partner to enter into
21819                                                                  loopback mode as a slave. Normal transmission is not possible when LE=1. To exit loopback
21820                                                                  mode, take the link through a reset sequence. */
21821         uint32_t ra                    : 1;  /**< [  3:  3](R/W) Reset assert. Triggers a recovery and forces the LTSSM to the hot reset state (downstream
21822                                                                  port only). */
21823         uint32_t reserved_4            : 1;
21824         uint32_t dllle                 : 1;  /**< [  5:  5](R/W) DLL link enable. Enables link initialization. If DLL link enable = 0, the PCI Express bus
21825                                                                  does not transmit InitFC DLLPs and does not establish a link. */
21826         uint32_t ldis                  : 1;  /**< [  6:  6](R/W) Link disable. Internally reserved field, do not set. */
21827         uint32_t flm                   : 1;  /**< [  7:  7](R/W/H) Fast link mode. Sets all internal timers to fast mode for simulation purposes.
21828                                                                  The scaling factor is configured by PCIERC_TIMER_CTL[FLMSF]. */
21829         uint32_t link_rate             : 4;  /**< [ 11:  8](RO/H) Reserved. */
21830         uint32_t reserved_12_15        : 4;
21831         uint32_t lme                   : 6;  /**< [ 21: 16](R/W) Link mode enable set as follows:
21832                                                                  0x1 = x1.
21833                                                                  0x3 = x2.
21834                                                                  0x7 = x4.
21835                                                                  0xF = x8.
21836                                                                  0x1F = x16.
21837                                                                  0x3F = x32 (not supported).
21838 
21839                                                                  This field indicates the maximum number of lanes supported by the PCIe port. The value can
21840                                                                  be set less than 0x1F to limit the number of lanes that the PCIe will attempt to use. The
21841                                                                  programming of this field needs to be done by software before enabling the link. See also
21842                                                                  PCIERC_LINK_CAP[MLW].
21843                                                                  The value of this field does not indicate the number of lanes in use by the PCIe. This
21844                                                                  field sets the maximum number of lanes in the PCIe core that could be used. As per the
21845                                                                  PCIe specification, the PCIe core can negotiate a smaller link width, so all of x16, x8,
21846                                                                  x4, x2, and x1 are supported when
21847                                                                  [LME] = 0x1F, for example. */
21848         uint32_t cle                   : 2;  /**< [ 23: 22](RAZ) Reserved. */
21849         uint32_t beacon_en             : 1;  /**< [ 24: 24](R/W) Beacon enable.  Internally reserved field, do not set. */
21850         uint32_t clcrc_en              : 1;  /**< [ 25: 25](R/W) Corrupt LCRC enable.  Internally reserved field, do not set. */
21851         uint32_t ex_synch              : 1;  /**< [ 26: 26](R/W) Extended synch.  Internally reserved field, do not set. */
21852         uint32_t xlr_en                : 1;  /**< [ 27: 27](R/W) Transmit lane reversible enable.  Internally reserved field, do not set. */
21853         uint32_t reserved_28_31        : 4;
21854 #endif /* Word 0 - End */
21855     } s;
21856     /* struct bdk_pciercx_port_ctl_s cn; */
21857 };
21858 typedef union bdk_pciercx_port_ctl bdk_pciercx_port_ctl_t;
21859 
21860 static inline uint64_t BDK_PCIERCX_PORT_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PORT_CTL(unsigned long a)21861 static inline uint64_t BDK_PCIERCX_PORT_CTL(unsigned long a)
21862 {
21863     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21864         return 0x710ll + 0x100000000ll * ((a) & 0x3);
21865     __bdk_csr_fatal("PCIERCX_PORT_CTL", 1, a, 0, 0, 0);
21866 }
21867 
21868 #define typedef_BDK_PCIERCX_PORT_CTL(a) bdk_pciercx_port_ctl_t
21869 #define bustype_BDK_PCIERCX_PORT_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
21870 #define basename_BDK_PCIERCX_PORT_CTL(a) "PCIERCX_PORT_CTL"
21871 #define busnum_BDK_PCIERCX_PORT_CTL(a) (a)
21872 #define arguments_BDK_PCIERCX_PORT_CTL(a) (a),-1,-1,-1
21873 
21874 /**
21875  * Register (PCICONFIGRC) pcierc#_port_flink
21876  *
21877  * PCIe RC Port Force Link Register
21878  */
21879 union bdk_pciercx_port_flink
21880 {
21881     uint32_t u;
21882     struct bdk_pciercx_port_flink_s
21883     {
21884 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
21885         uint32_t reserved_24_31        : 8;
21886         uint32_t deskew_for_sris       : 1;  /**< [ 23: 23](R/W) Use the transitions from TS2 to logical idle symbol, SKP OS to logical idle symbol,
21887                                                                  and FTS sequence to SKP OS to do deskew for SRIS instead of using received SKP OS
21888                                                                  if [DESKEW_FOR_SRIS] is one. */
21889         uint32_t reserved_22           : 1;
21890         uint32_t link_state            : 6;  /**< [ 21: 16](R/W) Link state. The link state that the PCI Express bus is forced to when bit 15 (force link)
21891                                                                  is set. State encoding:
21892                                                                  0x0 = DETECT_QUIET.
21893                                                                  0x1 = DETECT_ACT.
21894                                                                  0x2 = POLL_ACTIVE.
21895                                                                  0x3 = POLL_COMPLIANCE.
21896                                                                  0x4 = POLL_CONFIG.
21897                                                                  0x5 = PRE_DETECT_QUIET.
21898                                                                  0x6 = DETECT_WAIT.
21899                                                                  0x7 = CFG_LINKWD_START.
21900                                                                  0x8 = CFG_LINKWD_ACEPT.
21901                                                                  0x9 = CFG_LANENUM_WAIT.
21902                                                                  0xA = CFG_LANENUM_ACEPT.
21903                                                                  0xB = CFG_COMPLETE.
21904                                                                  0xC = CFG_IDLE.
21905                                                                  0xD = RCVRY_LOCK.
21906                                                                  0xE = RCVRY_SPEED.
21907                                                                  0xF = RCVRY_RCVRCFG.
21908                                                                  0x10 = RCVRY_IDLE.
21909                                                                  0x11 = L0.
21910                                                                  0x12 = L0S.
21911                                                                  0x13 = L123_SEND_EIDLE.
21912                                                                  0x14 = L1_IDLE.
21913                                                                  0x15 = L2_IDLE.
21914                                                                  0x16 = L2_WAKE.
21915                                                                  0x17 = DISABLED_ENTRY.
21916                                                                  0x18 = DISABLED_IDLE.
21917                                                                  0x19 = DISABLED.
21918                                                                  0x1A = LPBK_ENTRY.
21919                                                                  0x1B = LPBK_ACTIVE.
21920                                                                  0x1C = LPBK_EXIT.
21921                                                                  0x1D = LPBK_EXIT_TIMEOUT.
21922                                                                  0x1E = HOT_RESET_ENTRY.
21923                                                                  0x1F = HOT_RESET. */
21924         uint32_t force_link            : 1;  /**< [ 15: 15](WO/H) Force link. Forces the link to the state specified by [LINK_STATE]. The force link
21925                                                                  pulse triggers link renegotiation.
21926                                                                  As the force link is a pulse, writing a 1 to it does trigger the forced link state event,
21927                                                                  even though reading it always returns a 0. */
21928         uint32_t reserved_12_14        : 3;
21929         uint32_t forced_ltssm          : 4;  /**< [ 11:  8](R/W) Forced link command. */
21930         uint32_t link_num              : 8;  /**< [  7:  0](R/W) Link number. */
21931 #else /* Word 0 - Little Endian */
21932         uint32_t link_num              : 8;  /**< [  7:  0](R/W) Link number. */
21933         uint32_t forced_ltssm          : 4;  /**< [ 11:  8](R/W) Forced link command. */
21934         uint32_t reserved_12_14        : 3;
21935         uint32_t force_link            : 1;  /**< [ 15: 15](WO/H) Force link. Forces the link to the state specified by [LINK_STATE]. The force link
21936                                                                  pulse triggers link renegotiation.
21937                                                                  As the force link is a pulse, writing a 1 to it does trigger the forced link state event,
21938                                                                  even though reading it always returns a 0. */
21939         uint32_t link_state            : 6;  /**< [ 21: 16](R/W) Link state. The link state that the PCI Express bus is forced to when bit 15 (force link)
21940                                                                  is set. State encoding:
21941                                                                  0x0 = DETECT_QUIET.
21942                                                                  0x1 = DETECT_ACT.
21943                                                                  0x2 = POLL_ACTIVE.
21944                                                                  0x3 = POLL_COMPLIANCE.
21945                                                                  0x4 = POLL_CONFIG.
21946                                                                  0x5 = PRE_DETECT_QUIET.
21947                                                                  0x6 = DETECT_WAIT.
21948                                                                  0x7 = CFG_LINKWD_START.
21949                                                                  0x8 = CFG_LINKWD_ACEPT.
21950                                                                  0x9 = CFG_LANENUM_WAIT.
21951                                                                  0xA = CFG_LANENUM_ACEPT.
21952                                                                  0xB = CFG_COMPLETE.
21953                                                                  0xC = CFG_IDLE.
21954                                                                  0xD = RCVRY_LOCK.
21955                                                                  0xE = RCVRY_SPEED.
21956                                                                  0xF = RCVRY_RCVRCFG.
21957                                                                  0x10 = RCVRY_IDLE.
21958                                                                  0x11 = L0.
21959                                                                  0x12 = L0S.
21960                                                                  0x13 = L123_SEND_EIDLE.
21961                                                                  0x14 = L1_IDLE.
21962                                                                  0x15 = L2_IDLE.
21963                                                                  0x16 = L2_WAKE.
21964                                                                  0x17 = DISABLED_ENTRY.
21965                                                                  0x18 = DISABLED_IDLE.
21966                                                                  0x19 = DISABLED.
21967                                                                  0x1A = LPBK_ENTRY.
21968                                                                  0x1B = LPBK_ACTIVE.
21969                                                                  0x1C = LPBK_EXIT.
21970                                                                  0x1D = LPBK_EXIT_TIMEOUT.
21971                                                                  0x1E = HOT_RESET_ENTRY.
21972                                                                  0x1F = HOT_RESET. */
21973         uint32_t reserved_22           : 1;
21974         uint32_t deskew_for_sris       : 1;  /**< [ 23: 23](R/W) Use the transitions from TS2 to logical idle symbol, SKP OS to logical idle symbol,
21975                                                                  and FTS sequence to SKP OS to do deskew for SRIS instead of using received SKP OS
21976                                                                  if [DESKEW_FOR_SRIS] is one. */
21977         uint32_t reserved_24_31        : 8;
21978 #endif /* Word 0 - End */
21979     } s;
21980     /* struct bdk_pciercx_port_flink_s cn; */
21981 };
21982 typedef union bdk_pciercx_port_flink bdk_pciercx_port_flink_t;
21983 
21984 static inline uint64_t BDK_PCIERCX_PORT_FLINK(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PORT_FLINK(unsigned long a)21985 static inline uint64_t BDK_PCIERCX_PORT_FLINK(unsigned long a)
21986 {
21987     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
21988         return 0x708ll + 0x100000000ll * ((a) & 0x3);
21989     __bdk_csr_fatal("PCIERCX_PORT_FLINK", 1, a, 0, 0, 0);
21990 }
21991 
21992 #define typedef_BDK_PCIERCX_PORT_FLINK(a) bdk_pciercx_port_flink_t
21993 #define bustype_BDK_PCIERCX_PORT_FLINK(a) BDK_CSR_TYPE_PCICONFIGRC
21994 #define basename_BDK_PCIERCX_PORT_FLINK(a) "PCIERCX_PORT_FLINK"
21995 #define busnum_BDK_PCIERCX_PORT_FLINK(a) (a)
21996 #define arguments_BDK_PCIERCX_PORT_FLINK(a) (a),-1,-1,-1
21997 
21998 /**
21999  * Register (PCICONFIGRC) pcierc#_pre_base
22000  *
22001  * PCIe RC Prefetchable Base Upper 32 Bits Register
22002  */
22003 union bdk_pciercx_pre_base
22004 {
22005     uint32_t u;
22006     struct bdk_pciercx_pre_base_s
22007     {
22008 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22009         uint32_t umem_base             : 32; /**< [ 31:  0](R/W) Upper 32 bits of base address of prefetchable memory space. Used only when 64-bit
22010                                                                  prefetchable memory addressing is enabled. */
22011 #else /* Word 0 - Little Endian */
22012         uint32_t umem_base             : 32; /**< [ 31:  0](R/W) Upper 32 bits of base address of prefetchable memory space. Used only when 64-bit
22013                                                                  prefetchable memory addressing is enabled. */
22014 #endif /* Word 0 - End */
22015     } s;
22016     /* struct bdk_pciercx_pre_base_s cn; */
22017 };
22018 typedef union bdk_pciercx_pre_base bdk_pciercx_pre_base_t;
22019 
22020 static inline uint64_t BDK_PCIERCX_PRE_BASE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PRE_BASE(unsigned long a)22021 static inline uint64_t BDK_PCIERCX_PRE_BASE(unsigned long a)
22022 {
22023     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22024         return 0x28ll + 0x100000000ll * ((a) & 0x3);
22025     __bdk_csr_fatal("PCIERCX_PRE_BASE", 1, a, 0, 0, 0);
22026 }
22027 
22028 #define typedef_BDK_PCIERCX_PRE_BASE(a) bdk_pciercx_pre_base_t
22029 #define bustype_BDK_PCIERCX_PRE_BASE(a) BDK_CSR_TYPE_PCICONFIGRC
22030 #define basename_BDK_PCIERCX_PRE_BASE(a) "PCIERCX_PRE_BASE"
22031 #define busnum_BDK_PCIERCX_PRE_BASE(a) (a)
22032 #define arguments_BDK_PCIERCX_PRE_BASE(a) (a),-1,-1,-1
22033 
22034 /**
22035  * Register (PCICONFIGRC) pcierc#_pre_limit
22036  *
22037  * PCIe RC Prefetchable Limit Upper 32 Bits Register
22038  */
22039 union bdk_pciercx_pre_limit
22040 {
22041     uint32_t u;
22042     struct bdk_pciercx_pre_limit_s
22043     {
22044 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22045         uint32_t umem_limit            : 32; /**< [ 31:  0](R/W) Upper 32 bits of limit address of prefetchable memory space. Used only when 64-bit
22046                                                                  prefetchable memory addressing is enabled. */
22047 #else /* Word 0 - Little Endian */
22048         uint32_t umem_limit            : 32; /**< [ 31:  0](R/W) Upper 32 bits of limit address of prefetchable memory space. Used only when 64-bit
22049                                                                  prefetchable memory addressing is enabled. */
22050 #endif /* Word 0 - End */
22051     } s;
22052     /* struct bdk_pciercx_pre_limit_s cn; */
22053 };
22054 typedef union bdk_pciercx_pre_limit bdk_pciercx_pre_limit_t;
22055 
22056 static inline uint64_t BDK_PCIERCX_PRE_LIMIT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PRE_LIMIT(unsigned long a)22057 static inline uint64_t BDK_PCIERCX_PRE_LIMIT(unsigned long a)
22058 {
22059     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22060         return 0x2cll + 0x100000000ll * ((a) & 0x3);
22061     __bdk_csr_fatal("PCIERCX_PRE_LIMIT", 1, a, 0, 0, 0);
22062 }
22063 
22064 #define typedef_BDK_PCIERCX_PRE_LIMIT(a) bdk_pciercx_pre_limit_t
22065 #define bustype_BDK_PCIERCX_PRE_LIMIT(a) BDK_CSR_TYPE_PCICONFIGRC
22066 #define basename_BDK_PCIERCX_PRE_LIMIT(a) "PCIERCX_PRE_LIMIT"
22067 #define busnum_BDK_PCIERCX_PRE_LIMIT(a) (a)
22068 #define arguments_BDK_PCIERCX_PRE_LIMIT(a) (a),-1,-1,-1
22069 
22070 /**
22071  * Register (PCICONFIGRC) pcierc#_ptm_cap
22072  *
22073  * PCIe RC Precision Time Measurement Capabilities Register
22074  */
22075 union bdk_pciercx_ptm_cap
22076 {
22077     uint32_t u;
22078     struct bdk_pciercx_ptm_cap_s
22079     {
22080 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22081         uint32_t reserved_16_31        : 16;
22082         uint32_t clkg                  : 8;  /**< [ 15:  8](RO/WRSL) PTM local clock granularity. */
22083         uint32_t reserved_3_7          : 5;
22084         uint32_t rtc                   : 1;  /**< [  2:  2](RO/WRSL) PTM root capable. */
22085         uint32_t rsc                   : 1;  /**< [  1:  1](RO/WRSL) PTM responder capable. */
22086         uint32_t rqc                   : 1;  /**< [  0:  0](RO/WRSL) PTM requester capable. */
22087 #else /* Word 0 - Little Endian */
22088         uint32_t rqc                   : 1;  /**< [  0:  0](RO/WRSL) PTM requester capable. */
22089         uint32_t rsc                   : 1;  /**< [  1:  1](RO/WRSL) PTM responder capable. */
22090         uint32_t rtc                   : 1;  /**< [  2:  2](RO/WRSL) PTM root capable. */
22091         uint32_t reserved_3_7          : 5;
22092         uint32_t clkg                  : 8;  /**< [ 15:  8](RO/WRSL) PTM local clock granularity. */
22093         uint32_t reserved_16_31        : 16;
22094 #endif /* Word 0 - End */
22095     } s;
22096     /* struct bdk_pciercx_ptm_cap_s cn; */
22097 };
22098 typedef union bdk_pciercx_ptm_cap bdk_pciercx_ptm_cap_t;
22099 
22100 static inline uint64_t BDK_PCIERCX_PTM_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_CAP(unsigned long a)22101 static inline uint64_t BDK_PCIERCX_PTM_CAP(unsigned long a)
22102 {
22103     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22104         return 0x460ll + 0x100000000ll * ((a) & 0x3);
22105     __bdk_csr_fatal("PCIERCX_PTM_CAP", 1, a, 0, 0, 0);
22106 }
22107 
22108 #define typedef_BDK_PCIERCX_PTM_CAP(a) bdk_pciercx_ptm_cap_t
22109 #define bustype_BDK_PCIERCX_PTM_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
22110 #define basename_BDK_PCIERCX_PTM_CAP(a) "PCIERCX_PTM_CAP"
22111 #define busnum_BDK_PCIERCX_PTM_CAP(a) (a)
22112 #define arguments_BDK_PCIERCX_PTM_CAP(a) (a),-1,-1,-1
22113 
22114 /**
22115  * Register (PCICONFIGRC) pcierc#_ptm_ctl
22116  *
22117  * PCIe RC Precision Time Measurement Control Register
22118  */
22119 union bdk_pciercx_ptm_ctl
22120 {
22121     uint32_t u;
22122     struct bdk_pciercx_ptm_ctl_s
22123     {
22124 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22125         uint32_t reserved_16_31        : 16;
22126         uint32_t eff_gran              : 8;  /**< [ 15:  8](R/W) PTM effective granularity. */
22127         uint32_t reserved_2_7          : 6;
22128         uint32_t rt_sel                : 1;  /**< [  1:  1](R/W) PTM root select. When set this time source is the PTM root.
22129                                                                  Writeable only when PCIERC_PTM_CAP[RTC] is set. */
22130         uint32_t en                    : 1;  /**< [  0:  0](R/W) PTM enable. When set, this function is permitted to participate in the PTM mechanism. */
22131 #else /* Word 0 - Little Endian */
22132         uint32_t en                    : 1;  /**< [  0:  0](R/W) PTM enable. When set, this function is permitted to participate in the PTM mechanism. */
22133         uint32_t rt_sel                : 1;  /**< [  1:  1](R/W) PTM root select. When set this time source is the PTM root.
22134                                                                  Writeable only when PCIERC_PTM_CAP[RTC] is set. */
22135         uint32_t reserved_2_7          : 6;
22136         uint32_t eff_gran              : 8;  /**< [ 15:  8](R/W) PTM effective granularity. */
22137         uint32_t reserved_16_31        : 16;
22138 #endif /* Word 0 - End */
22139     } s;
22140     /* struct bdk_pciercx_ptm_ctl_s cn; */
22141 };
22142 typedef union bdk_pciercx_ptm_ctl bdk_pciercx_ptm_ctl_t;
22143 
22144 static inline uint64_t BDK_PCIERCX_PTM_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_CTL(unsigned long a)22145 static inline uint64_t BDK_PCIERCX_PTM_CTL(unsigned long a)
22146 {
22147     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22148         return 0x464ll + 0x100000000ll * ((a) & 0x3);
22149     __bdk_csr_fatal("PCIERCX_PTM_CTL", 1, a, 0, 0, 0);
22150 }
22151 
22152 #define typedef_BDK_PCIERCX_PTM_CTL(a) bdk_pciercx_ptm_ctl_t
22153 #define bustype_BDK_PCIERCX_PTM_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
22154 #define basename_BDK_PCIERCX_PTM_CTL(a) "PCIERCX_PTM_CTL"
22155 #define busnum_BDK_PCIERCX_PTM_CTL(a) (a)
22156 #define arguments_BDK_PCIERCX_PTM_CTL(a) (a),-1,-1,-1
22157 
22158 /**
22159  * Register (PCICONFIGRC) pcierc#_ptm_ext_cap_hdr
22160  *
22161  * PCIe RC Precision Time Measurement Capability Header Register
22162  */
22163 union bdk_pciercx_ptm_ext_cap_hdr
22164 {
22165     uint32_t u;
22166     struct bdk_pciercx_ptm_ext_cap_hdr_s
22167     {
22168 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22169         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
22170                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22171         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
22172                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22173         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
22174                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22175 #else /* Word 0 - Little Endian */
22176         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
22177                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22178         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
22179                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22180         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
22181                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22182 #endif /* Word 0 - End */
22183     } s;
22184     /* struct bdk_pciercx_ptm_ext_cap_hdr_s cn; */
22185 };
22186 typedef union bdk_pciercx_ptm_ext_cap_hdr bdk_pciercx_ptm_ext_cap_hdr_t;
22187 
22188 static inline uint64_t BDK_PCIERCX_PTM_EXT_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_EXT_CAP_HDR(unsigned long a)22189 static inline uint64_t BDK_PCIERCX_PTM_EXT_CAP_HDR(unsigned long a)
22190 {
22191     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22192         return 0x45cll + 0x100000000ll * ((a) & 0x3);
22193     __bdk_csr_fatal("PCIERCX_PTM_EXT_CAP_HDR", 1, a, 0, 0, 0);
22194 }
22195 
22196 #define typedef_BDK_PCIERCX_PTM_EXT_CAP_HDR(a) bdk_pciercx_ptm_ext_cap_hdr_t
22197 #define bustype_BDK_PCIERCX_PTM_EXT_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
22198 #define basename_BDK_PCIERCX_PTM_EXT_CAP_HDR(a) "PCIERCX_PTM_EXT_CAP_HDR"
22199 #define busnum_BDK_PCIERCX_PTM_EXT_CAP_HDR(a) (a)
22200 #define arguments_BDK_PCIERCX_PTM_EXT_CAP_HDR(a) (a),-1,-1,-1
22201 
22202 /**
22203  * Register (PCICONFIGRC) pcierc#_ptm_res_cap_hdr
22204  *
22205  * PCIe RC Preicsion Time Measurement Responder Capability Header Register
22206  */
22207 union bdk_pciercx_ptm_res_cap_hdr
22208 {
22209     uint32_t u;
22210     struct bdk_pciercx_ptm_res_cap_hdr_s
22211     {
22212 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22213         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
22214                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22215         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
22216                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22217         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
22218                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22219 #else /* Word 0 - Little Endian */
22220         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
22221                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22222         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
22223                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22224         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
22225                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22226 #endif /* Word 0 - End */
22227     } s;
22228     /* struct bdk_pciercx_ptm_res_cap_hdr_s cn; */
22229 };
22230 typedef union bdk_pciercx_ptm_res_cap_hdr bdk_pciercx_ptm_res_cap_hdr_t;
22231 
22232 static inline uint64_t BDK_PCIERCX_PTM_RES_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_CAP_HDR(unsigned long a)22233 static inline uint64_t BDK_PCIERCX_PTM_RES_CAP_HDR(unsigned long a)
22234 {
22235     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22236         return 0x468ll + 0x100000000ll * ((a) & 0x3);
22237     __bdk_csr_fatal("PCIERCX_PTM_RES_CAP_HDR", 1, a, 0, 0, 0);
22238 }
22239 
22240 #define typedef_BDK_PCIERCX_PTM_RES_CAP_HDR(a) bdk_pciercx_ptm_res_cap_hdr_t
22241 #define bustype_BDK_PCIERCX_PTM_RES_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
22242 #define basename_BDK_PCIERCX_PTM_RES_CAP_HDR(a) "PCIERCX_PTM_RES_CAP_HDR"
22243 #define busnum_BDK_PCIERCX_PTM_RES_CAP_HDR(a) (a)
22244 #define arguments_BDK_PCIERCX_PTM_RES_CAP_HDR(a) (a),-1,-1,-1
22245 
22246 /**
22247  * Register (PCICONFIGRC) pcierc#_ptm_res_ctl
22248  *
22249  * PCIe RC Precision Time Measurement Responder Control Register
22250  */
22251 union bdk_pciercx_ptm_res_ctl
22252 {
22253     uint32_t u;
22254     struct bdk_pciercx_ptm_res_ctl_s
22255     {
22256 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22257         uint32_t reserved_1_31         : 31;
22258         uint32_t pres_ctx_vld          : 1;  /**< [  0:  0](RO/WRSL/H) PTM responder control context valid - PTM local timing is valid.
22259                                                                  A speed change or aux_clk_active will set this bit low. */
22260 #else /* Word 0 - Little Endian */
22261         uint32_t pres_ctx_vld          : 1;  /**< [  0:  0](RO/WRSL/H) PTM responder control context valid - PTM local timing is valid.
22262                                                                  A speed change or aux_clk_active will set this bit low. */
22263         uint32_t reserved_1_31         : 31;
22264 #endif /* Word 0 - End */
22265     } s;
22266     /* struct bdk_pciercx_ptm_res_ctl_s cn; */
22267 };
22268 typedef union bdk_pciercx_ptm_res_ctl bdk_pciercx_ptm_res_ctl_t;
22269 
22270 static inline uint64_t BDK_PCIERCX_PTM_RES_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_CTL(unsigned long a)22271 static inline uint64_t BDK_PCIERCX_PTM_RES_CTL(unsigned long a)
22272 {
22273     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22274         return 0x470ll + 0x100000000ll * ((a) & 0x3);
22275     __bdk_csr_fatal("PCIERCX_PTM_RES_CTL", 1, a, 0, 0, 0);
22276 }
22277 
22278 #define typedef_BDK_PCIERCX_PTM_RES_CTL(a) bdk_pciercx_ptm_res_ctl_t
22279 #define bustype_BDK_PCIERCX_PTM_RES_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
22280 #define basename_BDK_PCIERCX_PTM_RES_CTL(a) "PCIERCX_PTM_RES_CTL"
22281 #define busnum_BDK_PCIERCX_PTM_RES_CTL(a) (a)
22282 #define arguments_BDK_PCIERCX_PTM_RES_CTL(a) (a),-1,-1,-1
22283 
22284 /**
22285  * Register (PCICONFIGRC) pcierc#_ptm_res_hdr
22286  *
22287  * PCIe RC Precision Time Measurement Responder Vendor Specific Header Register
22288  */
22289 union bdk_pciercx_ptm_res_hdr
22290 {
22291     uint32_t u;
22292     struct bdk_pciercx_ptm_res_hdr_s
22293     {
22294 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22295         uint32_t vlen                  : 12; /**< [ 31: 20](RO/WRSL) PTM responder VSEC length. */
22296         uint32_t vrev                  : 4;  /**< [ 19: 16](RO/WRSL) PTM responder VSEC revision. */
22297         uint32_t vid                   : 16; /**< [ 15:  0](RO/WRSL) PTM responder VSEC ID. */
22298 #else /* Word 0 - Little Endian */
22299         uint32_t vid                   : 16; /**< [ 15:  0](RO/WRSL) PTM responder VSEC ID. */
22300         uint32_t vrev                  : 4;  /**< [ 19: 16](RO/WRSL) PTM responder VSEC revision. */
22301         uint32_t vlen                  : 12; /**< [ 31: 20](RO/WRSL) PTM responder VSEC length. */
22302 #endif /* Word 0 - End */
22303     } s;
22304     /* struct bdk_pciercx_ptm_res_hdr_s cn; */
22305 };
22306 typedef union bdk_pciercx_ptm_res_hdr bdk_pciercx_ptm_res_hdr_t;
22307 
22308 static inline uint64_t BDK_PCIERCX_PTM_RES_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_HDR(unsigned long a)22309 static inline uint64_t BDK_PCIERCX_PTM_RES_HDR(unsigned long a)
22310 {
22311     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22312         return 0x46cll + 0x100000000ll * ((a) & 0x3);
22313     __bdk_csr_fatal("PCIERCX_PTM_RES_HDR", 1, a, 0, 0, 0);
22314 }
22315 
22316 #define typedef_BDK_PCIERCX_PTM_RES_HDR(a) bdk_pciercx_ptm_res_hdr_t
22317 #define bustype_BDK_PCIERCX_PTM_RES_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
22318 #define basename_BDK_PCIERCX_PTM_RES_HDR(a) "PCIERCX_PTM_RES_HDR"
22319 #define busnum_BDK_PCIERCX_PTM_RES_HDR(a) (a)
22320 #define arguments_BDK_PCIERCX_PTM_RES_HDR(a) (a),-1,-1,-1
22321 
22322 /**
22323  * Register (PCICONFIGRC) pcierc#_ptm_res_local_lsb
22324  *
22325  * PCIe RC PTM Responder Local Clock LSB Register
22326  */
22327 union bdk_pciercx_ptm_res_local_lsb
22328 {
22329     uint32_t u;
22330     struct bdk_pciercx_ptm_res_local_lsb_s
22331     {
22332 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22333         uint32_t clk_lsb               : 32; /**< [ 31:  0](RO/WRSL) PTM responder local clock LSB. Lower 32 bits of local timer value. */
22334 #else /* Word 0 - Little Endian */
22335         uint32_t clk_lsb               : 32; /**< [ 31:  0](RO/WRSL) PTM responder local clock LSB. Lower 32 bits of local timer value. */
22336 #endif /* Word 0 - End */
22337     } s;
22338     /* struct bdk_pciercx_ptm_res_local_lsb_s cn; */
22339 };
22340 typedef union bdk_pciercx_ptm_res_local_lsb bdk_pciercx_ptm_res_local_lsb_t;
22341 
22342 static inline uint64_t BDK_PCIERCX_PTM_RES_LOCAL_LSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_LOCAL_LSB(unsigned long a)22343 static inline uint64_t BDK_PCIERCX_PTM_RES_LOCAL_LSB(unsigned long a)
22344 {
22345     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22346         return 0x478ll + 0x100000000ll * ((a) & 0x3);
22347     __bdk_csr_fatal("PCIERCX_PTM_RES_LOCAL_LSB", 1, a, 0, 0, 0);
22348 }
22349 
22350 #define typedef_BDK_PCIERCX_PTM_RES_LOCAL_LSB(a) bdk_pciercx_ptm_res_local_lsb_t
22351 #define bustype_BDK_PCIERCX_PTM_RES_LOCAL_LSB(a) BDK_CSR_TYPE_PCICONFIGRC
22352 #define basename_BDK_PCIERCX_PTM_RES_LOCAL_LSB(a) "PCIERCX_PTM_RES_LOCAL_LSB"
22353 #define busnum_BDK_PCIERCX_PTM_RES_LOCAL_LSB(a) (a)
22354 #define arguments_BDK_PCIERCX_PTM_RES_LOCAL_LSB(a) (a),-1,-1,-1
22355 
22356 /**
22357  * Register (PCICONFIGRC) pcierc#_ptm_res_local_msb
22358  *
22359  * PCIe RC PTM Responder Local Clock MSB Register
22360  */
22361 union bdk_pciercx_ptm_res_local_msb
22362 {
22363     uint32_t u;
22364     struct bdk_pciercx_ptm_res_local_msb_s
22365     {
22366 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22367         uint32_t clk_msb               : 32; /**< [ 31:  0](RO/WRSL) PTM responder local clock MSB. Upper 32 bits of local timer value. */
22368 #else /* Word 0 - Little Endian */
22369         uint32_t clk_msb               : 32; /**< [ 31:  0](RO/WRSL) PTM responder local clock MSB. Upper 32 bits of local timer value. */
22370 #endif /* Word 0 - End */
22371     } s;
22372     /* struct bdk_pciercx_ptm_res_local_msb_s cn; */
22373 };
22374 typedef union bdk_pciercx_ptm_res_local_msb bdk_pciercx_ptm_res_local_msb_t;
22375 
22376 static inline uint64_t BDK_PCIERCX_PTM_RES_LOCAL_MSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_LOCAL_MSB(unsigned long a)22377 static inline uint64_t BDK_PCIERCX_PTM_RES_LOCAL_MSB(unsigned long a)
22378 {
22379     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22380         return 0x47cll + 0x100000000ll * ((a) & 0x3);
22381     __bdk_csr_fatal("PCIERCX_PTM_RES_LOCAL_MSB", 1, a, 0, 0, 0);
22382 }
22383 
22384 #define typedef_BDK_PCIERCX_PTM_RES_LOCAL_MSB(a) bdk_pciercx_ptm_res_local_msb_t
22385 #define bustype_BDK_PCIERCX_PTM_RES_LOCAL_MSB(a) BDK_CSR_TYPE_PCICONFIGRC
22386 #define basename_BDK_PCIERCX_PTM_RES_LOCAL_MSB(a) "PCIERCX_PTM_RES_LOCAL_MSB"
22387 #define busnum_BDK_PCIERCX_PTM_RES_LOCAL_MSB(a) (a)
22388 #define arguments_BDK_PCIERCX_PTM_RES_LOCAL_MSB(a) (a),-1,-1,-1
22389 
22390 /**
22391  * Register (PCICONFIGRC) pcierc#_ptm_res_rx_latency
22392  *
22393  * PCIe RC PTM Responder RX Latency Register
22394  */
22395 union bdk_pciercx_ptm_res_rx_latency
22396 {
22397     uint32_t u;
22398     struct bdk_pciercx_ptm_res_rx_latency_s
22399     {
22400 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22401         uint32_t reserved_12_31        : 20;
22402         uint32_t rx_lat                : 12; /**< [ 11:  0](R/W) PTM responder RX latency. */
22403 #else /* Word 0 - Little Endian */
22404         uint32_t rx_lat                : 12; /**< [ 11:  0](R/W) PTM responder RX latency. */
22405         uint32_t reserved_12_31        : 20;
22406 #endif /* Word 0 - End */
22407     } s;
22408     /* struct bdk_pciercx_ptm_res_rx_latency_s cn; */
22409 };
22410 typedef union bdk_pciercx_ptm_res_rx_latency bdk_pciercx_ptm_res_rx_latency_t;
22411 
22412 static inline uint64_t BDK_PCIERCX_PTM_RES_RX_LATENCY(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_RX_LATENCY(unsigned long a)22413 static inline uint64_t BDK_PCIERCX_PTM_RES_RX_LATENCY(unsigned long a)
22414 {
22415     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22416         return 0x4a4ll + 0x100000000ll * ((a) & 0x3);
22417     __bdk_csr_fatal("PCIERCX_PTM_RES_RX_LATENCY", 1, a, 0, 0, 0);
22418 }
22419 
22420 #define typedef_BDK_PCIERCX_PTM_RES_RX_LATENCY(a) bdk_pciercx_ptm_res_rx_latency_t
22421 #define bustype_BDK_PCIERCX_PTM_RES_RX_LATENCY(a) BDK_CSR_TYPE_PCICONFIGRC
22422 #define basename_BDK_PCIERCX_PTM_RES_RX_LATENCY(a) "PCIERCX_PTM_RES_RX_LATENCY"
22423 #define busnum_BDK_PCIERCX_PTM_RES_RX_LATENCY(a) (a)
22424 #define arguments_BDK_PCIERCX_PTM_RES_RX_LATENCY(a) (a),-1,-1,-1
22425 
22426 /**
22427  * Register (PCICONFIGRC) pcierc#_ptm_res_status
22428  *
22429  * PCIe RC PTM Responder Status Register
22430  */
22431 union bdk_pciercx_ptm_res_status
22432 {
22433     uint32_t u;
22434     struct bdk_pciercx_ptm_res_status_s
22435     {
22436 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22437         uint32_t reserved_2_31         : 30;
22438         uint32_t first_req_rcv         : 1;  /**< [  1:  1](RO/H) PTM first request received. */
22439         uint32_t ctxt_vld              : 1;  /**< [  0:  0](RO/H) PTM responder status context valid. */
22440 #else /* Word 0 - Little Endian */
22441         uint32_t ctxt_vld              : 1;  /**< [  0:  0](RO/H) PTM responder status context valid. */
22442         uint32_t first_req_rcv         : 1;  /**< [  1:  1](RO/H) PTM first request received. */
22443         uint32_t reserved_2_31         : 30;
22444 #endif /* Word 0 - End */
22445     } s;
22446     /* struct bdk_pciercx_ptm_res_status_s cn; */
22447 };
22448 typedef union bdk_pciercx_ptm_res_status bdk_pciercx_ptm_res_status_t;
22449 
22450 static inline uint64_t BDK_PCIERCX_PTM_RES_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_STATUS(unsigned long a)22451 static inline uint64_t BDK_PCIERCX_PTM_RES_STATUS(unsigned long a)
22452 {
22453     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22454         return 0x474ll + 0x100000000ll * ((a) & 0x3);
22455     __bdk_csr_fatal("PCIERCX_PTM_RES_STATUS", 1, a, 0, 0, 0);
22456 }
22457 
22458 #define typedef_BDK_PCIERCX_PTM_RES_STATUS(a) bdk_pciercx_ptm_res_status_t
22459 #define bustype_BDK_PCIERCX_PTM_RES_STATUS(a) BDK_CSR_TYPE_PCICONFIGRC
22460 #define basename_BDK_PCIERCX_PTM_RES_STATUS(a) "PCIERCX_PTM_RES_STATUS"
22461 #define busnum_BDK_PCIERCX_PTM_RES_STATUS(a) (a)
22462 #define arguments_BDK_PCIERCX_PTM_RES_STATUS(a) (a),-1,-1,-1
22463 
22464 /**
22465  * Register (PCICONFIGRC) pcierc#_ptm_res_t2_lsb
22466  *
22467  * PCIe RC PTM Responder T2 Timestamp LSB Register
22468  */
22469 union bdk_pciercx_ptm_res_t2_lsb
22470 {
22471     uint32_t u;
22472     struct bdk_pciercx_ptm_res_t2_lsb_s
22473     {
22474 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22475         uint32_t ts_lsb                : 32; /**< [ 31:  0](RO) PTM responder T2 timestamp LSB. Lower 32 bits of the T2 timestamp value. */
22476 #else /* Word 0 - Little Endian */
22477         uint32_t ts_lsb                : 32; /**< [ 31:  0](RO) PTM responder T2 timestamp LSB. Lower 32 bits of the T2 timestamp value. */
22478 #endif /* Word 0 - End */
22479     } s;
22480     /* struct bdk_pciercx_ptm_res_t2_lsb_s cn; */
22481 };
22482 typedef union bdk_pciercx_ptm_res_t2_lsb bdk_pciercx_ptm_res_t2_lsb_t;
22483 
22484 static inline uint64_t BDK_PCIERCX_PTM_RES_T2_LSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_T2_LSB(unsigned long a)22485 static inline uint64_t BDK_PCIERCX_PTM_RES_T2_LSB(unsigned long a)
22486 {
22487     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22488         return 0x480ll + 0x100000000ll * ((a) & 0x3);
22489     __bdk_csr_fatal("PCIERCX_PTM_RES_T2_LSB", 1, a, 0, 0, 0);
22490 }
22491 
22492 #define typedef_BDK_PCIERCX_PTM_RES_T2_LSB(a) bdk_pciercx_ptm_res_t2_lsb_t
22493 #define bustype_BDK_PCIERCX_PTM_RES_T2_LSB(a) BDK_CSR_TYPE_PCICONFIGRC
22494 #define basename_BDK_PCIERCX_PTM_RES_T2_LSB(a) "PCIERCX_PTM_RES_T2_LSB"
22495 #define busnum_BDK_PCIERCX_PTM_RES_T2_LSB(a) (a)
22496 #define arguments_BDK_PCIERCX_PTM_RES_T2_LSB(a) (a),-1,-1,-1
22497 
22498 /**
22499  * Register (PCICONFIGRC) pcierc#_ptm_res_t2_msb
22500  *
22501  * PCIe RC PTM Responder T2 Timestamp MSB Register
22502  */
22503 union bdk_pciercx_ptm_res_t2_msb
22504 {
22505     uint32_t u;
22506     struct bdk_pciercx_ptm_res_t2_msb_s
22507     {
22508 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22509         uint32_t ts_msb                : 32; /**< [ 31:  0](RO) PTM responder T2 timestamp MSB. Upper 32 bits of the T2 timestamp value. */
22510 #else /* Word 0 - Little Endian */
22511         uint32_t ts_msb                : 32; /**< [ 31:  0](RO) PTM responder T2 timestamp MSB. Upper 32 bits of the T2 timestamp value. */
22512 #endif /* Word 0 - End */
22513     } s;
22514     /* struct bdk_pciercx_ptm_res_t2_msb_s cn; */
22515 };
22516 typedef union bdk_pciercx_ptm_res_t2_msb bdk_pciercx_ptm_res_t2_msb_t;
22517 
22518 static inline uint64_t BDK_PCIERCX_PTM_RES_T2_MSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_T2_MSB(unsigned long a)22519 static inline uint64_t BDK_PCIERCX_PTM_RES_T2_MSB(unsigned long a)
22520 {
22521     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22522         return 0x484ll + 0x100000000ll * ((a) & 0x3);
22523     __bdk_csr_fatal("PCIERCX_PTM_RES_T2_MSB", 1, a, 0, 0, 0);
22524 }
22525 
22526 #define typedef_BDK_PCIERCX_PTM_RES_T2_MSB(a) bdk_pciercx_ptm_res_t2_msb_t
22527 #define bustype_BDK_PCIERCX_PTM_RES_T2_MSB(a) BDK_CSR_TYPE_PCICONFIGRC
22528 #define basename_BDK_PCIERCX_PTM_RES_T2_MSB(a) "PCIERCX_PTM_RES_T2_MSB"
22529 #define busnum_BDK_PCIERCX_PTM_RES_T2_MSB(a) (a)
22530 #define arguments_BDK_PCIERCX_PTM_RES_T2_MSB(a) (a),-1,-1,-1
22531 
22532 /**
22533  * Register (PCICONFIGRC) pcierc#_ptm_res_t2p_lsb
22534  *
22535  * PCIe RC PTM Responder T2 Previous Timestamp LSB Register
22536  */
22537 union bdk_pciercx_ptm_res_t2p_lsb
22538 {
22539     uint32_t u;
22540     struct bdk_pciercx_ptm_res_t2p_lsb_s
22541     {
22542 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22543         uint32_t t2p_lsb               : 32; /**< [ 31:  0](RO) PTM responder T2 previous timestamp LSB. */
22544 #else /* Word 0 - Little Endian */
22545         uint32_t t2p_lsb               : 32; /**< [ 31:  0](RO) PTM responder T2 previous timestamp LSB. */
22546 #endif /* Word 0 - End */
22547     } s;
22548     /* struct bdk_pciercx_ptm_res_t2p_lsb_s cn; */
22549 };
22550 typedef union bdk_pciercx_ptm_res_t2p_lsb bdk_pciercx_ptm_res_t2p_lsb_t;
22551 
22552 static inline uint64_t BDK_PCIERCX_PTM_RES_T2P_LSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_T2P_LSB(unsigned long a)22553 static inline uint64_t BDK_PCIERCX_PTM_RES_T2P_LSB(unsigned long a)
22554 {
22555     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22556         return 0x488ll + 0x100000000ll * ((a) & 0x3);
22557     __bdk_csr_fatal("PCIERCX_PTM_RES_T2P_LSB", 1, a, 0, 0, 0);
22558 }
22559 
22560 #define typedef_BDK_PCIERCX_PTM_RES_T2P_LSB(a) bdk_pciercx_ptm_res_t2p_lsb_t
22561 #define bustype_BDK_PCIERCX_PTM_RES_T2P_LSB(a) BDK_CSR_TYPE_PCICONFIGRC
22562 #define basename_BDK_PCIERCX_PTM_RES_T2P_LSB(a) "PCIERCX_PTM_RES_T2P_LSB"
22563 #define busnum_BDK_PCIERCX_PTM_RES_T2P_LSB(a) (a)
22564 #define arguments_BDK_PCIERCX_PTM_RES_T2P_LSB(a) (a),-1,-1,-1
22565 
22566 /**
22567  * Register (PCICONFIGRC) pcierc#_ptm_res_t2p_msb
22568  *
22569  * PCIe RC PTM Responder T2 Previous Timestamp MSB Register
22570  */
22571 union bdk_pciercx_ptm_res_t2p_msb
22572 {
22573     uint32_t u;
22574     struct bdk_pciercx_ptm_res_t2p_msb_s
22575     {
22576 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22577         uint32_t t2p_msb               : 32; /**< [ 31:  0](RO) PTM responder T2 previous timestamp MSB. */
22578 #else /* Word 0 - Little Endian */
22579         uint32_t t2p_msb               : 32; /**< [ 31:  0](RO) PTM responder T2 previous timestamp MSB. */
22580 #endif /* Word 0 - End */
22581     } s;
22582     /* struct bdk_pciercx_ptm_res_t2p_msb_s cn; */
22583 };
22584 typedef union bdk_pciercx_ptm_res_t2p_msb bdk_pciercx_ptm_res_t2p_msb_t;
22585 
22586 static inline uint64_t BDK_PCIERCX_PTM_RES_T2P_MSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_T2P_MSB(unsigned long a)22587 static inline uint64_t BDK_PCIERCX_PTM_RES_T2P_MSB(unsigned long a)
22588 {
22589     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22590         return 0x48cll + 0x100000000ll * ((a) & 0x3);
22591     __bdk_csr_fatal("PCIERCX_PTM_RES_T2P_MSB", 1, a, 0, 0, 0);
22592 }
22593 
22594 #define typedef_BDK_PCIERCX_PTM_RES_T2P_MSB(a) bdk_pciercx_ptm_res_t2p_msb_t
22595 #define bustype_BDK_PCIERCX_PTM_RES_T2P_MSB(a) BDK_CSR_TYPE_PCICONFIGRC
22596 #define basename_BDK_PCIERCX_PTM_RES_T2P_MSB(a) "PCIERCX_PTM_RES_T2P_MSB"
22597 #define busnum_BDK_PCIERCX_PTM_RES_T2P_MSB(a) (a)
22598 #define arguments_BDK_PCIERCX_PTM_RES_T2P_MSB(a) (a),-1,-1,-1
22599 
22600 /**
22601  * Register (PCICONFIGRC) pcierc#_ptm_res_t3_lsb
22602  *
22603  * PCIe RC PTM Responder T3 Timestamp LSB Register
22604  */
22605 union bdk_pciercx_ptm_res_t3_lsb
22606 {
22607     uint32_t u;
22608     struct bdk_pciercx_ptm_res_t3_lsb_s
22609     {
22610 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22611         uint32_t t3_lsb                : 32; /**< [ 31:  0](RO/H) PTM responder T3 timestamp LSB. */
22612 #else /* Word 0 - Little Endian */
22613         uint32_t t3_lsb                : 32; /**< [ 31:  0](RO/H) PTM responder T3 timestamp LSB. */
22614 #endif /* Word 0 - End */
22615     } s;
22616     /* struct bdk_pciercx_ptm_res_t3_lsb_s cn; */
22617 };
22618 typedef union bdk_pciercx_ptm_res_t3_lsb bdk_pciercx_ptm_res_t3_lsb_t;
22619 
22620 static inline uint64_t BDK_PCIERCX_PTM_RES_T3_LSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_T3_LSB(unsigned long a)22621 static inline uint64_t BDK_PCIERCX_PTM_RES_T3_LSB(unsigned long a)
22622 {
22623     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22624         return 0x490ll + 0x100000000ll * ((a) & 0x3);
22625     __bdk_csr_fatal("PCIERCX_PTM_RES_T3_LSB", 1, a, 0, 0, 0);
22626 }
22627 
22628 #define typedef_BDK_PCIERCX_PTM_RES_T3_LSB(a) bdk_pciercx_ptm_res_t3_lsb_t
22629 #define bustype_BDK_PCIERCX_PTM_RES_T3_LSB(a) BDK_CSR_TYPE_PCICONFIGRC
22630 #define basename_BDK_PCIERCX_PTM_RES_T3_LSB(a) "PCIERCX_PTM_RES_T3_LSB"
22631 #define busnum_BDK_PCIERCX_PTM_RES_T3_LSB(a) (a)
22632 #define arguments_BDK_PCIERCX_PTM_RES_T3_LSB(a) (a),-1,-1,-1
22633 
22634 /**
22635  * Register (PCICONFIGRC) pcierc#_ptm_res_t3_msb
22636  *
22637  * PCIe RC PTM Responder T3 Timestamp MSB Register
22638  */
22639 union bdk_pciercx_ptm_res_t3_msb
22640 {
22641     uint32_t u;
22642     struct bdk_pciercx_ptm_res_t3_msb_s
22643     {
22644 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22645         uint32_t t3                    : 32; /**< [ 31:  0](RO/H) PTM responder T3 timestamp MSB. */
22646 #else /* Word 0 - Little Endian */
22647         uint32_t t3                    : 32; /**< [ 31:  0](RO/H) PTM responder T3 timestamp MSB. */
22648 #endif /* Word 0 - End */
22649     } s;
22650     /* struct bdk_pciercx_ptm_res_t3_msb_s cn; */
22651 };
22652 typedef union bdk_pciercx_ptm_res_t3_msb bdk_pciercx_ptm_res_t3_msb_t;
22653 
22654 static inline uint64_t BDK_PCIERCX_PTM_RES_T3_MSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_T3_MSB(unsigned long a)22655 static inline uint64_t BDK_PCIERCX_PTM_RES_T3_MSB(unsigned long a)
22656 {
22657     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22658         return 0x494ll + 0x100000000ll * ((a) & 0x3);
22659     __bdk_csr_fatal("PCIERCX_PTM_RES_T3_MSB", 1, a, 0, 0, 0);
22660 }
22661 
22662 #define typedef_BDK_PCIERCX_PTM_RES_T3_MSB(a) bdk_pciercx_ptm_res_t3_msb_t
22663 #define bustype_BDK_PCIERCX_PTM_RES_T3_MSB(a) BDK_CSR_TYPE_PCICONFIGRC
22664 #define basename_BDK_PCIERCX_PTM_RES_T3_MSB(a) "PCIERCX_PTM_RES_T3_MSB"
22665 #define busnum_BDK_PCIERCX_PTM_RES_T3_MSB(a) (a)
22666 #define arguments_BDK_PCIERCX_PTM_RES_T3_MSB(a) (a),-1,-1,-1
22667 
22668 /**
22669  * Register (PCICONFIGRC) pcierc#_ptm_res_t3p_lsb
22670  *
22671  * PCIe RC PTM Responder T3 Previous Timestamp LSB Register
22672  */
22673 union bdk_pciercx_ptm_res_t3p_lsb
22674 {
22675     uint32_t u;
22676     struct bdk_pciercx_ptm_res_t3p_lsb_s
22677     {
22678 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22679         uint32_t t3p_lsb               : 32; /**< [ 31:  0](RO/H) PTM responder T3 previous timestamp LSB. */
22680 #else /* Word 0 - Little Endian */
22681         uint32_t t3p_lsb               : 32; /**< [ 31:  0](RO/H) PTM responder T3 previous timestamp LSB. */
22682 #endif /* Word 0 - End */
22683     } s;
22684     /* struct bdk_pciercx_ptm_res_t3p_lsb_s cn; */
22685 };
22686 typedef union bdk_pciercx_ptm_res_t3p_lsb bdk_pciercx_ptm_res_t3p_lsb_t;
22687 
22688 static inline uint64_t BDK_PCIERCX_PTM_RES_T3P_LSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_T3P_LSB(unsigned long a)22689 static inline uint64_t BDK_PCIERCX_PTM_RES_T3P_LSB(unsigned long a)
22690 {
22691     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22692         return 0x498ll + 0x100000000ll * ((a) & 0x3);
22693     __bdk_csr_fatal("PCIERCX_PTM_RES_T3P_LSB", 1, a, 0, 0, 0);
22694 }
22695 
22696 #define typedef_BDK_PCIERCX_PTM_RES_T3P_LSB(a) bdk_pciercx_ptm_res_t3p_lsb_t
22697 #define bustype_BDK_PCIERCX_PTM_RES_T3P_LSB(a) BDK_CSR_TYPE_PCICONFIGRC
22698 #define basename_BDK_PCIERCX_PTM_RES_T3P_LSB(a) "PCIERCX_PTM_RES_T3P_LSB"
22699 #define busnum_BDK_PCIERCX_PTM_RES_T3P_LSB(a) (a)
22700 #define arguments_BDK_PCIERCX_PTM_RES_T3P_LSB(a) (a),-1,-1,-1
22701 
22702 /**
22703  * Register (PCICONFIGRC) pcierc#_ptm_res_t3p_msb
22704  *
22705  * PCIe RC PTM Responder T3 Previous Timestamp MSB Register
22706  */
22707 union bdk_pciercx_ptm_res_t3p_msb
22708 {
22709     uint32_t u;
22710     struct bdk_pciercx_ptm_res_t3p_msb_s
22711     {
22712 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22713         uint32_t t3p_msb               : 32; /**< [ 31:  0](RO/H) PTM responder T3 previous timestamp MSB. */
22714 #else /* Word 0 - Little Endian */
22715         uint32_t t3p_msb               : 32; /**< [ 31:  0](RO/H) PTM responder T3 previous timestamp MSB. */
22716 #endif /* Word 0 - End */
22717     } s;
22718     /* struct bdk_pciercx_ptm_res_t3p_msb_s cn; */
22719 };
22720 typedef union bdk_pciercx_ptm_res_t3p_msb bdk_pciercx_ptm_res_t3p_msb_t;
22721 
22722 static inline uint64_t BDK_PCIERCX_PTM_RES_T3P_MSB(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_T3P_MSB(unsigned long a)22723 static inline uint64_t BDK_PCIERCX_PTM_RES_T3P_MSB(unsigned long a)
22724 {
22725     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22726         return 0x49cll + 0x100000000ll * ((a) & 0x3);
22727     __bdk_csr_fatal("PCIERCX_PTM_RES_T3P_MSB", 1, a, 0, 0, 0);
22728 }
22729 
22730 #define typedef_BDK_PCIERCX_PTM_RES_T3P_MSB(a) bdk_pciercx_ptm_res_t3p_msb_t
22731 #define bustype_BDK_PCIERCX_PTM_RES_T3P_MSB(a) BDK_CSR_TYPE_PCICONFIGRC
22732 #define basename_BDK_PCIERCX_PTM_RES_T3P_MSB(a) "PCIERCX_PTM_RES_T3P_MSB"
22733 #define busnum_BDK_PCIERCX_PTM_RES_T3P_MSB(a) (a)
22734 #define arguments_BDK_PCIERCX_PTM_RES_T3P_MSB(a) (a),-1,-1,-1
22735 
22736 /**
22737  * Register (PCICONFIGRC) pcierc#_ptm_res_tx_latency
22738  *
22739  * PCIe RC PTM Responder TX Latency Register
22740  */
22741 union bdk_pciercx_ptm_res_tx_latency
22742 {
22743     uint32_t u;
22744     struct bdk_pciercx_ptm_res_tx_latency_s
22745     {
22746 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22747         uint32_t reserved_12_31        : 20;
22748         uint32_t tx_lat                : 12; /**< [ 11:  0](R/W) PTM responder TX latency. */
22749 #else /* Word 0 - Little Endian */
22750         uint32_t tx_lat                : 12; /**< [ 11:  0](R/W) PTM responder TX latency. */
22751         uint32_t reserved_12_31        : 20;
22752 #endif /* Word 0 - End */
22753     } s;
22754     /* struct bdk_pciercx_ptm_res_tx_latency_s cn; */
22755 };
22756 typedef union bdk_pciercx_ptm_res_tx_latency bdk_pciercx_ptm_res_tx_latency_t;
22757 
22758 static inline uint64_t BDK_PCIERCX_PTM_RES_TX_LATENCY(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_PTM_RES_TX_LATENCY(unsigned long a)22759 static inline uint64_t BDK_PCIERCX_PTM_RES_TX_LATENCY(unsigned long a)
22760 {
22761     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22762         return 0x4a0ll + 0x100000000ll * ((a) & 0x3);
22763     __bdk_csr_fatal("PCIERCX_PTM_RES_TX_LATENCY", 1, a, 0, 0, 0);
22764 }
22765 
22766 #define typedef_BDK_PCIERCX_PTM_RES_TX_LATENCY(a) bdk_pciercx_ptm_res_tx_latency_t
22767 #define bustype_BDK_PCIERCX_PTM_RES_TX_LATENCY(a) BDK_CSR_TYPE_PCICONFIGRC
22768 #define basename_BDK_PCIERCX_PTM_RES_TX_LATENCY(a) "PCIERCX_PTM_RES_TX_LATENCY"
22769 #define busnum_BDK_PCIERCX_PTM_RES_TX_LATENCY(a) (a)
22770 #define arguments_BDK_PCIERCX_PTM_RES_TX_LATENCY(a) (a),-1,-1,-1
22771 
22772 /**
22773  * Register (PCICONFIGRC) pcierc#_queue_status
22774  *
22775  * PCIe RC Queue Status Register
22776  */
22777 union bdk_pciercx_queue_status
22778 {
22779     uint32_t u;
22780     struct bdk_pciercx_queue_status_s
22781     {
22782 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22783         uint32_t fcltoe                : 1;  /**< [ 31: 31](R/W) FC latency timer override enable. When this bit is set, the value in
22784                                                                  PCIERC_QUEUE_STATUS[FCLTOV] will override the FC latency timer value that the
22785                                                                  core calculates according to the PCIe specification. */
22786         uint32_t reserved_29_30        : 2;
22787         uint32_t fcltov                : 13; /**< [ 28: 16](R/W) FC latency timer override value. When you set PCIERC_QUEUE_STATUS[FCLTOE], the
22788                                                                  value in this field will override the FC latency timer value that the core
22789                                                                  calculates according to the PCIe specification. */
22790         uint32_t rsqre                 : 1;  /**< [ 15: 15](R/W1C) Receive serialization queue read error. Indicates the serialization queue has
22791                                                                  attempted to read an incorrectly formatted TLP. */
22792         uint32_t rsqwe                 : 1;  /**< [ 14: 14](R/W1C) Receive serialization queue write error. Indicates insufficient buffer space
22793                                                                  available to write to the serialization queue. */
22794         uint32_t rsqne                 : 1;  /**< [ 13: 13](RO/H) Receive serialization queue not empty. Indicates there is data in the serialization queue. */
22795         uint32_t reserved_4_12         : 9;
22796         uint32_t rqof                  : 1;  /**< [  3:  3](R/W1C) Receive credit queue overflow. Indicates insufficient buffer space available to
22797                                                                  write to the P/NP/CPL credit queue. */
22798         uint32_t rqne                  : 1;  /**< [  2:  2](RO/H) Received queue not empty. Indicates there is data in one or more of the receive buffers. */
22799         uint32_t trbne                 : 1;  /**< [  1:  1](RO/H) Transmit retry buffer not empty. Indicates that there is data in the transmit retry buffer. */
22800         uint32_t rtlpfccnr             : 1;  /**< [  0:  0](RO/H) Received TLP FC credits not returned. Indicates that the PCI Express bus has sent a TLP
22801                                                                  but has not yet received an UpdateFC DLLP indicating that the credits for that TLP have
22802                                                                  been restored by the receiver at the other end of the link. */
22803 #else /* Word 0 - Little Endian */
22804         uint32_t rtlpfccnr             : 1;  /**< [  0:  0](RO/H) Received TLP FC credits not returned. Indicates that the PCI Express bus has sent a TLP
22805                                                                  but has not yet received an UpdateFC DLLP indicating that the credits for that TLP have
22806                                                                  been restored by the receiver at the other end of the link. */
22807         uint32_t trbne                 : 1;  /**< [  1:  1](RO/H) Transmit retry buffer not empty. Indicates that there is data in the transmit retry buffer. */
22808         uint32_t rqne                  : 1;  /**< [  2:  2](RO/H) Received queue not empty. Indicates there is data in one or more of the receive buffers. */
22809         uint32_t rqof                  : 1;  /**< [  3:  3](R/W1C) Receive credit queue overflow. Indicates insufficient buffer space available to
22810                                                                  write to the P/NP/CPL credit queue. */
22811         uint32_t reserved_4_12         : 9;
22812         uint32_t rsqne                 : 1;  /**< [ 13: 13](RO/H) Receive serialization queue not empty. Indicates there is data in the serialization queue. */
22813         uint32_t rsqwe                 : 1;  /**< [ 14: 14](R/W1C) Receive serialization queue write error. Indicates insufficient buffer space
22814                                                                  available to write to the serialization queue. */
22815         uint32_t rsqre                 : 1;  /**< [ 15: 15](R/W1C) Receive serialization queue read error. Indicates the serialization queue has
22816                                                                  attempted to read an incorrectly formatted TLP. */
22817         uint32_t fcltov                : 13; /**< [ 28: 16](R/W) FC latency timer override value. When you set PCIERC_QUEUE_STATUS[FCLTOE], the
22818                                                                  value in this field will override the FC latency timer value that the core
22819                                                                  calculates according to the PCIe specification. */
22820         uint32_t reserved_29_30        : 2;
22821         uint32_t fcltoe                : 1;  /**< [ 31: 31](R/W) FC latency timer override enable. When this bit is set, the value in
22822                                                                  PCIERC_QUEUE_STATUS[FCLTOV] will override the FC latency timer value that the
22823                                                                  core calculates according to the PCIe specification. */
22824 #endif /* Word 0 - End */
22825     } s;
22826     /* struct bdk_pciercx_queue_status_s cn; */
22827 };
22828 typedef union bdk_pciercx_queue_status bdk_pciercx_queue_status_t;
22829 
22830 static inline uint64_t BDK_PCIERCX_QUEUE_STATUS(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_QUEUE_STATUS(unsigned long a)22831 static inline uint64_t BDK_PCIERCX_QUEUE_STATUS(unsigned long a)
22832 {
22833     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22834         return 0x73cll + 0x100000000ll * ((a) & 0x3);
22835     __bdk_csr_fatal("PCIERCX_QUEUE_STATUS", 1, a, 0, 0, 0);
22836 }
22837 
22838 #define typedef_BDK_PCIERCX_QUEUE_STATUS(a) bdk_pciercx_queue_status_t
22839 #define bustype_BDK_PCIERCX_QUEUE_STATUS(a) BDK_CSR_TYPE_PCICONFIGRC
22840 #define basename_BDK_PCIERCX_QUEUE_STATUS(a) "PCIERCX_QUEUE_STATUS"
22841 #define busnum_BDK_PCIERCX_QUEUE_STATUS(a) (a)
22842 #define arguments_BDK_PCIERCX_QUEUE_STATUS(a) (a),-1,-1,-1
22843 
22844 /**
22845  * Register (PCICONFIGRC) pcierc#_ras_des_cap_hdr
22846  *
22847  * PCIe RC Vendor Specific RAS DES Capability Header Register
22848  */
22849 union bdk_pciercx_ras_des_cap_hdr
22850 {
22851     uint32_t u;
22852     struct bdk_pciercx_ras_des_cap_hdr_s
22853     {
22854 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22855         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
22856                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22857         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
22858                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22859         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
22860                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22861 #else /* Word 0 - Little Endian */
22862         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
22863                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22864         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
22865                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22866         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
22867                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
22868 #endif /* Word 0 - End */
22869     } s;
22870     /* struct bdk_pciercx_ras_des_cap_hdr_s cn; */
22871 };
22872 typedef union bdk_pciercx_ras_des_cap_hdr bdk_pciercx_ras_des_cap_hdr_t;
22873 
22874 static inline uint64_t BDK_PCIERCX_RAS_DES_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_DES_CAP_HDR(unsigned long a)22875 static inline uint64_t BDK_PCIERCX_RAS_DES_CAP_HDR(unsigned long a)
22876 {
22877     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22878         return 0x318ll + 0x100000000ll * ((a) & 0x3);
22879     __bdk_csr_fatal("PCIERCX_RAS_DES_CAP_HDR", 1, a, 0, 0, 0);
22880 }
22881 
22882 #define typedef_BDK_PCIERCX_RAS_DES_CAP_HDR(a) bdk_pciercx_ras_des_cap_hdr_t
22883 #define bustype_BDK_PCIERCX_RAS_DES_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
22884 #define basename_BDK_PCIERCX_RAS_DES_CAP_HDR(a) "PCIERCX_RAS_DES_CAP_HDR"
22885 #define busnum_BDK_PCIERCX_RAS_DES_CAP_HDR(a) (a)
22886 #define arguments_BDK_PCIERCX_RAS_DES_CAP_HDR(a) (a),-1,-1,-1
22887 
22888 /**
22889  * Register (PCICONFIGRC) pcierc#_ras_ec_ctl
22890  *
22891  * PCIe RC Vendor RAS DES Event Counter Control Register
22892  */
22893 union bdk_pciercx_ras_ec_ctl
22894 {
22895     uint32_t u;
22896     struct bdk_pciercx_ras_ec_ctl_s
22897     {
22898 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
22899         uint32_t reserved_28_31        : 4;
22900         uint32_t ev_cntr_data_sel      : 12; /**< [ 27: 16](R/W) Event counter data select.  This field in conjunction with [EV_CNTR_LANE_SEL]
22901                                                                  selects PCIERC_RAS_EC_DATA[EV_CNTR_DATA].
22902                                                                  _ \<27:24\> = Group number (0..0x7).
22903                                                                  _ \<23:16\> = Event number (0..0x13). */
22904         uint32_t reserved_12_15        : 4;
22905         uint32_t ev_cntr_lane_sel      : 4;  /**< [ 11:  8](R/W) Event counter lane select.  This field in conjunction with [EV_CNTR_DATA_SEL]
22906                                                                  indexes the event counter data returned in the PCIERC_RAS_EC_DATA[EV_CNTR_DATA].
22907 
22908                                                                  0x0-0x7 = Lane number.
22909                                                                  0x8-0xF = Reserved. */
22910         uint32_t ev_cntr_stat          : 1;  /**< [  7:  7](RO/H) Event counter status.  Returns the enable status of the event counter
22911                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL]. */
22912         uint32_t reserved_5_6          : 2;
22913         uint32_t ev_cntr_en            : 3;  /**< [  4:  2](WO) Event counter enable.  Enables/disables the event counter
22914                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL].
22915                                                                  By default, all event counters are disabled.  This field
22916                                                                  always reads zeros.
22917 
22918                                                                  0x0 = No change.
22919                                                                  0x1 = Per event off.
22920                                                                  0x2 = No change.
22921                                                                  0x3 = Per event on.
22922                                                                  0x4 = No change.
22923                                                                  0x5 = All off.
22924                                                                  0x6 = No change.
22925                                                                  0x7 = All on. */
22926         uint32_t ev_cntr_clr           : 2;  /**< [  1:  0](WO) Event counter clear. Clears the event counters
22927                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL].
22928                                                                  By default, all event counters are disabled.  This field
22929                                                                  always reads zeros.
22930 
22931                                                                  0x0 = No change.
22932                                                                  0x1 = Per clear.
22933                                                                  0x2 = No change.
22934                                                                  0x3 = All clear. */
22935 #else /* Word 0 - Little Endian */
22936         uint32_t ev_cntr_clr           : 2;  /**< [  1:  0](WO) Event counter clear. Clears the event counters
22937                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL].
22938                                                                  By default, all event counters are disabled.  This field
22939                                                                  always reads zeros.
22940 
22941                                                                  0x0 = No change.
22942                                                                  0x1 = Per clear.
22943                                                                  0x2 = No change.
22944                                                                  0x3 = All clear. */
22945         uint32_t ev_cntr_en            : 3;  /**< [  4:  2](WO) Event counter enable.  Enables/disables the event counter
22946                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL].
22947                                                                  By default, all event counters are disabled.  This field
22948                                                                  always reads zeros.
22949 
22950                                                                  0x0 = No change.
22951                                                                  0x1 = Per event off.
22952                                                                  0x2 = No change.
22953                                                                  0x3 = Per event on.
22954                                                                  0x4 = No change.
22955                                                                  0x5 = All off.
22956                                                                  0x6 = No change.
22957                                                                  0x7 = All on. */
22958         uint32_t reserved_5_6          : 2;
22959         uint32_t ev_cntr_stat          : 1;  /**< [  7:  7](RO/H) Event counter status.  Returns the enable status of the event counter
22960                                                                  selected by [EV_CNTR_DATA_SEL] and [EV_CNTR_LANE_SEL]. */
22961         uint32_t ev_cntr_lane_sel      : 4;  /**< [ 11:  8](R/W) Event counter lane select.  This field in conjunction with [EV_CNTR_DATA_SEL]
22962                                                                  indexes the event counter data returned in the PCIERC_RAS_EC_DATA[EV_CNTR_DATA].
22963 
22964                                                                  0x0-0x7 = Lane number.
22965                                                                  0x8-0xF = Reserved. */
22966         uint32_t reserved_12_15        : 4;
22967         uint32_t ev_cntr_data_sel      : 12; /**< [ 27: 16](R/W) Event counter data select.  This field in conjunction with [EV_CNTR_LANE_SEL]
22968                                                                  selects PCIERC_RAS_EC_DATA[EV_CNTR_DATA].
22969                                                                  _ \<27:24\> = Group number (0..0x7).
22970                                                                  _ \<23:16\> = Event number (0..0x13). */
22971         uint32_t reserved_28_31        : 4;
22972 #endif /* Word 0 - End */
22973     } s;
22974     /* struct bdk_pciercx_ras_ec_ctl_s cn; */
22975 };
22976 typedef union bdk_pciercx_ras_ec_ctl bdk_pciercx_ras_ec_ctl_t;
22977 
22978 static inline uint64_t BDK_PCIERCX_RAS_EC_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EC_CTL(unsigned long a)22979 static inline uint64_t BDK_PCIERCX_RAS_EC_CTL(unsigned long a)
22980 {
22981     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
22982         return 0x320ll + 0x100000000ll * ((a) & 0x3);
22983     __bdk_csr_fatal("PCIERCX_RAS_EC_CTL", 1, a, 0, 0, 0);
22984 }
22985 
22986 #define typedef_BDK_PCIERCX_RAS_EC_CTL(a) bdk_pciercx_ras_ec_ctl_t
22987 #define bustype_BDK_PCIERCX_RAS_EC_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
22988 #define basename_BDK_PCIERCX_RAS_EC_CTL(a) "PCIERCX_RAS_EC_CTL"
22989 #define busnum_BDK_PCIERCX_RAS_EC_CTL(a) (a)
22990 #define arguments_BDK_PCIERCX_RAS_EC_CTL(a) (a),-1,-1,-1
22991 
22992 /**
22993  * Register (PCICONFIGRC) pcierc#_ras_ec_data
22994  *
22995  * PCIe RC Vendor RAS DES Data Register
22996  */
22997 union bdk_pciercx_ras_ec_data
22998 {
22999     uint32_t u;
23000     struct bdk_pciercx_ras_ec_data_s
23001     {
23002 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23003         uint32_t ev_cntr_data          : 32; /**< [ 31:  0](RO) Event counter data.  This field returns data selected by
23004                                                                  PCIERC_RAS_EC_CTL[EV_CNTR_DATA_SEL]
23005                                                                  and PCIERC_RAS_EC_CTL[EV_CNTR_LANE_SEL]. */
23006 #else /* Word 0 - Little Endian */
23007         uint32_t ev_cntr_data          : 32; /**< [ 31:  0](RO) Event counter data.  This field returns data selected by
23008                                                                  PCIERC_RAS_EC_CTL[EV_CNTR_DATA_SEL]
23009                                                                  and PCIERC_RAS_EC_CTL[EV_CNTR_LANE_SEL]. */
23010 #endif /* Word 0 - End */
23011     } s;
23012     /* struct bdk_pciercx_ras_ec_data_s cn; */
23013 };
23014 typedef union bdk_pciercx_ras_ec_data bdk_pciercx_ras_ec_data_t;
23015 
23016 static inline uint64_t BDK_PCIERCX_RAS_EC_DATA(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EC_DATA(unsigned long a)23017 static inline uint64_t BDK_PCIERCX_RAS_EC_DATA(unsigned long a)
23018 {
23019     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23020         return 0x324ll + 0x100000000ll * ((a) & 0x3);
23021     __bdk_csr_fatal("PCIERCX_RAS_EC_DATA", 1, a, 0, 0, 0);
23022 }
23023 
23024 #define typedef_BDK_PCIERCX_RAS_EC_DATA(a) bdk_pciercx_ras_ec_data_t
23025 #define bustype_BDK_PCIERCX_RAS_EC_DATA(a) BDK_CSR_TYPE_PCICONFIGRC
23026 #define basename_BDK_PCIERCX_RAS_EC_DATA(a) "PCIERCX_RAS_EC_DATA"
23027 #define busnum_BDK_PCIERCX_RAS_EC_DATA(a) (a)
23028 #define arguments_BDK_PCIERCX_RAS_EC_DATA(a) (a),-1,-1,-1
23029 
23030 /**
23031  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl0
23032  *
23033  * PCIe RC Vendor RAS DES Error Injection Control 0 (CRC) Register
23034  */
23035 union bdk_pciercx_ras_einj_ctl0
23036 {
23037     uint32_t u;
23038     struct bdk_pciercx_ras_einj_ctl0_s
23039     {
23040 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23041         uint32_t reserved_12_31        : 20;
23042         uint32_t einj0_crc_type        : 4;  /**< [ 11:  8](R/W) Error injection type.  Selects the type of CRC error tp in inserted.
23043 
23044                                                                  TX path:
23045                                                                  0x0 = New TLP's LCRC error injection.
23046                                                                  0x1 = 16bCRC error injection of ACK/NAK DLLP.
23047                                                                  0x2 = 16bCRC error injection of Update-FC DLLP.
23048                                                                  0x3 = New TLP's ECRC error injection.
23049                                                                  0x4 = TLP's FCRC error injection (128b/130b).
23050                                                                  0x5 = Parity error of TSOS (128b/130b).
23051                                                                  0x6 = Parity error of SKPOS (128b/130b).
23052                                                                  0x7 = Reserved.
23053 
23054                                                                  RX path:
23055                                                                  0x8 = LCRC error injection.
23056                                                                  0x9 = ECRC error injection.
23057                                                                  0xA - 0xF = Reserved. */
23058         uint32_t einj0_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23059                                                                  This register is decremented when errors are inserted.
23060 
23061                                                                  If the counter value is 0x1 and error is inserted,
23062                                                                  PCIERC_RAS_EINJ_EN[EINJ0_EN] returns zero.
23063 
23064                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ0_EN] is set,
23065                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ0_EN] is cleared. */
23066 #else /* Word 0 - Little Endian */
23067         uint32_t einj0_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23068                                                                  This register is decremented when errors are inserted.
23069 
23070                                                                  If the counter value is 0x1 and error is inserted,
23071                                                                  PCIERC_RAS_EINJ_EN[EINJ0_EN] returns zero.
23072 
23073                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ0_EN] is set,
23074                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ0_EN] is cleared. */
23075         uint32_t einj0_crc_type        : 4;  /**< [ 11:  8](R/W) Error injection type.  Selects the type of CRC error tp in inserted.
23076 
23077                                                                  TX path:
23078                                                                  0x0 = New TLP's LCRC error injection.
23079                                                                  0x1 = 16bCRC error injection of ACK/NAK DLLP.
23080                                                                  0x2 = 16bCRC error injection of Update-FC DLLP.
23081                                                                  0x3 = New TLP's ECRC error injection.
23082                                                                  0x4 = TLP's FCRC error injection (128b/130b).
23083                                                                  0x5 = Parity error of TSOS (128b/130b).
23084                                                                  0x6 = Parity error of SKPOS (128b/130b).
23085                                                                  0x7 = Reserved.
23086 
23087                                                                  RX path:
23088                                                                  0x8 = LCRC error injection.
23089                                                                  0x9 = ECRC error injection.
23090                                                                  0xA - 0xF = Reserved. */
23091         uint32_t reserved_12_31        : 20;
23092 #endif /* Word 0 - End */
23093     } s;
23094     /* struct bdk_pciercx_ras_einj_ctl0_s cn; */
23095 };
23096 typedef union bdk_pciercx_ras_einj_ctl0 bdk_pciercx_ras_einj_ctl0_t;
23097 
23098 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL0(unsigned long a)23099 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL0(unsigned long a)
23100 {
23101     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23102         return 0x34cll + 0x100000000ll * ((a) & 0x3);
23103     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL0", 1, a, 0, 0, 0);
23104 }
23105 
23106 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL0(a) bdk_pciercx_ras_einj_ctl0_t
23107 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL0(a) BDK_CSR_TYPE_PCICONFIGRC
23108 #define basename_BDK_PCIERCX_RAS_EINJ_CTL0(a) "PCIERCX_RAS_EINJ_CTL0"
23109 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL0(a) (a)
23110 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL0(a) (a),-1,-1,-1
23111 
23112 /**
23113  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl1
23114  *
23115  * PCIe RC Vendor RAS DES Error Injection Control 1 (SEQNUM) Register
23116  */
23117 union bdk_pciercx_ras_einj_ctl1
23118 {
23119     uint32_t u;
23120     struct bdk_pciercx_ras_einj_ctl1_s
23121     {
23122 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23123         uint32_t reserved_29_31        : 3;
23124         uint32_t einj1_bad_seqnum      : 13; /**< [ 28: 16](R/W) Bad sequence number. Indicates the value to add/subtract
23125                                                                  from the naturally-assigned sequence numbers. This value is
23126                                                                  represented by two's complement.
23127 
23128                                                                  0x0FFF = +4095.
23129 
23130                                                                  0x0002 = +2.
23131                                                                  0x0001 = +1.
23132                                                                  0x0000 = 0.
23133                                                                  0x1FFF = -1.
23134                                                                  0x1FFE = -2.
23135 
23136                                                                  0x1001 = -4095. */
23137         uint32_t reserved_9_15         : 7;
23138         uint32_t einj1_seqnum_type     : 1;  /**< [  8:  8](R/W) Sequence number type.  Selects the type of sequence number.
23139 
23140                                                                  0x0 = Insertion of New TLP's SEQ error.
23141                                                                  0x1 = Insertion of ACK/NAK DLLP's SEQ error. */
23142         uint32_t einj1_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23143                                                                  This register is decremented when errors are inserted.
23144 
23145                                                                  If the counter value is 0x1 and error is inserted,
23146                                                                  PCIERC_RAS_EINJ_EN[EINJ1_EN] returns zero.
23147 
23148                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ1_EN] is set,
23149                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ1_EN] is cleared. */
23150 #else /* Word 0 - Little Endian */
23151         uint32_t einj1_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23152                                                                  This register is decremented when errors are inserted.
23153 
23154                                                                  If the counter value is 0x1 and error is inserted,
23155                                                                  PCIERC_RAS_EINJ_EN[EINJ1_EN] returns zero.
23156 
23157                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ1_EN] is set,
23158                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ1_EN] is cleared. */
23159         uint32_t einj1_seqnum_type     : 1;  /**< [  8:  8](R/W) Sequence number type.  Selects the type of sequence number.
23160 
23161                                                                  0x0 = Insertion of New TLP's SEQ error.
23162                                                                  0x1 = Insertion of ACK/NAK DLLP's SEQ error. */
23163         uint32_t reserved_9_15         : 7;
23164         uint32_t einj1_bad_seqnum      : 13; /**< [ 28: 16](R/W) Bad sequence number. Indicates the value to add/subtract
23165                                                                  from the naturally-assigned sequence numbers. This value is
23166                                                                  represented by two's complement.
23167 
23168                                                                  0x0FFF = +4095.
23169 
23170                                                                  0x0002 = +2.
23171                                                                  0x0001 = +1.
23172                                                                  0x0000 = 0.
23173                                                                  0x1FFF = -1.
23174                                                                  0x1FFE = -2.
23175 
23176                                                                  0x1001 = -4095. */
23177         uint32_t reserved_29_31        : 3;
23178 #endif /* Word 0 - End */
23179     } s;
23180     /* struct bdk_pciercx_ras_einj_ctl1_s cn; */
23181 };
23182 typedef union bdk_pciercx_ras_einj_ctl1 bdk_pciercx_ras_einj_ctl1_t;
23183 
23184 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL1(unsigned long a)23185 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL1(unsigned long a)
23186 {
23187     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23188         return 0x350ll + 0x100000000ll * ((a) & 0x3);
23189     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL1", 1, a, 0, 0, 0);
23190 }
23191 
23192 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL1(a) bdk_pciercx_ras_einj_ctl1_t
23193 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL1(a) BDK_CSR_TYPE_PCICONFIGRC
23194 #define basename_BDK_PCIERCX_RAS_EINJ_CTL1(a) "PCIERCX_RAS_EINJ_CTL1"
23195 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL1(a) (a)
23196 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL1(a) (a),-1,-1,-1
23197 
23198 /**
23199  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl2
23200  *
23201  * PCIe RC Vendor RAS DES Error Injection Control 2 (DLLP) Register
23202  */
23203 union bdk_pciercx_ras_einj_ctl2
23204 {
23205     uint32_t u;
23206     struct bdk_pciercx_ras_einj_ctl2_s
23207     {
23208 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23209         uint32_t reserved_10_31        : 22;
23210         uint32_t einj2_dllp_type       : 2;  /**< [  9:  8](R/W) DLLP type.  Selects the type of DLLP errors to be inserted.
23211 
23212                                                                  0x0 = ACK/NAK DLLP transmission block.
23213                                                                  0x1 = Update FC DLLP's transmission block.
23214                                                                  0x2 = Always transmission for NAK DLLP.
23215                                                                  0x3 = Reserved. */
23216         uint32_t einj2_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23217                                                                  This register is decremented when errors are inserted.
23218 
23219                                                                  If the counter value is 0x1 and error is inserted,
23220                                                                  PCIERC_RAS_EINJ_EN[EINJ2_EN] returns zero.
23221 
23222                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ2_EN] is set,
23223                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ2_EN] is cleared. */
23224 #else /* Word 0 - Little Endian */
23225         uint32_t einj2_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23226                                                                  This register is decremented when errors are inserted.
23227 
23228                                                                  If the counter value is 0x1 and error is inserted,
23229                                                                  PCIERC_RAS_EINJ_EN[EINJ2_EN] returns zero.
23230 
23231                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ2_EN] is set,
23232                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ2_EN] is cleared. */
23233         uint32_t einj2_dllp_type       : 2;  /**< [  9:  8](R/W) DLLP type.  Selects the type of DLLP errors to be inserted.
23234 
23235                                                                  0x0 = ACK/NAK DLLP transmission block.
23236                                                                  0x1 = Update FC DLLP's transmission block.
23237                                                                  0x2 = Always transmission for NAK DLLP.
23238                                                                  0x3 = Reserved. */
23239         uint32_t reserved_10_31        : 22;
23240 #endif /* Word 0 - End */
23241     } s;
23242     /* struct bdk_pciercx_ras_einj_ctl2_s cn; */
23243 };
23244 typedef union bdk_pciercx_ras_einj_ctl2 bdk_pciercx_ras_einj_ctl2_t;
23245 
23246 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL2(unsigned long a)23247 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL2(unsigned long a)
23248 {
23249     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23250         return 0x354ll + 0x100000000ll * ((a) & 0x3);
23251     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL2", 1, a, 0, 0, 0);
23252 }
23253 
23254 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL2(a) bdk_pciercx_ras_einj_ctl2_t
23255 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL2(a) BDK_CSR_TYPE_PCICONFIGRC
23256 #define basename_BDK_PCIERCX_RAS_EINJ_CTL2(a) "PCIERCX_RAS_EINJ_CTL2"
23257 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL2(a) (a)
23258 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL2(a) (a),-1,-1,-1
23259 
23260 /**
23261  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl3
23262  *
23263  * PCIe RC Vendor RAS DES Error Injection Control 3 (Symbol) Register
23264  */
23265 union bdk_pciercx_ras_einj_ctl3
23266 {
23267     uint32_t u;
23268     struct bdk_pciercx_ras_einj_ctl3_s
23269     {
23270 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23271         uint32_t reserved_11_31        : 21;
23272         uint32_t einj3_symbol_type     : 3;  /**< [ 10:  8](R/W) Error type, 8 b/10 b encoding - Mask K symbol.
23273 
23274                                                                  0x0 = Reserved.
23275                                                                  0x1 = COM/PAD(TS1 Order Set).
23276                                                                  0x2 = COM/PAD(TS2 Order Set).
23277                                                                  0x3 = COM/FTS(FTS Order Set).
23278                                                                  0x4 = COM/IDLE(E-Idle Order Set).
23279                                                                  0x5 = END/EDB Symbol.
23280                                                                  0x6 = STP/SDP Symbol.
23281                                                                  0x7 = COM/SKP(SKP Order set). */
23282         uint32_t einj3_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23283                                                                  This register is decremented when errors are inserted.
23284 
23285                                                                  If the counter value is 0x1 and error is inserted,
23286                                                                  PCIERC_RAS_EINJ_EN[EINJ3_EN] returns zero.
23287 
23288                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ3_EN] is set,
23289                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ3_EN] is cleared. */
23290 #else /* Word 0 - Little Endian */
23291         uint32_t einj3_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23292                                                                  This register is decremented when errors are inserted.
23293 
23294                                                                  If the counter value is 0x1 and error is inserted,
23295                                                                  PCIERC_RAS_EINJ_EN[EINJ3_EN] returns zero.
23296 
23297                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ3_EN] is set,
23298                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ3_EN] is cleared. */
23299         uint32_t einj3_symbol_type     : 3;  /**< [ 10:  8](R/W) Error type, 8 b/10 b encoding - Mask K symbol.
23300 
23301                                                                  0x0 = Reserved.
23302                                                                  0x1 = COM/PAD(TS1 Order Set).
23303                                                                  0x2 = COM/PAD(TS2 Order Set).
23304                                                                  0x3 = COM/FTS(FTS Order Set).
23305                                                                  0x4 = COM/IDLE(E-Idle Order Set).
23306                                                                  0x5 = END/EDB Symbol.
23307                                                                  0x6 = STP/SDP Symbol.
23308                                                                  0x7 = COM/SKP(SKP Order set). */
23309         uint32_t reserved_11_31        : 21;
23310 #endif /* Word 0 - End */
23311     } s;
23312     /* struct bdk_pciercx_ras_einj_ctl3_s cn; */
23313 };
23314 typedef union bdk_pciercx_ras_einj_ctl3 bdk_pciercx_ras_einj_ctl3_t;
23315 
23316 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL3(unsigned long a)23317 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL3(unsigned long a)
23318 {
23319     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23320         return 0x358ll + 0x100000000ll * ((a) & 0x3);
23321     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL3", 1, a, 0, 0, 0);
23322 }
23323 
23324 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL3(a) bdk_pciercx_ras_einj_ctl3_t
23325 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL3(a) BDK_CSR_TYPE_PCICONFIGRC
23326 #define basename_BDK_PCIERCX_RAS_EINJ_CTL3(a) "PCIERCX_RAS_EINJ_CTL3"
23327 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL3(a) (a)
23328 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL3(a) (a),-1,-1,-1
23329 
23330 /**
23331  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl4
23332  *
23333  * PCIe RC Vendor RAS DES Error Injection Control 4 (FC Credit) Register
23334  */
23335 union bdk_pciercx_ras_einj_ctl4
23336 {
23337     uint32_t u;
23338     struct bdk_pciercx_ras_einj_ctl4_s
23339     {
23340 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23341         uint32_t reserved_29_31        : 3;
23342         uint32_t einj4_bad_updfc_val   : 13; /**< [ 28: 16](R/W) Bad update-FC credit value.  Indicates the value to add/subtract
23343                                                                  from the UpdateFC credit.  The value is represented by two's
23344                                                                  compliment.
23345 
23346                                                                  0x0FFF = +4095.
23347 
23348                                                                  0x0002 = +2.
23349                                                                  0x0001 = +1.
23350                                                                  0x0000 = 0.
23351                                                                  0x1FFF = -1.
23352                                                                  0x1FFE = -2.
23353 
23354                                                                  0x1001 = -4095. */
23355         uint32_t reserved_15           : 1;
23356         uint32_t einj4_vc_num          : 3;  /**< [ 14: 12](R/W) VC number.  Indicates the target VC number. */
23357         uint32_t reserved_11           : 1;
23358         uint32_t einj4_vc_type         : 3;  /**< [ 10:  8](R/W) Update-FC type.  Selects the credit type.
23359 
23360                                                                  0x0 = Posted TLP header credit value control.
23361                                                                  0x1 = Non-Posted TLP header credit value control.
23362                                                                  0x2 = Completion TLP header credit value control.
23363                                                                  0x3 = Reserved.
23364                                                                  0x4 = Posted TLP data credit value control.
23365                                                                  0x5 = Non-Posted TLP data credit value control.
23366                                                                  0x6 = Completion TLP data credit value control.
23367                                                                  0x7 = Reserved. */
23368         uint32_t einj4_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23369                                                                  This register is decremented when errors are inserted.
23370 
23371                                                                  If the counter value is 0x1 and error is inserted,
23372                                                                  PCIERC_RAS_EINJ_EN[EINJ4_EN] returns zero.
23373 
23374                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ4_EN] is set,
23375                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ4_EN] is cleared. */
23376 #else /* Word 0 - Little Endian */
23377         uint32_t einj4_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23378                                                                  This register is decremented when errors are inserted.
23379 
23380                                                                  If the counter value is 0x1 and error is inserted,
23381                                                                  PCIERC_RAS_EINJ_EN[EINJ4_EN] returns zero.
23382 
23383                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ4_EN] is set,
23384                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ4_EN] is cleared. */
23385         uint32_t einj4_vc_type         : 3;  /**< [ 10:  8](R/W) Update-FC type.  Selects the credit type.
23386 
23387                                                                  0x0 = Posted TLP header credit value control.
23388                                                                  0x1 = Non-Posted TLP header credit value control.
23389                                                                  0x2 = Completion TLP header credit value control.
23390                                                                  0x3 = Reserved.
23391                                                                  0x4 = Posted TLP data credit value control.
23392                                                                  0x5 = Non-Posted TLP data credit value control.
23393                                                                  0x6 = Completion TLP data credit value control.
23394                                                                  0x7 = Reserved. */
23395         uint32_t reserved_11           : 1;
23396         uint32_t einj4_vc_num          : 3;  /**< [ 14: 12](R/W) VC number.  Indicates the target VC number. */
23397         uint32_t reserved_15           : 1;
23398         uint32_t einj4_bad_updfc_val   : 13; /**< [ 28: 16](R/W) Bad update-FC credit value.  Indicates the value to add/subtract
23399                                                                  from the UpdateFC credit.  The value is represented by two's
23400                                                                  compliment.
23401 
23402                                                                  0x0FFF = +4095.
23403 
23404                                                                  0x0002 = +2.
23405                                                                  0x0001 = +1.
23406                                                                  0x0000 = 0.
23407                                                                  0x1FFF = -1.
23408                                                                  0x1FFE = -2.
23409 
23410                                                                  0x1001 = -4095. */
23411         uint32_t reserved_29_31        : 3;
23412 #endif /* Word 0 - End */
23413     } s;
23414     /* struct bdk_pciercx_ras_einj_ctl4_s cn; */
23415 };
23416 typedef union bdk_pciercx_ras_einj_ctl4 bdk_pciercx_ras_einj_ctl4_t;
23417 
23418 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL4(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL4(unsigned long a)23419 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL4(unsigned long a)
23420 {
23421     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23422         return 0x35cll + 0x100000000ll * ((a) & 0x3);
23423     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL4", 1, a, 0, 0, 0);
23424 }
23425 
23426 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL4(a) bdk_pciercx_ras_einj_ctl4_t
23427 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL4(a) BDK_CSR_TYPE_PCICONFIGRC
23428 #define basename_BDK_PCIERCX_RAS_EINJ_CTL4(a) "PCIERCX_RAS_EINJ_CTL4"
23429 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL4(a) (a)
23430 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL4(a) (a),-1,-1,-1
23431 
23432 /**
23433  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl5
23434  *
23435  * PCIe RC Vendor RAS DES Error Injection Control 5 (Specific TLP) Register
23436  */
23437 union bdk_pciercx_ras_einj_ctl5
23438 {
23439     uint32_t u;
23440     struct bdk_pciercx_ras_einj_ctl5_s
23441     {
23442 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23443         uint32_t reserved_9_31         : 23;
23444         uint32_t einj5_sp_tlp          : 1;  /**< [  8:  8](R/W) Specified TLP.  Selects the specified TLP to be inserted.
23445 
23446                                                                  0x0 = Generates duplicate TLPs by handling ACK DLLP as NAK DLLP.
23447                                                                  0x1 = Generates nullified TLP (Original TLP will be stored in retry buffer). */
23448         uint32_t einj5_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23449                                                                  This register is decremented when errors are inserted.
23450 
23451                                                                  If the counter value is 0x1 and error is inserted,
23452                                                                  PCIERC_RAS_EINJ_EN[EINJ5_EN] returns zero.
23453 
23454                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ5_EN] is set,
23455                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ5_EN] is cleared. */
23456 #else /* Word 0 - Little Endian */
23457         uint32_t einj5_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
23458                                                                  This register is decremented when errors are inserted.
23459 
23460                                                                  If the counter value is 0x1 and error is inserted,
23461                                                                  PCIERC_RAS_EINJ_EN[EINJ5_EN] returns zero.
23462 
23463                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ5_EN] is set,
23464                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ5_EN] is cleared. */
23465         uint32_t einj5_sp_tlp          : 1;  /**< [  8:  8](R/W) Specified TLP.  Selects the specified TLP to be inserted.
23466 
23467                                                                  0x0 = Generates duplicate TLPs by handling ACK DLLP as NAK DLLP.
23468                                                                  0x1 = Generates nullified TLP (Original TLP will be stored in retry buffer). */
23469         uint32_t reserved_9_31         : 23;
23470 #endif /* Word 0 - End */
23471     } s;
23472     /* struct bdk_pciercx_ras_einj_ctl5_s cn; */
23473 };
23474 typedef union bdk_pciercx_ras_einj_ctl5 bdk_pciercx_ras_einj_ctl5_t;
23475 
23476 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL5(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL5(unsigned long a)23477 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL5(unsigned long a)
23478 {
23479     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23480         return 0x360ll + 0x100000000ll * ((a) & 0x3);
23481     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL5", 1, a, 0, 0, 0);
23482 }
23483 
23484 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL5(a) bdk_pciercx_ras_einj_ctl5_t
23485 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL5(a) BDK_CSR_TYPE_PCICONFIGRC
23486 #define basename_BDK_PCIERCX_RAS_EINJ_CTL5(a) "PCIERCX_RAS_EINJ_CTL5"
23487 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL5(a) (a)
23488 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL5(a) (a),-1,-1,-1
23489 
23490 /**
23491  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6chgp0
23492  *
23493  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Point H0) Register
23494  */
23495 union bdk_pciercx_ras_einj_ctl6chgp0
23496 {
23497     uint32_t u;
23498     struct bdk_pciercx_ras_einj_ctl6chgp0_s
23499     {
23500 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23501         uint32_t einj6_chg_pt_h0       : 32; /**< [ 31:  0](R/W) Packet change point first DWORD.
23502                                                                  Specifies which TX TLP header DWORD0 bits to replace
23503                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CHGV0[EINJ6_CHG_VAL_H0]. */
23504 #else /* Word 0 - Little Endian */
23505         uint32_t einj6_chg_pt_h0       : 32; /**< [ 31:  0](R/W) Packet change point first DWORD.
23506                                                                  Specifies which TX TLP header DWORD0 bits to replace
23507                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CHGV0[EINJ6_CHG_VAL_H0]. */
23508 #endif /* Word 0 - End */
23509     } s;
23510     /* struct bdk_pciercx_ras_einj_ctl6chgp0_s cn; */
23511 };
23512 typedef union bdk_pciercx_ras_einj_ctl6chgp0 bdk_pciercx_ras_einj_ctl6chgp0_t;
23513 
23514 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGP0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CHGP0(unsigned long a)23515 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGP0(unsigned long a)
23516 {
23517     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23518         return 0x384ll + 0x100000000ll * ((a) & 0x3);
23519     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CHGP0", 1, a, 0, 0, 0);
23520 }
23521 
23522 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CHGP0(a) bdk_pciercx_ras_einj_ctl6chgp0_t
23523 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CHGP0(a) BDK_CSR_TYPE_PCICONFIGRC
23524 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CHGP0(a) "PCIERCX_RAS_EINJ_CTL6CHGP0"
23525 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CHGP0(a) (a)
23526 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CHGP0(a) (a),-1,-1,-1
23527 
23528 /**
23529  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6chgp1
23530  *
23531  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Point H1) Register
23532  */
23533 union bdk_pciercx_ras_einj_ctl6chgp1
23534 {
23535     uint32_t u;
23536     struct bdk_pciercx_ras_einj_ctl6chgp1_s
23537     {
23538 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23539         uint32_t einj6_chg_pt_h1       : 32; /**< [ 31:  0](R/W) Packet change point second DWORD.
23540                                                                  Specifies which TX TLP header DWORD0 bits to replace
23541                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CHGV1[EINJ6_CHG_VAL_H1]. */
23542 #else /* Word 0 - Little Endian */
23543         uint32_t einj6_chg_pt_h1       : 32; /**< [ 31:  0](R/W) Packet change point second DWORD.
23544                                                                  Specifies which TX TLP header DWORD0 bits to replace
23545                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CHGV1[EINJ6_CHG_VAL_H1]. */
23546 #endif /* Word 0 - End */
23547     } s;
23548     /* struct bdk_pciercx_ras_einj_ctl6chgp1_s cn; */
23549 };
23550 typedef union bdk_pciercx_ras_einj_ctl6chgp1 bdk_pciercx_ras_einj_ctl6chgp1_t;
23551 
23552 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGP1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CHGP1(unsigned long a)23553 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGP1(unsigned long a)
23554 {
23555     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23556         return 0x388ll + 0x100000000ll * ((a) & 0x3);
23557     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CHGP1", 1, a, 0, 0, 0);
23558 }
23559 
23560 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CHGP1(a) bdk_pciercx_ras_einj_ctl6chgp1_t
23561 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CHGP1(a) BDK_CSR_TYPE_PCICONFIGRC
23562 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CHGP1(a) "PCIERCX_RAS_EINJ_CTL6CHGP1"
23563 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CHGP1(a) (a)
23564 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CHGP1(a) (a),-1,-1,-1
23565 
23566 /**
23567  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6chgp2
23568  *
23569  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Point H2) Register
23570  */
23571 union bdk_pciercx_ras_einj_ctl6chgp2
23572 {
23573     uint32_t u;
23574     struct bdk_pciercx_ras_einj_ctl6chgp2_s
23575     {
23576 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23577         uint32_t einj6_chg_pt_h2       : 32; /**< [ 31:  0](R/W) Packet change point third DWORD.
23578                                                                  Specifies which TX TLP header DWORD2 bits to replace
23579                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CHGV2[EINJ6_CHG_VAL_H2]. */
23580 #else /* Word 0 - Little Endian */
23581         uint32_t einj6_chg_pt_h2       : 32; /**< [ 31:  0](R/W) Packet change point third DWORD.
23582                                                                  Specifies which TX TLP header DWORD2 bits to replace
23583                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CHGV2[EINJ6_CHG_VAL_H2]. */
23584 #endif /* Word 0 - End */
23585     } s;
23586     /* struct bdk_pciercx_ras_einj_ctl6chgp2_s cn; */
23587 };
23588 typedef union bdk_pciercx_ras_einj_ctl6chgp2 bdk_pciercx_ras_einj_ctl6chgp2_t;
23589 
23590 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGP2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CHGP2(unsigned long a)23591 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGP2(unsigned long a)
23592 {
23593     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23594         return 0x38cll + 0x100000000ll * ((a) & 0x3);
23595     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CHGP2", 1, a, 0, 0, 0);
23596 }
23597 
23598 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CHGP2(a) bdk_pciercx_ras_einj_ctl6chgp2_t
23599 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CHGP2(a) BDK_CSR_TYPE_PCICONFIGRC
23600 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CHGP2(a) "PCIERCX_RAS_EINJ_CTL6CHGP2"
23601 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CHGP2(a) (a)
23602 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CHGP2(a) (a),-1,-1,-1
23603 
23604 /**
23605  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6chgp3
23606  *
23607  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Point H3) Register
23608  */
23609 union bdk_pciercx_ras_einj_ctl6chgp3
23610 {
23611     uint32_t u;
23612     struct bdk_pciercx_ras_einj_ctl6chgp3_s
23613     {
23614 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23615         uint32_t einj6_chg_pt_h3       : 32; /**< [ 31:  0](R/W) Packet change point first DWORD.
23616                                                                  Specifies which TX TLP header DWORD3 bits to replace
23617                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CHGV3[EINJ6_CHG_VAL_H3]. */
23618 #else /* Word 0 - Little Endian */
23619         uint32_t einj6_chg_pt_h3       : 32; /**< [ 31:  0](R/W) Packet change point first DWORD.
23620                                                                  Specifies which TX TLP header DWORD3 bits to replace
23621                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CHGV3[EINJ6_CHG_VAL_H3]. */
23622 #endif /* Word 0 - End */
23623     } s;
23624     /* struct bdk_pciercx_ras_einj_ctl6chgp3_s cn; */
23625 };
23626 typedef union bdk_pciercx_ras_einj_ctl6chgp3 bdk_pciercx_ras_einj_ctl6chgp3_t;
23627 
23628 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGP3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CHGP3(unsigned long a)23629 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGP3(unsigned long a)
23630 {
23631     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23632         return 0x390ll + 0x100000000ll * ((a) & 0x3);
23633     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CHGP3", 1, a, 0, 0, 0);
23634 }
23635 
23636 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CHGP3(a) bdk_pciercx_ras_einj_ctl6chgp3_t
23637 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CHGP3(a) BDK_CSR_TYPE_PCICONFIGRC
23638 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CHGP3(a) "PCIERCX_RAS_EINJ_CTL6CHGP3"
23639 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CHGP3(a) (a)
23640 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CHGP3(a) (a),-1,-1,-1
23641 
23642 /**
23643  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6chgv0
23644  *
23645  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Value H0) Register
23646  */
23647 union bdk_pciercx_ras_einj_ctl6chgv0
23648 {
23649     uint32_t u;
23650     struct bdk_pciercx_ras_einj_ctl6chgv0_s
23651     {
23652 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23653         uint32_t einj6_chg_val_h0      : 32; /**< [ 31:  0](R/W) Packet change value first DWORD.
23654                                                                  Specifies replacement values for the TX TLP header
23655                                                                  DWORD0 bits defined in the PCIERC_RAS_EINJ_CTL6CHGP0[EINJ6_CHG_PT_H0].
23656                                                                  Only applies when PCIERC_RAS_EINJ_CTL6PE[EINJ6_INV_CNTRL] is not set. */
23657 #else /* Word 0 - Little Endian */
23658         uint32_t einj6_chg_val_h0      : 32; /**< [ 31:  0](R/W) Packet change value first DWORD.
23659                                                                  Specifies replacement values for the TX TLP header
23660                                                                  DWORD0 bits defined in the PCIERC_RAS_EINJ_CTL6CHGP0[EINJ6_CHG_PT_H0].
23661                                                                  Only applies when PCIERC_RAS_EINJ_CTL6PE[EINJ6_INV_CNTRL] is not set. */
23662 #endif /* Word 0 - End */
23663     } s;
23664     /* struct bdk_pciercx_ras_einj_ctl6chgv0_s cn; */
23665 };
23666 typedef union bdk_pciercx_ras_einj_ctl6chgv0 bdk_pciercx_ras_einj_ctl6chgv0_t;
23667 
23668 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGV0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CHGV0(unsigned long a)23669 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGV0(unsigned long a)
23670 {
23671     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23672         return 0x394ll + 0x100000000ll * ((a) & 0x3);
23673     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CHGV0", 1, a, 0, 0, 0);
23674 }
23675 
23676 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CHGV0(a) bdk_pciercx_ras_einj_ctl6chgv0_t
23677 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CHGV0(a) BDK_CSR_TYPE_PCICONFIGRC
23678 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CHGV0(a) "PCIERCX_RAS_EINJ_CTL6CHGV0"
23679 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CHGV0(a) (a)
23680 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CHGV0(a) (a),-1,-1,-1
23681 
23682 /**
23683  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6chgv1
23684  *
23685  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Value H1) Register
23686  */
23687 union bdk_pciercx_ras_einj_ctl6chgv1
23688 {
23689     uint32_t u;
23690     struct bdk_pciercx_ras_einj_ctl6chgv1_s
23691     {
23692 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23693         uint32_t einj6_chg_val_h1      : 32; /**< [ 31:  0](R/W) Packet change value second DWORD.
23694                                                                  Specifies replacement values for the TX TLP header
23695                                                                  DWORD1 bits defined in the PCIERC_RAS_EINJ_CTL6CHGP1[EINJ6_CHG_PT_H1].
23696                                                                  Only applies when PCIERC_RAS_EINJ_CTL6PE[EINJ6_INV_CNTRL] is not set. */
23697 #else /* Word 0 - Little Endian */
23698         uint32_t einj6_chg_val_h1      : 32; /**< [ 31:  0](R/W) Packet change value second DWORD.
23699                                                                  Specifies replacement values for the TX TLP header
23700                                                                  DWORD1 bits defined in the PCIERC_RAS_EINJ_CTL6CHGP1[EINJ6_CHG_PT_H1].
23701                                                                  Only applies when PCIERC_RAS_EINJ_CTL6PE[EINJ6_INV_CNTRL] is not set. */
23702 #endif /* Word 0 - End */
23703     } s;
23704     /* struct bdk_pciercx_ras_einj_ctl6chgv1_s cn; */
23705 };
23706 typedef union bdk_pciercx_ras_einj_ctl6chgv1 bdk_pciercx_ras_einj_ctl6chgv1_t;
23707 
23708 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGV1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CHGV1(unsigned long a)23709 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGV1(unsigned long a)
23710 {
23711     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23712         return 0x398ll + 0x100000000ll * ((a) & 0x3);
23713     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CHGV1", 1, a, 0, 0, 0);
23714 }
23715 
23716 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CHGV1(a) bdk_pciercx_ras_einj_ctl6chgv1_t
23717 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CHGV1(a) BDK_CSR_TYPE_PCICONFIGRC
23718 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CHGV1(a) "PCIERCX_RAS_EINJ_CTL6CHGV1"
23719 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CHGV1(a) (a)
23720 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CHGV1(a) (a),-1,-1,-1
23721 
23722 /**
23723  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6chgv2
23724  *
23725  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Value H2) Register
23726  */
23727 union bdk_pciercx_ras_einj_ctl6chgv2
23728 {
23729     uint32_t u;
23730     struct bdk_pciercx_ras_einj_ctl6chgv2_s
23731     {
23732 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23733         uint32_t einj6_chg_val_h2      : 32; /**< [ 31:  0](R/W) Packet change value third DWORD.
23734                                                                  Specifies replacement values for the TX TLP header
23735                                                                  DWORD2 bits defined in the PCIERC_RAS_EINJ_CTL6CHGP2[EINJ6_CHG_PT_H2].
23736                                                                  Only applies when PCIERC_RAS_EINJ_CTL6PE[EINJ6_INV_CNTRL] is not set." */
23737 #else /* Word 0 - Little Endian */
23738         uint32_t einj6_chg_val_h2      : 32; /**< [ 31:  0](R/W) Packet change value third DWORD.
23739                                                                  Specifies replacement values for the TX TLP header
23740                                                                  DWORD2 bits defined in the PCIERC_RAS_EINJ_CTL6CHGP2[EINJ6_CHG_PT_H2].
23741                                                                  Only applies when PCIERC_RAS_EINJ_CTL6PE[EINJ6_INV_CNTRL] is not set." */
23742 #endif /* Word 0 - End */
23743     } s;
23744     /* struct bdk_pciercx_ras_einj_ctl6chgv2_s cn; */
23745 };
23746 typedef union bdk_pciercx_ras_einj_ctl6chgv2 bdk_pciercx_ras_einj_ctl6chgv2_t;
23747 
23748 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGV2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CHGV2(unsigned long a)23749 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGV2(unsigned long a)
23750 {
23751     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23752         return 0x39cll + 0x100000000ll * ((a) & 0x3);
23753     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CHGV2", 1, a, 0, 0, 0);
23754 }
23755 
23756 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CHGV2(a) bdk_pciercx_ras_einj_ctl6chgv2_t
23757 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CHGV2(a) BDK_CSR_TYPE_PCICONFIGRC
23758 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CHGV2(a) "PCIERCX_RAS_EINJ_CTL6CHGV2"
23759 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CHGV2(a) (a)
23760 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CHGV2(a) (a),-1,-1,-1
23761 
23762 /**
23763  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6chgv3
23764  *
23765  * PCIe RC Vendor RAS DES Error Injection Control 6 (Change Value H3) Register
23766  */
23767 union bdk_pciercx_ras_einj_ctl6chgv3
23768 {
23769     uint32_t u;
23770     struct bdk_pciercx_ras_einj_ctl6chgv3_s
23771     {
23772 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23773         uint32_t einj6_chg_val_h3      : 32; /**< [ 31:  0](R/W) Packet change value fourth DWORD.
23774                                                                  Specifies replacement values for the TX TLP header
23775                                                                  DWORD3 bits defined in the PCIERC_RAS_EINJ_CTL6CHGP3[EINJ6_CHG_PT_H3].
23776                                                                  Only applies when PCIERC_RAS_EINJ_CTL6PE[EINJ6_INV_CNTRL] is not set. */
23777 #else /* Word 0 - Little Endian */
23778         uint32_t einj6_chg_val_h3      : 32; /**< [ 31:  0](R/W) Packet change value fourth DWORD.
23779                                                                  Specifies replacement values for the TX TLP header
23780                                                                  DWORD3 bits defined in the PCIERC_RAS_EINJ_CTL6CHGP3[EINJ6_CHG_PT_H3].
23781                                                                  Only applies when PCIERC_RAS_EINJ_CTL6PE[EINJ6_INV_CNTRL] is not set. */
23782 #endif /* Word 0 - End */
23783     } s;
23784     /* struct bdk_pciercx_ras_einj_ctl6chgv3_s cn; */
23785 };
23786 typedef union bdk_pciercx_ras_einj_ctl6chgv3 bdk_pciercx_ras_einj_ctl6chgv3_t;
23787 
23788 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGV3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CHGV3(unsigned long a)23789 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CHGV3(unsigned long a)
23790 {
23791     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23792         return 0x3a0ll + 0x100000000ll * ((a) & 0x3);
23793     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CHGV3", 1, a, 0, 0, 0);
23794 }
23795 
23796 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CHGV3(a) bdk_pciercx_ras_einj_ctl6chgv3_t
23797 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CHGV3(a) BDK_CSR_TYPE_PCICONFIGRC
23798 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CHGV3(a) "PCIERCX_RAS_EINJ_CTL6CHGV3"
23799 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CHGV3(a) (a)
23800 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CHGV3(a) (a),-1,-1,-1
23801 
23802 /**
23803  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6cmpp0
23804  *
23805  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Point H0) Register
23806  */
23807 union bdk_pciercx_ras_einj_ctl6cmpp0
23808 {
23809     uint32_t u;
23810     struct bdk_pciercx_ras_einj_ctl6cmpp0_s
23811     {
23812 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23813         uint32_t einj6_com_pt_h0       : 32; /**< [ 31:  0](R/W) Packet compare point first DWORD.
23814                                                                  Specifies which TX TLP header DWORD0 bits to compare
23815                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CMPV0[EINJ6_COM_VAL_H0].
23816                                                                  When all specified bits (in the TX TLP header and
23817                                                                  PCIERC_RAS_EINJ_CTL6CMPV0[EINJ6_COM_VAL_H0] match, an error is inserted into the TLP. */
23818 #else /* Word 0 - Little Endian */
23819         uint32_t einj6_com_pt_h0       : 32; /**< [ 31:  0](R/W) Packet compare point first DWORD.
23820                                                                  Specifies which TX TLP header DWORD0 bits to compare
23821                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CMPV0[EINJ6_COM_VAL_H0].
23822                                                                  When all specified bits (in the TX TLP header and
23823                                                                  PCIERC_RAS_EINJ_CTL6CMPV0[EINJ6_COM_VAL_H0] match, an error is inserted into the TLP. */
23824 #endif /* Word 0 - End */
23825     } s;
23826     /* struct bdk_pciercx_ras_einj_ctl6cmpp0_s cn; */
23827 };
23828 typedef union bdk_pciercx_ras_einj_ctl6cmpp0 bdk_pciercx_ras_einj_ctl6cmpp0_t;
23829 
23830 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPP0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CMPP0(unsigned long a)23831 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPP0(unsigned long a)
23832 {
23833     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23834         return 0x364ll + 0x100000000ll * ((a) & 0x3);
23835     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CMPP0", 1, a, 0, 0, 0);
23836 }
23837 
23838 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CMPP0(a) bdk_pciercx_ras_einj_ctl6cmpp0_t
23839 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CMPP0(a) BDK_CSR_TYPE_PCICONFIGRC
23840 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CMPP0(a) "PCIERCX_RAS_EINJ_CTL6CMPP0"
23841 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CMPP0(a) (a)
23842 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CMPP0(a) (a),-1,-1,-1
23843 
23844 /**
23845  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6cmpp1
23846  *
23847  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Point H1) Register
23848  */
23849 union bdk_pciercx_ras_einj_ctl6cmpp1
23850 {
23851     uint32_t u;
23852     struct bdk_pciercx_ras_einj_ctl6cmpp1_s
23853     {
23854 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23855         uint32_t einj6_com_pt_h1       : 32; /**< [ 31:  0](R/W) Packet compare point second DWORD.
23856                                                                  Specifies which TX TLP header DWORD1 bits to compare
23857                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CMPV1[EINJ6_COM_VAL_H1].
23858                                                                  When all specified bits (in the TX TLP header and
23859                                                                  PCIERC_RAS_EINJ_CTL6CMPV1[EINJ6_COM_VAL_H1] match, an error is inserted into the TLP. */
23860 #else /* Word 0 - Little Endian */
23861         uint32_t einj6_com_pt_h1       : 32; /**< [ 31:  0](R/W) Packet compare point second DWORD.
23862                                                                  Specifies which TX TLP header DWORD1 bits to compare
23863                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CMPV1[EINJ6_COM_VAL_H1].
23864                                                                  When all specified bits (in the TX TLP header and
23865                                                                  PCIERC_RAS_EINJ_CTL6CMPV1[EINJ6_COM_VAL_H1] match, an error is inserted into the TLP. */
23866 #endif /* Word 0 - End */
23867     } s;
23868     /* struct bdk_pciercx_ras_einj_ctl6cmpp1_s cn; */
23869 };
23870 typedef union bdk_pciercx_ras_einj_ctl6cmpp1 bdk_pciercx_ras_einj_ctl6cmpp1_t;
23871 
23872 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPP1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CMPP1(unsigned long a)23873 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPP1(unsigned long a)
23874 {
23875     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23876         return 0x368ll + 0x100000000ll * ((a) & 0x3);
23877     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CMPP1", 1, a, 0, 0, 0);
23878 }
23879 
23880 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CMPP1(a) bdk_pciercx_ras_einj_ctl6cmpp1_t
23881 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CMPP1(a) BDK_CSR_TYPE_PCICONFIGRC
23882 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CMPP1(a) "PCIERCX_RAS_EINJ_CTL6CMPP1"
23883 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CMPP1(a) (a)
23884 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CMPP1(a) (a),-1,-1,-1
23885 
23886 /**
23887  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6cmpp2
23888  *
23889  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Point H2) Register
23890  */
23891 union bdk_pciercx_ras_einj_ctl6cmpp2
23892 {
23893     uint32_t u;
23894     struct bdk_pciercx_ras_einj_ctl6cmpp2_s
23895     {
23896 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23897         uint32_t einj6_com_pt_h2       : 32; /**< [ 31:  0](R/W) Packet compare point third DWORD.
23898                                                                  Specifies which TX TLP header DWORD2 bits to compare
23899                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CMPV2[EINJ6_COM_VAL_H2].
23900                                                                  When all specified bits (in the TX TLP header and
23901                                                                  PCIERC_RAS_EINJ_CTL6CMPV2[EINJ6_COM_VAL_H2] match, an error is inserted into the TLP. */
23902 #else /* Word 0 - Little Endian */
23903         uint32_t einj6_com_pt_h2       : 32; /**< [ 31:  0](R/W) Packet compare point third DWORD.
23904                                                                  Specifies which TX TLP header DWORD2 bits to compare
23905                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CMPV2[EINJ6_COM_VAL_H2].
23906                                                                  When all specified bits (in the TX TLP header and
23907                                                                  PCIERC_RAS_EINJ_CTL6CMPV2[EINJ6_COM_VAL_H2] match, an error is inserted into the TLP. */
23908 #endif /* Word 0 - End */
23909     } s;
23910     /* struct bdk_pciercx_ras_einj_ctl6cmpp2_s cn; */
23911 };
23912 typedef union bdk_pciercx_ras_einj_ctl6cmpp2 bdk_pciercx_ras_einj_ctl6cmpp2_t;
23913 
23914 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPP2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CMPP2(unsigned long a)23915 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPP2(unsigned long a)
23916 {
23917     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23918         return 0x36cll + 0x100000000ll * ((a) & 0x3);
23919     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CMPP2", 1, a, 0, 0, 0);
23920 }
23921 
23922 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CMPP2(a) bdk_pciercx_ras_einj_ctl6cmpp2_t
23923 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CMPP2(a) BDK_CSR_TYPE_PCICONFIGRC
23924 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CMPP2(a) "PCIERCX_RAS_EINJ_CTL6CMPP2"
23925 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CMPP2(a) (a)
23926 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CMPP2(a) (a),-1,-1,-1
23927 
23928 /**
23929  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6cmpp3
23930  *
23931  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Point H3) Register
23932  */
23933 union bdk_pciercx_ras_einj_ctl6cmpp3
23934 {
23935     uint32_t u;
23936     struct bdk_pciercx_ras_einj_ctl6cmpp3_s
23937     {
23938 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23939         uint32_t einj6_com_pt_h3       : 32; /**< [ 31:  0](R/W) Packet compare point fourth DWORD.
23940                                                                  Specifies which TX TLP header DWORD3 bits to compare
23941                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CMPV3[EINJ6_COM_VAL_H3].
23942                                                                  When all specified bits (in the TX TLP header and
23943                                                                  PCIERC_RAS_EINJ_CTL6CMPV3[EINJ6_COM_VAL_H3] match, an error is inserted into the TLP. */
23944 #else /* Word 0 - Little Endian */
23945         uint32_t einj6_com_pt_h3       : 32; /**< [ 31:  0](R/W) Packet compare point fourth DWORD.
23946                                                                  Specifies which TX TLP header DWORD3 bits to compare
23947                                                                  with the corresponding bits in PCIERC_RAS_EINJ_CTL6CMPV3[EINJ6_COM_VAL_H3].
23948                                                                  When all specified bits (in the TX TLP header and
23949                                                                  PCIERC_RAS_EINJ_CTL6CMPV3[EINJ6_COM_VAL_H3] match, an error is inserted into the TLP. */
23950 #endif /* Word 0 - End */
23951     } s;
23952     /* struct bdk_pciercx_ras_einj_ctl6cmpp3_s cn; */
23953 };
23954 typedef union bdk_pciercx_ras_einj_ctl6cmpp3 bdk_pciercx_ras_einj_ctl6cmpp3_t;
23955 
23956 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPP3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CMPP3(unsigned long a)23957 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPP3(unsigned long a)
23958 {
23959     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23960         return 0x370ll + 0x100000000ll * ((a) & 0x3);
23961     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CMPP3", 1, a, 0, 0, 0);
23962 }
23963 
23964 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CMPP3(a) bdk_pciercx_ras_einj_ctl6cmpp3_t
23965 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CMPP3(a) BDK_CSR_TYPE_PCICONFIGRC
23966 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CMPP3(a) "PCIERCX_RAS_EINJ_CTL6CMPP3"
23967 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CMPP3(a) (a)
23968 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CMPP3(a) (a),-1,-1,-1
23969 
23970 /**
23971  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6cmpv0
23972  *
23973  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Value H0) Register
23974  */
23975 union bdk_pciercx_ras_einj_ctl6cmpv0
23976 {
23977     uint32_t u;
23978     struct bdk_pciercx_ras_einj_ctl6cmpv0_s
23979     {
23980 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
23981         uint32_t einj6_com_val_h0      : 32; /**< [ 31:  0](R/W) Packet compare value first DWORD.
23982                                                                  Specifies the value to compare against TX the TLP header
23983                                                                  DWORD0 bits specified in PCIERC_RAS_EINJ_CTL6CMPP0[EINJ6_COM_PT_H0]. */
23984 #else /* Word 0 - Little Endian */
23985         uint32_t einj6_com_val_h0      : 32; /**< [ 31:  0](R/W) Packet compare value first DWORD.
23986                                                                  Specifies the value to compare against TX the TLP header
23987                                                                  DWORD0 bits specified in PCIERC_RAS_EINJ_CTL6CMPP0[EINJ6_COM_PT_H0]. */
23988 #endif /* Word 0 - End */
23989     } s;
23990     /* struct bdk_pciercx_ras_einj_ctl6cmpv0_s cn; */
23991 };
23992 typedef union bdk_pciercx_ras_einj_ctl6cmpv0 bdk_pciercx_ras_einj_ctl6cmpv0_t;
23993 
23994 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPV0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CMPV0(unsigned long a)23995 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPV0(unsigned long a)
23996 {
23997     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
23998         return 0x374ll + 0x100000000ll * ((a) & 0x3);
23999     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CMPV0", 1, a, 0, 0, 0);
24000 }
24001 
24002 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CMPV0(a) bdk_pciercx_ras_einj_ctl6cmpv0_t
24003 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CMPV0(a) BDK_CSR_TYPE_PCICONFIGRC
24004 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CMPV0(a) "PCIERCX_RAS_EINJ_CTL6CMPV0"
24005 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CMPV0(a) (a)
24006 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CMPV0(a) (a),-1,-1,-1
24007 
24008 /**
24009  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6cmpv1
24010  *
24011  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Value H1) Register
24012  */
24013 union bdk_pciercx_ras_einj_ctl6cmpv1
24014 {
24015     uint32_t u;
24016     struct bdk_pciercx_ras_einj_ctl6cmpv1_s
24017     {
24018 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24019         uint32_t einj6_com_val_h1      : 32; /**< [ 31:  0](R/W) Packet compare value second DWORD.
24020                                                                  Specifies the value to compare against TX the TLP header
24021                                                                  DWORD1 bits specified in PCIERC_RAS_EINJ_CTL6CMPP1[EINJ6_COM_PT_H1]. */
24022 #else /* Word 0 - Little Endian */
24023         uint32_t einj6_com_val_h1      : 32; /**< [ 31:  0](R/W) Packet compare value second DWORD.
24024                                                                  Specifies the value to compare against TX the TLP header
24025                                                                  DWORD1 bits specified in PCIERC_RAS_EINJ_CTL6CMPP1[EINJ6_COM_PT_H1]. */
24026 #endif /* Word 0 - End */
24027     } s;
24028     /* struct bdk_pciercx_ras_einj_ctl6cmpv1_s cn; */
24029 };
24030 typedef union bdk_pciercx_ras_einj_ctl6cmpv1 bdk_pciercx_ras_einj_ctl6cmpv1_t;
24031 
24032 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPV1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CMPV1(unsigned long a)24033 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPV1(unsigned long a)
24034 {
24035     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24036         return 0x378ll + 0x100000000ll * ((a) & 0x3);
24037     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CMPV1", 1, a, 0, 0, 0);
24038 }
24039 
24040 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CMPV1(a) bdk_pciercx_ras_einj_ctl6cmpv1_t
24041 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CMPV1(a) BDK_CSR_TYPE_PCICONFIGRC
24042 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CMPV1(a) "PCIERCX_RAS_EINJ_CTL6CMPV1"
24043 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CMPV1(a) (a)
24044 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CMPV1(a) (a),-1,-1,-1
24045 
24046 /**
24047  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6cmpv2
24048  *
24049  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Value H2) Register
24050  */
24051 union bdk_pciercx_ras_einj_ctl6cmpv2
24052 {
24053     uint32_t u;
24054     struct bdk_pciercx_ras_einj_ctl6cmpv2_s
24055     {
24056 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24057         uint32_t einj6_com_val_h2      : 32; /**< [ 31:  0](R/W) Packet compare value third DWORD.
24058                                                                  Specifies the value to compare against TX the TLP header
24059                                                                  DWORD2 bits specified in the PCIERC_RAS_EINJ_CTL6CMPP2[EINJ6_COM_PT_H2]. */
24060 #else /* Word 0 - Little Endian */
24061         uint32_t einj6_com_val_h2      : 32; /**< [ 31:  0](R/W) Packet compare value third DWORD.
24062                                                                  Specifies the value to compare against TX the TLP header
24063                                                                  DWORD2 bits specified in the PCIERC_RAS_EINJ_CTL6CMPP2[EINJ6_COM_PT_H2]. */
24064 #endif /* Word 0 - End */
24065     } s;
24066     /* struct bdk_pciercx_ras_einj_ctl6cmpv2_s cn; */
24067 };
24068 typedef union bdk_pciercx_ras_einj_ctl6cmpv2 bdk_pciercx_ras_einj_ctl6cmpv2_t;
24069 
24070 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPV2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CMPV2(unsigned long a)24071 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPV2(unsigned long a)
24072 {
24073     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24074         return 0x37cll + 0x100000000ll * ((a) & 0x3);
24075     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CMPV2", 1, a, 0, 0, 0);
24076 }
24077 
24078 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CMPV2(a) bdk_pciercx_ras_einj_ctl6cmpv2_t
24079 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CMPV2(a) BDK_CSR_TYPE_PCICONFIGRC
24080 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CMPV2(a) "PCIERCX_RAS_EINJ_CTL6CMPV2"
24081 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CMPV2(a) (a)
24082 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CMPV2(a) (a),-1,-1,-1
24083 
24084 /**
24085  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6cmpv3
24086  *
24087  * PCIe RC Vendor RAS DES Error Injection Control 6 (Compare Value H3) Register
24088  */
24089 union bdk_pciercx_ras_einj_ctl6cmpv3
24090 {
24091     uint32_t u;
24092     struct bdk_pciercx_ras_einj_ctl6cmpv3_s
24093     {
24094 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24095         uint32_t einj6_com_val_h3      : 32; /**< [ 31:  0](R/W) Packet compare value fourth DWORD.
24096                                                                  Specifies the value to compare against TX the TLP header
24097                                                                  DWORD3 bits specified in the PCIERC_RAS_EINJ_CTL6CMPP3[EINJ6_COM_PT_H3]. */
24098 #else /* Word 0 - Little Endian */
24099         uint32_t einj6_com_val_h3      : 32; /**< [ 31:  0](R/W) Packet compare value fourth DWORD.
24100                                                                  Specifies the value to compare against TX the TLP header
24101                                                                  DWORD3 bits specified in the PCIERC_RAS_EINJ_CTL6CMPP3[EINJ6_COM_PT_H3]. */
24102 #endif /* Word 0 - End */
24103     } s;
24104     /* struct bdk_pciercx_ras_einj_ctl6cmpv3_s cn; */
24105 };
24106 typedef union bdk_pciercx_ras_einj_ctl6cmpv3 bdk_pciercx_ras_einj_ctl6cmpv3_t;
24107 
24108 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPV3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6CMPV3(unsigned long a)24109 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6CMPV3(unsigned long a)
24110 {
24111     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24112         return 0x380ll + 0x100000000ll * ((a) & 0x3);
24113     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6CMPV3", 1, a, 0, 0, 0);
24114 }
24115 
24116 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6CMPV3(a) bdk_pciercx_ras_einj_ctl6cmpv3_t
24117 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6CMPV3(a) BDK_CSR_TYPE_PCICONFIGRC
24118 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6CMPV3(a) "PCIERCX_RAS_EINJ_CTL6CMPV3"
24119 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6CMPV3(a) (a)
24120 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6CMPV3(a) (a),-1,-1,-1
24121 
24122 /**
24123  * Register (PCICONFIGRC) pcierc#_ras_einj_ctl6pe
24124  *
24125  * PCIe RC Vendor RAS DES Error Injection Control 6 (Packet Error) Register
24126  */
24127 union bdk_pciercx_ras_einj_ctl6pe
24128 {
24129     uint32_t u;
24130     struct bdk_pciercx_ras_einj_ctl6pe_s
24131     {
24132 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24133         uint32_t reserved_12_31        : 20;
24134         uint32_t einj6_pkt_typ         : 3;  /**< [ 11:  9](R/W) Packet type.  Selects the TLP packets to inject errors into.
24135 
24136                                                                  0x0 = TLP header.
24137                                                                  0x1 = TLP prefix 1st 4-DWORDs.
24138                                                                  0x2 = TLP prefix 2nd 4-DWORDs.
24139                                                                  0x3 - 0x7 = Reserved. */
24140         uint32_t einj6_inv_cntrl       : 1;  /**< [  8:  8](R/W) Inverted error injection control.
24141 
24142                                                                  0x0 = EINJ6_CHG_VAL_H[0/1/2/3] is used to replace bits specified by
24143                                                                  EINJ6_CHG_PT_H[0/1/2/3].
24144                                                                  0x1 = EINJ6_CHG_VAL_H[0/1/2/3] is ignored and inverts bits specified by
24145                                                                  EINJ6_CHG_PT_H[0/1/2/3]. */
24146         uint32_t einj6_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
24147                                                                  This register is decremented when errors are inserted.
24148 
24149                                                                  If the counter value is 0x1 and error is inserted,
24150                                                                  PCIERC_RAS_EINJ_EN[EINJ6_EN] returns zero.
24151 
24152                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ6_EN] is set,
24153                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ6_EN] is cleared. */
24154 #else /* Word 0 - Little Endian */
24155         uint32_t einj6_cnt             : 8;  /**< [  7:  0](R/W) Error injection count.  Indicates the number of errors.
24156                                                                  This register is decremented when errors are inserted.
24157 
24158                                                                  If the counter value is 0x1 and error is inserted,
24159                                                                  PCIERC_RAS_EINJ_EN[EINJ6_EN] returns zero.
24160 
24161                                                                  If the counter value is 0x0 and PCIERC_RAS_EINJ_EN[EINJ6_EN] is set,
24162                                                                  errors are inserted until PCIERC_RAS_EINJ_EN[EINJ6_EN] is cleared. */
24163         uint32_t einj6_inv_cntrl       : 1;  /**< [  8:  8](R/W) Inverted error injection control.
24164 
24165                                                                  0x0 = EINJ6_CHG_VAL_H[0/1/2/3] is used to replace bits specified by
24166                                                                  EINJ6_CHG_PT_H[0/1/2/3].
24167                                                                  0x1 = EINJ6_CHG_VAL_H[0/1/2/3] is ignored and inverts bits specified by
24168                                                                  EINJ6_CHG_PT_H[0/1/2/3]. */
24169         uint32_t einj6_pkt_typ         : 3;  /**< [ 11:  9](R/W) Packet type.  Selects the TLP packets to inject errors into.
24170 
24171                                                                  0x0 = TLP header.
24172                                                                  0x1 = TLP prefix 1st 4-DWORDs.
24173                                                                  0x2 = TLP prefix 2nd 4-DWORDs.
24174                                                                  0x3 - 0x7 = Reserved. */
24175         uint32_t reserved_12_31        : 20;
24176 #endif /* Word 0 - End */
24177     } s;
24178     /* struct bdk_pciercx_ras_einj_ctl6pe_s cn; */
24179 };
24180 typedef union bdk_pciercx_ras_einj_ctl6pe bdk_pciercx_ras_einj_ctl6pe_t;
24181 
24182 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6PE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_CTL6PE(unsigned long a)24183 static inline uint64_t BDK_PCIERCX_RAS_EINJ_CTL6PE(unsigned long a)
24184 {
24185     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24186         return 0x3a4ll + 0x100000000ll * ((a) & 0x3);
24187     __bdk_csr_fatal("PCIERCX_RAS_EINJ_CTL6PE", 1, a, 0, 0, 0);
24188 }
24189 
24190 #define typedef_BDK_PCIERCX_RAS_EINJ_CTL6PE(a) bdk_pciercx_ras_einj_ctl6pe_t
24191 #define bustype_BDK_PCIERCX_RAS_EINJ_CTL6PE(a) BDK_CSR_TYPE_PCICONFIGRC
24192 #define basename_BDK_PCIERCX_RAS_EINJ_CTL6PE(a) "PCIERCX_RAS_EINJ_CTL6PE"
24193 #define busnum_BDK_PCIERCX_RAS_EINJ_CTL6PE(a) (a)
24194 #define arguments_BDK_PCIERCX_RAS_EINJ_CTL6PE(a) (a),-1,-1,-1
24195 
24196 /**
24197  * Register (PCICONFIGRC) pcierc#_ras_einj_en
24198  *
24199  * PCIe RC Vendor RAS DES Error Injection Enable Register
24200  */
24201 union bdk_pciercx_ras_einj_en
24202 {
24203     uint32_t u;
24204     struct bdk_pciercx_ras_einj_en_s
24205     {
24206 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24207         uint32_t reserved_7_31         : 25;
24208         uint32_t einj6_en              : 1;  /**< [  6:  6](R/W) Specific TLP error injection enable.  Enables insertion of errors into the
24209                                                                  packet selected.  For more details, refer to PCIERC_RAS_EINJ_CTL6CMPP0. */
24210         uint32_t einj5_en              : 1;  /**< [  5:  5](R/W) TLP duplicate/nullify error injection enable.  Enables insertion of duplicate/nullified
24211                                                                  TLPs.  For more details, refer to PCIERC_RAS_EINJ_CTL5. */
24212         uint32_t einj4_en              : 1;  /**< [  4:  4](R/W) FC credit update error injection enable.  Enables insertion of errors into
24213                                                                  Updated FCs. See PCIERC_RAS_EINJ_CTL4. */
24214         uint32_t einj3_en              : 1;  /**< [  3:  3](R/W) Symbol datak mask or sync header error enable.  Enables data masking of special
24215                                                                  symbols or the breaking of the sync header.  See PCIERC_RAS_EINJ_CTL3. */
24216         uint32_t einj2_en              : 1;  /**< [  2:  2](R/W) DLLP error injection enable.  enables insertion of DLLP errors.
24217                                                                  See PCIERC_RAS_EINJ_CTL2. */
24218         uint32_t einj1_en              : 1;  /**< [  1:  1](R/W) Sequence number error injection enable.  Enables insertion of errors into
24219                                                                  sequence numbers.
24220                                                                  See PCIERC_RAS_EINJ_CTL1. */
24221         uint32_t einj0_en              : 1;  /**< [  0:  0](R/W) CRC error injection enable.  Enables insertion of errors into various CRC.
24222                                                                  See PCIERC_RAS_EINJ_CTL0. */
24223 #else /* Word 0 - Little Endian */
24224         uint32_t einj0_en              : 1;  /**< [  0:  0](R/W) CRC error injection enable.  Enables insertion of errors into various CRC.
24225                                                                  See PCIERC_RAS_EINJ_CTL0. */
24226         uint32_t einj1_en              : 1;  /**< [  1:  1](R/W) Sequence number error injection enable.  Enables insertion of errors into
24227                                                                  sequence numbers.
24228                                                                  See PCIERC_RAS_EINJ_CTL1. */
24229         uint32_t einj2_en              : 1;  /**< [  2:  2](R/W) DLLP error injection enable.  enables insertion of DLLP errors.
24230                                                                  See PCIERC_RAS_EINJ_CTL2. */
24231         uint32_t einj3_en              : 1;  /**< [  3:  3](R/W) Symbol datak mask or sync header error enable.  Enables data masking of special
24232                                                                  symbols or the breaking of the sync header.  See PCIERC_RAS_EINJ_CTL3. */
24233         uint32_t einj4_en              : 1;  /**< [  4:  4](R/W) FC credit update error injection enable.  Enables insertion of errors into
24234                                                                  Updated FCs. See PCIERC_RAS_EINJ_CTL4. */
24235         uint32_t einj5_en              : 1;  /**< [  5:  5](R/W) TLP duplicate/nullify error injection enable.  Enables insertion of duplicate/nullified
24236                                                                  TLPs.  For more details, refer to PCIERC_RAS_EINJ_CTL5. */
24237         uint32_t einj6_en              : 1;  /**< [  6:  6](R/W) Specific TLP error injection enable.  Enables insertion of errors into the
24238                                                                  packet selected.  For more details, refer to PCIERC_RAS_EINJ_CTL6CMPP0. */
24239         uint32_t reserved_7_31         : 25;
24240 #endif /* Word 0 - End */
24241     } s;
24242     /* struct bdk_pciercx_ras_einj_en_s cn; */
24243 };
24244 typedef union bdk_pciercx_ras_einj_en bdk_pciercx_ras_einj_en_t;
24245 
24246 static inline uint64_t BDK_PCIERCX_RAS_EINJ_EN(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_EINJ_EN(unsigned long a)24247 static inline uint64_t BDK_PCIERCX_RAS_EINJ_EN(unsigned long a)
24248 {
24249     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24250         return 0x348ll + 0x100000000ll * ((a) & 0x3);
24251     __bdk_csr_fatal("PCIERCX_RAS_EINJ_EN", 1, a, 0, 0, 0);
24252 }
24253 
24254 #define typedef_BDK_PCIERCX_RAS_EINJ_EN(a) bdk_pciercx_ras_einj_en_t
24255 #define bustype_BDK_PCIERCX_RAS_EINJ_EN(a) BDK_CSR_TYPE_PCICONFIGRC
24256 #define basename_BDK_PCIERCX_RAS_EINJ_EN(a) "PCIERCX_RAS_EINJ_EN"
24257 #define busnum_BDK_PCIERCX_RAS_EINJ_EN(a) (a)
24258 #define arguments_BDK_PCIERCX_RAS_EINJ_EN(a) (a),-1,-1,-1
24259 
24260 /**
24261  * Register (PCICONFIGRC) pcierc#_ras_hdr
24262  *
24263  * PCIe RC Vendor RAS DES Header Register
24264  */
24265 union bdk_pciercx_ras_hdr
24266 {
24267     uint32_t u;
24268     struct bdk_pciercx_ras_hdr_s
24269     {
24270 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24271         uint32_t vsec_length           : 12; /**< [ 31: 20](RO) VSEC length. */
24272         uint32_t vsec_rev              : 4;  /**< [ 19: 16](RO) Capability version. */
24273         uint32_t vsec_id               : 16; /**< [ 15:  0](RO) VSEC ID. */
24274 #else /* Word 0 - Little Endian */
24275         uint32_t vsec_id               : 16; /**< [ 15:  0](RO) VSEC ID. */
24276         uint32_t vsec_rev              : 4;  /**< [ 19: 16](RO) Capability version. */
24277         uint32_t vsec_length           : 12; /**< [ 31: 20](RO) VSEC length. */
24278 #endif /* Word 0 - End */
24279     } s;
24280     /* struct bdk_pciercx_ras_hdr_s cn; */
24281 };
24282 typedef union bdk_pciercx_ras_hdr bdk_pciercx_ras_hdr_t;
24283 
24284 static inline uint64_t BDK_PCIERCX_RAS_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_HDR(unsigned long a)24285 static inline uint64_t BDK_PCIERCX_RAS_HDR(unsigned long a)
24286 {
24287     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24288         return 0x31cll + 0x100000000ll * ((a) & 0x3);
24289     __bdk_csr_fatal("PCIERCX_RAS_HDR", 1, a, 0, 0, 0);
24290 }
24291 
24292 #define typedef_BDK_PCIERCX_RAS_HDR(a) bdk_pciercx_ras_hdr_t
24293 #define bustype_BDK_PCIERCX_RAS_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
24294 #define basename_BDK_PCIERCX_RAS_HDR(a) "PCIERCX_RAS_HDR"
24295 #define busnum_BDK_PCIERCX_RAS_HDR(a) (a)
24296 #define arguments_BDK_PCIERCX_RAS_HDR(a) (a),-1,-1,-1
24297 
24298 /**
24299  * Register (PCICONFIGRC) pcierc#_ras_sd_ctl1
24300  *
24301  * PCIe RC Vendor RAS DES Silicon Debug Control 1 Register
24302  */
24303 union bdk_pciercx_ras_sd_ctl1
24304 {
24305     uint32_t u;
24306     struct bdk_pciercx_ras_sd_ctl1_s
24307     {
24308 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24309         uint32_t reserved_24_31        : 8;
24310         uint32_t lp_intv               : 2;  /**< [ 23: 22](R/W) Low power entry interval time.
24311                                                                  Interval time that the core starts monitoring RXELECIDLE
24312                                                                  signal after L0s/L1/L2 entry. You should set the value
24313                                                                  according to the latency from receiving EIOS to,
24314                                                                  RXELECIDLE assertion at the PHY
24315 
24316                                                                  0x0 = 40ns.
24317                                                                  0x1 = 160ns.
24318                                                                  0x2 = 320ns.
24319                                                                  0x3 - 640ns. */
24320         uint32_t tx_eios_num           : 2;  /**< [ 21: 20](R/W) Number of TX EIOS.
24321                                                                  This register sets the number of transmit EIOS for L0s/L1
24322                                                                  entry and disable/loopback/hot-reset exit. The core selects
24323                                                                  the greater value between this register and the value defined
24324                                                                  by the PCI-SIG specification.
24325 
24326                                                                  Gen1 or Gen3
24327                                                                  0x0 = 1.
24328                                                                  0x1 = 4.
24329                                                                  0x2 = 8.
24330                                                                  0x3 - 16.
24331 
24332                                                                  Gen2
24333                                                                  0x0 = 2.
24334                                                                  0x1 = 8.
24335                                                                  0x2 = 16.
24336                                                                  0x3 - 32. */
24337         uint32_t reserved_17_19        : 3;
24338         uint32_t force_detect_lane_en  : 1;  /**< [ 16: 16](R/W) Force detect lane enable.
24339                                                                  When this bit is set, the core ignores receiver detection from
24340                                                                  PHY during LTSSM detect state and uses
24341                                                                  [FORCE_DETECT_LANE]. */
24342         uint32_t force_detect_lane     : 16; /**< [ 15:  0](R/W) Force detect lane.
24343                                                                  When set, the core
24344                                                                  ignores receiver detection from PHY during LTSSM detect
24345                                                                  state and uses this value instead.
24346                                                                  0x0 = Lane0.
24347                                                                  0x1 = Lane1.
24348                                                                  0x2 = Lane2.
24349 
24350                                                                  0x7 = Lane7. */
24351 #else /* Word 0 - Little Endian */
24352         uint32_t force_detect_lane     : 16; /**< [ 15:  0](R/W) Force detect lane.
24353                                                                  When set, the core
24354                                                                  ignores receiver detection from PHY during LTSSM detect
24355                                                                  state and uses this value instead.
24356                                                                  0x0 = Lane0.
24357                                                                  0x1 = Lane1.
24358                                                                  0x2 = Lane2.
24359 
24360                                                                  0x7 = Lane7. */
24361         uint32_t force_detect_lane_en  : 1;  /**< [ 16: 16](R/W) Force detect lane enable.
24362                                                                  When this bit is set, the core ignores receiver detection from
24363                                                                  PHY during LTSSM detect state and uses
24364                                                                  [FORCE_DETECT_LANE]. */
24365         uint32_t reserved_17_19        : 3;
24366         uint32_t tx_eios_num           : 2;  /**< [ 21: 20](R/W) Number of TX EIOS.
24367                                                                  This register sets the number of transmit EIOS for L0s/L1
24368                                                                  entry and disable/loopback/hot-reset exit. The core selects
24369                                                                  the greater value between this register and the value defined
24370                                                                  by the PCI-SIG specification.
24371 
24372                                                                  Gen1 or Gen3
24373                                                                  0x0 = 1.
24374                                                                  0x1 = 4.
24375                                                                  0x2 = 8.
24376                                                                  0x3 - 16.
24377 
24378                                                                  Gen2
24379                                                                  0x0 = 2.
24380                                                                  0x1 = 8.
24381                                                                  0x2 = 16.
24382                                                                  0x3 - 32. */
24383         uint32_t lp_intv               : 2;  /**< [ 23: 22](R/W) Low power entry interval time.
24384                                                                  Interval time that the core starts monitoring RXELECIDLE
24385                                                                  signal after L0s/L1/L2 entry. You should set the value
24386                                                                  according to the latency from receiving EIOS to,
24387                                                                  RXELECIDLE assertion at the PHY
24388 
24389                                                                  0x0 = 40ns.
24390                                                                  0x1 = 160ns.
24391                                                                  0x2 = 320ns.
24392                                                                  0x3 - 640ns. */
24393         uint32_t reserved_24_31        : 8;
24394 #endif /* Word 0 - End */
24395     } s;
24396     /* struct bdk_pciercx_ras_sd_ctl1_s cn; */
24397 };
24398 typedef union bdk_pciercx_ras_sd_ctl1 bdk_pciercx_ras_sd_ctl1_t;
24399 
24400 static inline uint64_t BDK_PCIERCX_RAS_SD_CTL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_CTL1(unsigned long a)24401 static inline uint64_t BDK_PCIERCX_RAS_SD_CTL1(unsigned long a)
24402 {
24403     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24404         return 0x3b8ll + 0x100000000ll * ((a) & 0x3);
24405     __bdk_csr_fatal("PCIERCX_RAS_SD_CTL1", 1, a, 0, 0, 0);
24406 }
24407 
24408 #define typedef_BDK_PCIERCX_RAS_SD_CTL1(a) bdk_pciercx_ras_sd_ctl1_t
24409 #define bustype_BDK_PCIERCX_RAS_SD_CTL1(a) BDK_CSR_TYPE_PCICONFIGRC
24410 #define basename_BDK_PCIERCX_RAS_SD_CTL1(a) "PCIERCX_RAS_SD_CTL1"
24411 #define busnum_BDK_PCIERCX_RAS_SD_CTL1(a) (a)
24412 #define arguments_BDK_PCIERCX_RAS_SD_CTL1(a) (a),-1,-1,-1
24413 
24414 /**
24415  * Register (PCICONFIGRC) pcierc#_ras_sd_ctl2
24416  *
24417  * PCIe RC Vendor RAS DES Silicon Debug Control 2 Register
24418  */
24419 union bdk_pciercx_ras_sd_ctl2
24420 {
24421     uint32_t u;
24422     struct bdk_pciercx_ras_sd_ctl2_s
24423     {
24424 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24425         uint32_t reserved_17_31        : 15;
24426         uint32_t fr_err_rcvy_dis       : 1;  /**< [ 16: 16](R/W) Framing error recovery disable.
24427                                                                  This bit disables a transition to recovery state when a framing
24428                                                                  error has occurred. */
24429         uint32_t reserved_11_15        : 5;
24430         uint32_t dir_lpbslv_to_exit    : 1;  /**< [ 10: 10](R/W) Direct loopback slave to exit.
24431                                                                  When set and the LTSSM is in loopback slave active state,
24432                                                                  the LTSSM transitions to the loopback slave exit state. */
24433         uint32_t dir_polcmp_to_det     : 1;  /**< [  9:  9](R/W) Direct Polling.Compliance to detect.
24434                                                                  When this bit is set and the LTSSM is in polling compliance
24435                                                                  state, the LTSSM transitions to detect state. */
24436         uint32_t dir_recidle_config    : 1;  /**< [  8:  8](R/W) Direct Recovery.Idle to configuration.
24437                                                                  When this bit is set and the LTSSM is in recovery idle state,
24438                                                                  the LTSSM transitions to configuration state. */
24439         uint32_t reserved_3_7          : 5;
24440         uint32_t noack_force_lnkdn     : 1;  /**< [  2:  2](R/W) Force link down.
24441                                                                  When this bit is set and the core detects REPLY_NUM rolling
24442                                                                  over 4 times, the LTSSM transitions to detect state. */
24443         uint32_t rcry_req              : 1;  /**< [  1:  1](WO) Recovery request.
24444                                                                  When this bit is set in L0 or L0s, the LTSSM starts
24445                                                                  transitioning to recovery state. This request does not cause
24446                                                                  a speed change or reequalization. This bit always reads
24447                                                                  a zero. */
24448         uint32_t hold_ltssm            : 1;  /**< [  0:  0](R/W) Hold and release LTSSM.
24449                                                                  For as long as this is set, the core stays in the current
24450                                                                  LTSSM. */
24451 #else /* Word 0 - Little Endian */
24452         uint32_t hold_ltssm            : 1;  /**< [  0:  0](R/W) Hold and release LTSSM.
24453                                                                  For as long as this is set, the core stays in the current
24454                                                                  LTSSM. */
24455         uint32_t rcry_req              : 1;  /**< [  1:  1](WO) Recovery request.
24456                                                                  When this bit is set in L0 or L0s, the LTSSM starts
24457                                                                  transitioning to recovery state. This request does not cause
24458                                                                  a speed change or reequalization. This bit always reads
24459                                                                  a zero. */
24460         uint32_t noack_force_lnkdn     : 1;  /**< [  2:  2](R/W) Force link down.
24461                                                                  When this bit is set and the core detects REPLY_NUM rolling
24462                                                                  over 4 times, the LTSSM transitions to detect state. */
24463         uint32_t reserved_3_7          : 5;
24464         uint32_t dir_recidle_config    : 1;  /**< [  8:  8](R/W) Direct Recovery.Idle to configuration.
24465                                                                  When this bit is set and the LTSSM is in recovery idle state,
24466                                                                  the LTSSM transitions to configuration state. */
24467         uint32_t dir_polcmp_to_det     : 1;  /**< [  9:  9](R/W) Direct Polling.Compliance to detect.
24468                                                                  When this bit is set and the LTSSM is in polling compliance
24469                                                                  state, the LTSSM transitions to detect state. */
24470         uint32_t dir_lpbslv_to_exit    : 1;  /**< [ 10: 10](R/W) Direct loopback slave to exit.
24471                                                                  When set and the LTSSM is in loopback slave active state,
24472                                                                  the LTSSM transitions to the loopback slave exit state. */
24473         uint32_t reserved_11_15        : 5;
24474         uint32_t fr_err_rcvy_dis       : 1;  /**< [ 16: 16](R/W) Framing error recovery disable.
24475                                                                  This bit disables a transition to recovery state when a framing
24476                                                                  error has occurred. */
24477         uint32_t reserved_17_31        : 15;
24478 #endif /* Word 0 - End */
24479     } s;
24480     /* struct bdk_pciercx_ras_sd_ctl2_s cn; */
24481 };
24482 typedef union bdk_pciercx_ras_sd_ctl2 bdk_pciercx_ras_sd_ctl2_t;
24483 
24484 static inline uint64_t BDK_PCIERCX_RAS_SD_CTL2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_CTL2(unsigned long a)24485 static inline uint64_t BDK_PCIERCX_RAS_SD_CTL2(unsigned long a)
24486 {
24487     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24488         return 0x3bcll + 0x100000000ll * ((a) & 0x3);
24489     __bdk_csr_fatal("PCIERCX_RAS_SD_CTL2", 1, a, 0, 0, 0);
24490 }
24491 
24492 #define typedef_BDK_PCIERCX_RAS_SD_CTL2(a) bdk_pciercx_ras_sd_ctl2_t
24493 #define bustype_BDK_PCIERCX_RAS_SD_CTL2(a) BDK_CSR_TYPE_PCICONFIGRC
24494 #define basename_BDK_PCIERCX_RAS_SD_CTL2(a) "PCIERCX_RAS_SD_CTL2"
24495 #define busnum_BDK_PCIERCX_RAS_SD_CTL2(a) (a)
24496 #define arguments_BDK_PCIERCX_RAS_SD_CTL2(a) (a),-1,-1,-1
24497 
24498 /**
24499  * Register (PCICONFIGRC) pcierc#_ras_sd_eq_ctl1
24500  *
24501  * PCIe RC Vendor RAS DES Silicon Debug EQ Control 1 Register
24502  */
24503 union bdk_pciercx_ras_sd_eq_ctl1
24504 {
24505     uint32_t u;
24506     struct bdk_pciercx_ras_sd_eq_ctl1_s
24507     {
24508 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24509         uint32_t fom_target            : 8;  /**< [ 31: 24](R/W) FOM target.
24510                                                                  Indicates figure of merit target criteria value of EQ
24511                                                                  master (DSP in EQ Phase3/USP in EQ Phase2).
24512                                                                  This field is only valid when PCIERC_GEN3_EQ_CTL[FM] is
24513                                                                  0x1 (figure of merit). */
24514         uint32_t fom_target_en         : 1;  /**< [ 23: 23](R/W) FOM target enable.
24515                                                                  Enables the [FOM_TARGET] field. */
24516         uint32_t reserved_18_22        : 5;
24517         uint32_t eval_interval_time    : 2;  /**< [ 17: 16](R/W) Eval interval time.
24518                                                                  Indicates interval time of RxEqEval assertion.
24519                                                                  0x0 = 500 ns.
24520                                                                  0x1 = 1 us.
24521                                                                  0x2 = 2 us.
24522                                                                  0x3 = 4 us.
24523 
24524                                                                  This field is used for EQ master (DSP in EQ Phase3/USP in
24525                                                                  EQ Phase2). */
24526         uint32_t reserved_10_15        : 6;
24527         uint32_t ext_eq_timeout        : 2;  /**< [  9:  8](R/W) Extends EQ Phase2/3 timeout.
24528                                                                  This field is used when the ltssm is in Recovery.EQ2/3.
24529                                                                  When this field is set, the value of the EQ2/3 timeout is
24530                                                                  extended.
24531 
24532                                                                  EQ master (DSP in EQ Phase 3/USP in EQ Phaase2)
24533                                                                  0x0 = 24 ms (default).
24534                                                                  0x1 = 48 ms
24535                                                                  0x2 = 240 ms.
24536                                                                  0x3 = No timeout.
24537 
24538                                                                  EQ slave (DSP in EQ Phase 2/USP in EQ Phaase3)
24539                                                                  0x0 = 32 ms (default).
24540                                                                  0x1 = 56 ms
24541                                                                  0x2 = 248 ms.
24542                                                                  0x3 = No timeout. */
24543         uint32_t reserved_5_7          : 3;
24544         uint32_t eq_rate_sel           : 1;  /**< [  4:  4](R/W) EQ status rate select.
24545                                                                  Setting this field in conjunction with [EQ_LANE_SEL]
24546                                                                  determines the per-lane silicon debug EQ status data
24547                                                                  returned by the SD_EQ_CONTROL[2/3] and
24548                                                                  SD_EQ_STATUS[1/2/3] viewport registers.
24549                                                                  0x0 = 8.0 GT/s speed.
24550                                                                  0x1 = 16.0 GT/s speed. */
24551         uint32_t eq_lane_sel           : 4;  /**< [  3:  0](R/W) EQ status lane select.
24552                                                                  Setting this field in conjunction with [EQ_RATE_SEL]
24553                                                                  determines the per-lane silicon debug EQ status data
24554                                                                  returned by the SD_EQ_CONTROL[2/3] and
24555                                                                  SD_EQ_STATUS[1/2/3] viewport registers.
24556                                                                  0x0 = Lane0.
24557                                                                  0x1 = Lane1.
24558                                                                  0x2 = Lane2.
24559                                                                  _ ...
24560                                                                  0x7 = Lane7.
24561                                                                  0x8-0xF = Reserved. */
24562 #else /* Word 0 - Little Endian */
24563         uint32_t eq_lane_sel           : 4;  /**< [  3:  0](R/W) EQ status lane select.
24564                                                                  Setting this field in conjunction with [EQ_RATE_SEL]
24565                                                                  determines the per-lane silicon debug EQ status data
24566                                                                  returned by the SD_EQ_CONTROL[2/3] and
24567                                                                  SD_EQ_STATUS[1/2/3] viewport registers.
24568                                                                  0x0 = Lane0.
24569                                                                  0x1 = Lane1.
24570                                                                  0x2 = Lane2.
24571                                                                  _ ...
24572                                                                  0x7 = Lane7.
24573                                                                  0x8-0xF = Reserved. */
24574         uint32_t eq_rate_sel           : 1;  /**< [  4:  4](R/W) EQ status rate select.
24575                                                                  Setting this field in conjunction with [EQ_LANE_SEL]
24576                                                                  determines the per-lane silicon debug EQ status data
24577                                                                  returned by the SD_EQ_CONTROL[2/3] and
24578                                                                  SD_EQ_STATUS[1/2/3] viewport registers.
24579                                                                  0x0 = 8.0 GT/s speed.
24580                                                                  0x1 = 16.0 GT/s speed. */
24581         uint32_t reserved_5_7          : 3;
24582         uint32_t ext_eq_timeout        : 2;  /**< [  9:  8](R/W) Extends EQ Phase2/3 timeout.
24583                                                                  This field is used when the ltssm is in Recovery.EQ2/3.
24584                                                                  When this field is set, the value of the EQ2/3 timeout is
24585                                                                  extended.
24586 
24587                                                                  EQ master (DSP in EQ Phase 3/USP in EQ Phaase2)
24588                                                                  0x0 = 24 ms (default).
24589                                                                  0x1 = 48 ms
24590                                                                  0x2 = 240 ms.
24591                                                                  0x3 = No timeout.
24592 
24593                                                                  EQ slave (DSP in EQ Phase 2/USP in EQ Phaase3)
24594                                                                  0x0 = 32 ms (default).
24595                                                                  0x1 = 56 ms
24596                                                                  0x2 = 248 ms.
24597                                                                  0x3 = No timeout. */
24598         uint32_t reserved_10_15        : 6;
24599         uint32_t eval_interval_time    : 2;  /**< [ 17: 16](R/W) Eval interval time.
24600                                                                  Indicates interval time of RxEqEval assertion.
24601                                                                  0x0 = 500 ns.
24602                                                                  0x1 = 1 us.
24603                                                                  0x2 = 2 us.
24604                                                                  0x3 = 4 us.
24605 
24606                                                                  This field is used for EQ master (DSP in EQ Phase3/USP in
24607                                                                  EQ Phase2). */
24608         uint32_t reserved_18_22        : 5;
24609         uint32_t fom_target_en         : 1;  /**< [ 23: 23](R/W) FOM target enable.
24610                                                                  Enables the [FOM_TARGET] field. */
24611         uint32_t fom_target            : 8;  /**< [ 31: 24](R/W) FOM target.
24612                                                                  Indicates figure of merit target criteria value of EQ
24613                                                                  master (DSP in EQ Phase3/USP in EQ Phase2).
24614                                                                  This field is only valid when PCIERC_GEN3_EQ_CTL[FM] is
24615                                                                  0x1 (figure of merit). */
24616 #endif /* Word 0 - End */
24617     } s;
24618     /* struct bdk_pciercx_ras_sd_eq_ctl1_s cn; */
24619 };
24620 typedef union bdk_pciercx_ras_sd_eq_ctl1 bdk_pciercx_ras_sd_eq_ctl1_t;
24621 
24622 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_CTL1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_EQ_CTL1(unsigned long a)24623 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_CTL1(unsigned long a)
24624 {
24625     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24626         return 0x3e8ll + 0x100000000ll * ((a) & 0x3);
24627     __bdk_csr_fatal("PCIERCX_RAS_SD_EQ_CTL1", 1, a, 0, 0, 0);
24628 }
24629 
24630 #define typedef_BDK_PCIERCX_RAS_SD_EQ_CTL1(a) bdk_pciercx_ras_sd_eq_ctl1_t
24631 #define bustype_BDK_PCIERCX_RAS_SD_EQ_CTL1(a) BDK_CSR_TYPE_PCICONFIGRC
24632 #define basename_BDK_PCIERCX_RAS_SD_EQ_CTL1(a) "PCIERCX_RAS_SD_EQ_CTL1"
24633 #define busnum_BDK_PCIERCX_RAS_SD_EQ_CTL1(a) (a)
24634 #define arguments_BDK_PCIERCX_RAS_SD_EQ_CTL1(a) (a),-1,-1,-1
24635 
24636 /**
24637  * Register (PCICONFIGRC) pcierc#_ras_sd_eq_ctl2
24638  *
24639  * PCIe RC Vendor RAS DES Silicon Debug EQ Control 2 Register
24640  */
24641 union bdk_pciercx_ras_sd_eq_ctl2
24642 {
24643     uint32_t u;
24644     struct bdk_pciercx_ras_sd_eq_ctl2_s
24645     {
24646 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24647         uint32_t reserved_31           : 1;
24648         uint32_t force_loc_txpre_en    : 1;  /**< [ 30: 30](R/W) Force local transmitter preset enable. Enables [FORCE_LOC_TXPRE]. */
24649         uint32_t force_loc_rxhint_en   : 1;  /**< [ 29: 29](R/W) Force local receiver preset hint enable. Enables [FORCE_LOC_RXHINT]. */
24650         uint32_t force_loc_txcoef_en   : 1;  /**< [ 28: 28](R/W) Force local transmitter coefficient enable.
24651                                                                  Enables the following fields:
24652                                                                  [FORCE_LOC_TXPRE_CUR],
24653                                                                  [FORCE_LOC_TX_CUR],
24654                                                                  [FORCE_LOC_TXPOST_CUR]. */
24655         uint32_t force_loc_txpre       : 4;  /**< [ 27: 24](R/W) Force local transmitter preset.
24656                                                                  Indicates initial preset value of USP in EQ slave (EQ Phase2)
24657                                                                  instead of receiving EQ TS2. */
24658         uint32_t reserved_21_23        : 3;
24659         uint32_t force_loc_rxhint      : 3;  /**< [ 20: 18](R/W) Force local receiver preset hint.
24660                                                                  Indicates the RxPresetHint value of EQ slave (DSP in EQ
24661                                                                  Phase2/USP in EQ Phase3), instead of received or set value. */
24662         uint32_t force_loc_txpost_cur  : 6;  /**< [ 17: 12](R/W) Force local transmitter postcursor.
24663                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
24664                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
24665                                                                  from link partner. */
24666         uint32_t force_loc_tx_cur      : 6;  /**< [ 11:  6](R/W) Force local transmitter cursor.
24667                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
24668                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
24669                                                                  from link partner. */
24670         uint32_t force_loc_txpre_cur   : 6;  /**< [  5:  0](R/W) Force local transmitter precursor.
24671                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
24672                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
24673                                                                  from link partner. */
24674 #else /* Word 0 - Little Endian */
24675         uint32_t force_loc_txpre_cur   : 6;  /**< [  5:  0](R/W) Force local transmitter precursor.
24676                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
24677                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
24678                                                                  from link partner. */
24679         uint32_t force_loc_tx_cur      : 6;  /**< [ 11:  6](R/W) Force local transmitter cursor.
24680                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
24681                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
24682                                                                  from link partner. */
24683         uint32_t force_loc_txpost_cur  : 6;  /**< [ 17: 12](R/W) Force local transmitter postcursor.
24684                                                                  Indicates the coefficient value of EQ slave (DSP in EQ
24685                                                                  Phase2/USP in EQ Phase3), instead of the value instructed
24686                                                                  from link partner. */
24687         uint32_t force_loc_rxhint      : 3;  /**< [ 20: 18](R/W) Force local receiver preset hint.
24688                                                                  Indicates the RxPresetHint value of EQ slave (DSP in EQ
24689                                                                  Phase2/USP in EQ Phase3), instead of received or set value. */
24690         uint32_t reserved_21_23        : 3;
24691         uint32_t force_loc_txpre       : 4;  /**< [ 27: 24](R/W) Force local transmitter preset.
24692                                                                  Indicates initial preset value of USP in EQ slave (EQ Phase2)
24693                                                                  instead of receiving EQ TS2. */
24694         uint32_t force_loc_txcoef_en   : 1;  /**< [ 28: 28](R/W) Force local transmitter coefficient enable.
24695                                                                  Enables the following fields:
24696                                                                  [FORCE_LOC_TXPRE_CUR],
24697                                                                  [FORCE_LOC_TX_CUR],
24698                                                                  [FORCE_LOC_TXPOST_CUR]. */
24699         uint32_t force_loc_rxhint_en   : 1;  /**< [ 29: 29](R/W) Force local receiver preset hint enable. Enables [FORCE_LOC_RXHINT]. */
24700         uint32_t force_loc_txpre_en    : 1;  /**< [ 30: 30](R/W) Force local transmitter preset enable. Enables [FORCE_LOC_TXPRE]. */
24701         uint32_t reserved_31           : 1;
24702 #endif /* Word 0 - End */
24703     } s;
24704     /* struct bdk_pciercx_ras_sd_eq_ctl2_s cn; */
24705 };
24706 typedef union bdk_pciercx_ras_sd_eq_ctl2 bdk_pciercx_ras_sd_eq_ctl2_t;
24707 
24708 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_CTL2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_EQ_CTL2(unsigned long a)24709 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_CTL2(unsigned long a)
24710 {
24711     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24712         return 0x3ecll + 0x100000000ll * ((a) & 0x3);
24713     __bdk_csr_fatal("PCIERCX_RAS_SD_EQ_CTL2", 1, a, 0, 0, 0);
24714 }
24715 
24716 #define typedef_BDK_PCIERCX_RAS_SD_EQ_CTL2(a) bdk_pciercx_ras_sd_eq_ctl2_t
24717 #define bustype_BDK_PCIERCX_RAS_SD_EQ_CTL2(a) BDK_CSR_TYPE_PCICONFIGRC
24718 #define basename_BDK_PCIERCX_RAS_SD_EQ_CTL2(a) "PCIERCX_RAS_SD_EQ_CTL2"
24719 #define busnum_BDK_PCIERCX_RAS_SD_EQ_CTL2(a) (a)
24720 #define arguments_BDK_PCIERCX_RAS_SD_EQ_CTL2(a) (a),-1,-1,-1
24721 
24722 /**
24723  * Register (PCICONFIGRC) pcierc#_ras_sd_eq_ctl3
24724  *
24725  * PCIe RC Vendor RAS DES Silicon Debug EQ Control 3 Register
24726  */
24727 union bdk_pciercx_ras_sd_eq_ctl3
24728 {
24729     uint32_t u;
24730     struct bdk_pciercx_ras_sd_eq_ctl3_s
24731     {
24732 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24733         uint32_t reserved_29_31        : 3;
24734         uint32_t force_rem_txcoef_en   : 1;  /**< [ 28: 28](R/W) Force remote transmitter coefficient enable as selected by
24735                                                                  PCIERC_RAS_SD_EQ_CTL1[EQ_LANE_SEL].
24736                                                                  Enables the following fields:
24737                                                                  [FORCE_REM_TXPRE_CUR],
24738                                                                  [FORCE_REM_TX_CUR],
24739                                                                  [FORCE_REM_TXPOST_CUR]. */
24740         uint32_t reserved_18_27        : 10;
24741         uint32_t force_rem_txpost_cur  : 6;  /**< [ 17: 12](R/W) Force remote transmitter postcursor as selected by
24742                                                                  PCIERC_RAS_SD_EQ_CTL1[EQ_LANE_SEL].
24743                                                                  Indicates the coefficient value of EQ master (DSP in EQ
24744                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
24745                                                                  from link partner. */
24746         uint32_t force_rem_tx_cur      : 6;  /**< [ 11:  6](R/W) Force remote transmitter cursors selected by
24747                                                                  PCIERC_RAS_SD_EQ_CTL1[EQ_LANE_SEL].
24748                                                                  Indicates the coefficient value of EQ master (DSP in EQ
24749                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
24750                                                                  from link partner. */
24751         uint32_t force_rem_txpre_cur   : 6;  /**< [  5:  0](RAZ) Force remote transmitter precursors selected by
24752                                                                  PCIERC_RAS_SD_EQ_CTL1[EQ_LANE_SEL].
24753                                                                  Indicates the coefficient value of EQ master (DSP in EQ
24754                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
24755                                                                  from link partner. */
24756 #else /* Word 0 - Little Endian */
24757         uint32_t force_rem_txpre_cur   : 6;  /**< [  5:  0](RAZ) Force remote transmitter precursors selected by
24758                                                                  PCIERC_RAS_SD_EQ_CTL1[EQ_LANE_SEL].
24759                                                                  Indicates the coefficient value of EQ master (DSP in EQ
24760                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
24761                                                                  from link partner. */
24762         uint32_t force_rem_tx_cur      : 6;  /**< [ 11:  6](R/W) Force remote transmitter cursors selected by
24763                                                                  PCIERC_RAS_SD_EQ_CTL1[EQ_LANE_SEL].
24764                                                                  Indicates the coefficient value of EQ master (DSP in EQ
24765                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
24766                                                                  from link partner. */
24767         uint32_t force_rem_txpost_cur  : 6;  /**< [ 17: 12](R/W) Force remote transmitter postcursor as selected by
24768                                                                  PCIERC_RAS_SD_EQ_CTL1[EQ_LANE_SEL].
24769                                                                  Indicates the coefficient value of EQ master (DSP in EQ
24770                                                                  Phase3/USP in EQ Phase2), instead of the value instructed
24771                                                                  from link partner. */
24772         uint32_t reserved_18_27        : 10;
24773         uint32_t force_rem_txcoef_en   : 1;  /**< [ 28: 28](R/W) Force remote transmitter coefficient enable as selected by
24774                                                                  PCIERC_RAS_SD_EQ_CTL1[EQ_LANE_SEL].
24775                                                                  Enables the following fields:
24776                                                                  [FORCE_REM_TXPRE_CUR],
24777                                                                  [FORCE_REM_TX_CUR],
24778                                                                  [FORCE_REM_TXPOST_CUR]. */
24779         uint32_t reserved_29_31        : 3;
24780 #endif /* Word 0 - End */
24781     } s;
24782     /* struct bdk_pciercx_ras_sd_eq_ctl3_s cn; */
24783 };
24784 typedef union bdk_pciercx_ras_sd_eq_ctl3 bdk_pciercx_ras_sd_eq_ctl3_t;
24785 
24786 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_CTL3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_EQ_CTL3(unsigned long a)24787 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_CTL3(unsigned long a)
24788 {
24789     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24790         return 0x3f0ll + 0x100000000ll * ((a) & 0x3);
24791     __bdk_csr_fatal("PCIERCX_RAS_SD_EQ_CTL3", 1, a, 0, 0, 0);
24792 }
24793 
24794 #define typedef_BDK_PCIERCX_RAS_SD_EQ_CTL3(a) bdk_pciercx_ras_sd_eq_ctl3_t
24795 #define bustype_BDK_PCIERCX_RAS_SD_EQ_CTL3(a) BDK_CSR_TYPE_PCICONFIGRC
24796 #define basename_BDK_PCIERCX_RAS_SD_EQ_CTL3(a) "PCIERCX_RAS_SD_EQ_CTL3"
24797 #define busnum_BDK_PCIERCX_RAS_SD_EQ_CTL3(a) (a)
24798 #define arguments_BDK_PCIERCX_RAS_SD_EQ_CTL3(a) (a),-1,-1,-1
24799 
24800 /**
24801  * Register (PCICONFIGRC) pcierc#_ras_sd_eq_stat1
24802  *
24803  * PCIe RC Vendor RAS DES Silicon Debug EQ Status 1 Register
24804  */
24805 union bdk_pciercx_ras_sd_eq_stat1
24806 {
24807     uint32_t u;
24808     struct bdk_pciercx_ras_sd_eq_stat1_s
24809     {
24810 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24811         uint32_t reserved_8_31         : 24;
24812         uint32_t eq_reject_event       : 1;  /**< [  7:  7](RO/H) EQ reject event.
24813                                                                  Indicates that the core receives two consecutive TS1 OS
24814                                                                  w/Reject=1b during EQ master phase (DSP in EQ
24815                                                                  Phase3/USP in EQ Phase2). This bit is automatically cleared
24816                                                                  when the core starts EQ master phase again. */
24817         uint32_t eq_rulec_viol         : 1;  /**< [  6:  6](RO/H) EQ rule C violation.
24818                                                                  Indicates that coefficient rule C violation is detected in the
24819                                                                  values provided by PHY using direction change method
24820                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
24821                                                                  Phase2). The coefficients rule C
24822                                                                  correspond to the rules c) from section "Rules for
24823                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
24824                                                                  This bit is automatically cleared when the controller starts
24825                                                                  EQ master phase again. */
24826         uint32_t eq_ruleb_viol         : 1;  /**< [  5:  5](RO/H) EQ rule B violation.
24827                                                                  Indicates that coefficient rule B violation is detected in the
24828                                                                  values provided by PHY using direction change method
24829                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
24830                                                                  Phase2). The coefficients rules B
24831                                                                  correspond to the rules b) from section "Rules for
24832                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
24833                                                                  This bit is automatically cleared when the controller starts
24834                                                                  EQ master phase again. */
24835         uint32_t eq_rulea_viol         : 1;  /**< [  4:  4](RO/H) EQ rule A violation.
24836                                                                  Indicates that coefficient rule A violation is detected in the
24837                                                                  values provided by PHY using direction change method
24838                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
24839                                                                  Phase2).  The coefficients rules A
24840                                                                  correspond to the rules a) from section "Rules for
24841                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
24842                                                                  This bit is automatically cleared when the controller starts
24843                                                                  EQ master phase again. */
24844         uint32_t reserved_3            : 1;
24845         uint32_t eq_conv_info          : 2;  /**< [  2:  1](RO/H) EQ convergence info.
24846                                                                  Indicates equalization convergence information.
24847                                                                  0x0 = Equalization is not attempted.
24848                                                                  0x1 = Equalization finished successfully.
24849                                                                  0x2 = Equalization finished unsuccessfully.
24850                                                                  0x3 = Reserved.
24851                                                                  This bit is automatically cleared when the core starts EQ
24852                                                                  master phase again. */
24853         uint32_t eq_sequence           : 1;  /**< [  0:  0](RO) EQ sequence.
24854                                                                  Indicates that the core is starting the equalization sequence. */
24855 #else /* Word 0 - Little Endian */
24856         uint32_t eq_sequence           : 1;  /**< [  0:  0](RO) EQ sequence.
24857                                                                  Indicates that the core is starting the equalization sequence. */
24858         uint32_t eq_conv_info          : 2;  /**< [  2:  1](RO/H) EQ convergence info.
24859                                                                  Indicates equalization convergence information.
24860                                                                  0x0 = Equalization is not attempted.
24861                                                                  0x1 = Equalization finished successfully.
24862                                                                  0x2 = Equalization finished unsuccessfully.
24863                                                                  0x3 = Reserved.
24864                                                                  This bit is automatically cleared when the core starts EQ
24865                                                                  master phase again. */
24866         uint32_t reserved_3            : 1;
24867         uint32_t eq_rulea_viol         : 1;  /**< [  4:  4](RO/H) EQ rule A violation.
24868                                                                  Indicates that coefficient rule A violation is detected in the
24869                                                                  values provided by PHY using direction change method
24870                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
24871                                                                  Phase2).  The coefficients rules A
24872                                                                  correspond to the rules a) from section "Rules for
24873                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
24874                                                                  This bit is automatically cleared when the controller starts
24875                                                                  EQ master phase again. */
24876         uint32_t eq_ruleb_viol         : 1;  /**< [  5:  5](RO/H) EQ rule B violation.
24877                                                                  Indicates that coefficient rule B violation is detected in the
24878                                                                  values provided by PHY using direction change method
24879                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
24880                                                                  Phase2). The coefficients rules B
24881                                                                  correspond to the rules b) from section "Rules for
24882                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
24883                                                                  This bit is automatically cleared when the controller starts
24884                                                                  EQ master phase again. */
24885         uint32_t eq_rulec_viol         : 1;  /**< [  6:  6](RO/H) EQ rule C violation.
24886                                                                  Indicates that coefficient rule C violation is detected in the
24887                                                                  values provided by PHY using direction change method
24888                                                                  during EQ master phase (DSP in EQ Phase3/USP in EQ
24889                                                                  Phase2). The coefficients rule C
24890                                                                  correspond to the rules c) from section "Rules for
24891                                                                  Transmitter Coefficients" in the PCI Express Base Specification.
24892                                                                  This bit is automatically cleared when the controller starts
24893                                                                  EQ master phase again. */
24894         uint32_t eq_reject_event       : 1;  /**< [  7:  7](RO/H) EQ reject event.
24895                                                                  Indicates that the core receives two consecutive TS1 OS
24896                                                                  w/Reject=1b during EQ master phase (DSP in EQ
24897                                                                  Phase3/USP in EQ Phase2). This bit is automatically cleared
24898                                                                  when the core starts EQ master phase again. */
24899         uint32_t reserved_8_31         : 24;
24900 #endif /* Word 0 - End */
24901     } s;
24902     /* struct bdk_pciercx_ras_sd_eq_stat1_s cn; */
24903 };
24904 typedef union bdk_pciercx_ras_sd_eq_stat1 bdk_pciercx_ras_sd_eq_stat1_t;
24905 
24906 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_STAT1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_EQ_STAT1(unsigned long a)24907 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_STAT1(unsigned long a)
24908 {
24909     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24910         return 0x3f8ll + 0x100000000ll * ((a) & 0x3);
24911     __bdk_csr_fatal("PCIERCX_RAS_SD_EQ_STAT1", 1, a, 0, 0, 0);
24912 }
24913 
24914 #define typedef_BDK_PCIERCX_RAS_SD_EQ_STAT1(a) bdk_pciercx_ras_sd_eq_stat1_t
24915 #define bustype_BDK_PCIERCX_RAS_SD_EQ_STAT1(a) BDK_CSR_TYPE_PCICONFIGRC
24916 #define basename_BDK_PCIERCX_RAS_SD_EQ_STAT1(a) "PCIERCX_RAS_SD_EQ_STAT1"
24917 #define busnum_BDK_PCIERCX_RAS_SD_EQ_STAT1(a) (a)
24918 #define arguments_BDK_PCIERCX_RAS_SD_EQ_STAT1(a) (a),-1,-1,-1
24919 
24920 /**
24921  * Register (PCICONFIGRC) pcierc#_ras_sd_eq_stat2
24922  *
24923  * PCIe RC Vendor RAS DES Silicon Debug EQ Status 2 Register
24924  */
24925 union bdk_pciercx_ras_sd_eq_stat2
24926 {
24927     uint32_t u;
24928     struct bdk_pciercx_ras_sd_eq_stat2_s
24929     {
24930 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24931         uint32_t eq_loc_fom_val        : 8;  /**< [ 31: 24](RO/H) EQ local figure of merit.
24932                                                                  Indicates local maximum figure of merit value. */
24933         uint32_t reserved_21_23        : 3;
24934         uint32_t eq_loc_rxhint         : 3;  /**< [ 20: 18](RO/H) EQ local receiver preset hint.
24935                                                                  Indicates local receiver preset hint value. */
24936         uint32_t eq_loc_post_cur       : 6;  /**< [ 17: 12](RO/H) EQ local postcursor.
24937                                                                  Indicates local post cursor coefficient value. */
24938         uint32_t eq_loc_cur            : 6;  /**< [ 11:  6](RO/H) EQ local cursor.
24939                                                                  Indicates local cursor coefficient value. */
24940         uint32_t eq_loc_pre_cur        : 6;  /**< [  5:  0](RO/H) EQ local precursor.
24941                                                                  Indicates local precursor coefficient value. */
24942 #else /* Word 0 - Little Endian */
24943         uint32_t eq_loc_pre_cur        : 6;  /**< [  5:  0](RO/H) EQ local precursor.
24944                                                                  Indicates local precursor coefficient value. */
24945         uint32_t eq_loc_cur            : 6;  /**< [ 11:  6](RO/H) EQ local cursor.
24946                                                                  Indicates local cursor coefficient value. */
24947         uint32_t eq_loc_post_cur       : 6;  /**< [ 17: 12](RO/H) EQ local postcursor.
24948                                                                  Indicates local post cursor coefficient value. */
24949         uint32_t eq_loc_rxhint         : 3;  /**< [ 20: 18](RO/H) EQ local receiver preset hint.
24950                                                                  Indicates local receiver preset hint value. */
24951         uint32_t reserved_21_23        : 3;
24952         uint32_t eq_loc_fom_val        : 8;  /**< [ 31: 24](RO/H) EQ local figure of merit.
24953                                                                  Indicates local maximum figure of merit value. */
24954 #endif /* Word 0 - End */
24955     } s;
24956     /* struct bdk_pciercx_ras_sd_eq_stat2_s cn; */
24957 };
24958 typedef union bdk_pciercx_ras_sd_eq_stat2 bdk_pciercx_ras_sd_eq_stat2_t;
24959 
24960 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_STAT2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_EQ_STAT2(unsigned long a)24961 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_STAT2(unsigned long a)
24962 {
24963     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
24964         return 0x3fcll + 0x100000000ll * ((a) & 0x3);
24965     __bdk_csr_fatal("PCIERCX_RAS_SD_EQ_STAT2", 1, a, 0, 0, 0);
24966 }
24967 
24968 #define typedef_BDK_PCIERCX_RAS_SD_EQ_STAT2(a) bdk_pciercx_ras_sd_eq_stat2_t
24969 #define bustype_BDK_PCIERCX_RAS_SD_EQ_STAT2(a) BDK_CSR_TYPE_PCICONFIGRC
24970 #define basename_BDK_PCIERCX_RAS_SD_EQ_STAT2(a) "PCIERCX_RAS_SD_EQ_STAT2"
24971 #define busnum_BDK_PCIERCX_RAS_SD_EQ_STAT2(a) (a)
24972 #define arguments_BDK_PCIERCX_RAS_SD_EQ_STAT2(a) (a),-1,-1,-1
24973 
24974 /**
24975  * Register (PCICONFIGRC) pcierc#_ras_sd_eq_stat3
24976  *
24977  * PCIe RC Vendor RAS DES Silicon Debug EQ Status 3 Register
24978  */
24979 union bdk_pciercx_ras_sd_eq_stat3
24980 {
24981     uint32_t u;
24982     struct bdk_pciercx_ras_sd_eq_stat3_s
24983     {
24984 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
24985         uint32_t reserved_30_31        : 2;
24986         uint32_t eq_rem_fs             : 6;  /**< [ 29: 24](RO/H) EQ remote FS.
24987                                                                  Indicates remote FS value. */
24988         uint32_t eq_rem_lf             : 6;  /**< [ 23: 18](RO/H) EQ remote LF.
24989                                                                  Indicates remote LF value. */
24990         uint32_t eq_rem_post_cur       : 6;  /**< [ 17: 12](RO/H) EQ remote postcursor.
24991                                                                  Indicates remote postcursor coefficient value. */
24992         uint32_t eq_rem_cur            : 6;  /**< [ 11:  6](RO/H) EQ remote cursor.
24993                                                                  Indicates remote cursor coefficient value. */
24994         uint32_t eq_rem_pre_cur        : 6;  /**< [  5:  0](RO/H) EQ remote precursor.
24995                                                                  Indicates remote postcursor coefficient value. */
24996 #else /* Word 0 - Little Endian */
24997         uint32_t eq_rem_pre_cur        : 6;  /**< [  5:  0](RO/H) EQ remote precursor.
24998                                                                  Indicates remote postcursor coefficient value. */
24999         uint32_t eq_rem_cur            : 6;  /**< [ 11:  6](RO/H) EQ remote cursor.
25000                                                                  Indicates remote cursor coefficient value. */
25001         uint32_t eq_rem_post_cur       : 6;  /**< [ 17: 12](RO/H) EQ remote postcursor.
25002                                                                  Indicates remote postcursor coefficient value. */
25003         uint32_t eq_rem_lf             : 6;  /**< [ 23: 18](RO/H) EQ remote LF.
25004                                                                  Indicates remote LF value. */
25005         uint32_t eq_rem_fs             : 6;  /**< [ 29: 24](RO/H) EQ remote FS.
25006                                                                  Indicates remote FS value. */
25007         uint32_t reserved_30_31        : 2;
25008 #endif /* Word 0 - End */
25009     } s;
25010     /* struct bdk_pciercx_ras_sd_eq_stat3_s cn; */
25011 };
25012 typedef union bdk_pciercx_ras_sd_eq_stat3 bdk_pciercx_ras_sd_eq_stat3_t;
25013 
25014 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_STAT3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_EQ_STAT3(unsigned long a)25015 static inline uint64_t BDK_PCIERCX_RAS_SD_EQ_STAT3(unsigned long a)
25016 {
25017     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25018         return 0x400ll + 0x100000000ll * ((a) & 0x3);
25019     __bdk_csr_fatal("PCIERCX_RAS_SD_EQ_STAT3", 1, a, 0, 0, 0);
25020 }
25021 
25022 #define typedef_BDK_PCIERCX_RAS_SD_EQ_STAT3(a) bdk_pciercx_ras_sd_eq_stat3_t
25023 #define bustype_BDK_PCIERCX_RAS_SD_EQ_STAT3(a) BDK_CSR_TYPE_PCICONFIGRC
25024 #define basename_BDK_PCIERCX_RAS_SD_EQ_STAT3(a) "PCIERCX_RAS_SD_EQ_STAT3"
25025 #define busnum_BDK_PCIERCX_RAS_SD_EQ_STAT3(a) (a)
25026 #define arguments_BDK_PCIERCX_RAS_SD_EQ_STAT3(a) (a),-1,-1,-1
25027 
25028 /**
25029  * Register (PCICONFIGRC) pcierc#_ras_sd_l1lane
25030  *
25031  * PCIe RC Vendor RAS DES Silicon Debug Status L1Lane Register
25032  */
25033 union bdk_pciercx_ras_sd_l1lane
25034 {
25035     uint32_t u;
25036     struct bdk_pciercx_ras_sd_l1lane_s
25037     {
25038 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25039         uint32_t deskew_ptr            : 8;  /**< [ 31: 24](RO/H) Deskew pointer.
25040                                                                  Indicates deskew pointer of internal deskew buffer of
25041                                                                  selected lane number ([LANE_SELECT]). */
25042         uint32_t reserved_21_23        : 3;
25043         uint32_t pipe_txelecidle       : 1;  /**< [ 20: 20](RO/H) PIPE:TxElecIdle.
25044                                                                  Indicates PIPE TXELECIDLE signal of selected lane
25045                                                                  number ([LANE_SELECT]). */
25046         uint32_t pipe_rxelecidle       : 1;  /**< [ 19: 19](RO/H) PIPE:RxElecIdle.
25047                                                                  Indicates PIPE RXELECIDLE signal of selected lane
25048                                                                  number ([LANE_SELECT]). */
25049         uint32_t pipe_rxvalid          : 1;  /**< [ 18: 18](RO/H) PIPE:RxValid.
25050                                                                  Indicates PIPE RXVALID signal of selected lane
25051                                                                  number ([LANE_SELECT]). */
25052         uint32_t pipe_det_lane         : 1;  /**< [ 17: 17](RO/H) PIPE:Detect Lane.
25053                                                                  Indicates whether PHY indicates receiver detection or not on
25054                                                                  selected lane number ([LANE_SELECT]). */
25055         uint32_t pipe_rxpol            : 1;  /**< [ 16: 16](RO/H) PIPE:RxPolarity.
25056                                                                  Indicates PIPE RXPOLARITY signal of selected lane
25057                                                                  number ([LANE_SELECT]). */
25058         uint32_t reserved_4_15         : 12;
25059         uint32_t lane_select           : 4;  /**< [  3:  0](R/W) Lane select.
25060                                                                  Lane select register for silicon debug status register of
25061                                                                  Layer1-PerLane.
25062                                                                  0x0 = Lane0.
25063                                                                  0x1 = Lane1.
25064                                                                  0x2 = Lane2.
25065 
25066                                                                  0x7 = Lane7.
25067                                                                  0x8-0xF = Reserved. */
25068 #else /* Word 0 - Little Endian */
25069         uint32_t lane_select           : 4;  /**< [  3:  0](R/W) Lane select.
25070                                                                  Lane select register for silicon debug status register of
25071                                                                  Layer1-PerLane.
25072                                                                  0x0 = Lane0.
25073                                                                  0x1 = Lane1.
25074                                                                  0x2 = Lane2.
25075 
25076                                                                  0x7 = Lane7.
25077                                                                  0x8-0xF = Reserved. */
25078         uint32_t reserved_4_15         : 12;
25079         uint32_t pipe_rxpol            : 1;  /**< [ 16: 16](RO/H) PIPE:RxPolarity.
25080                                                                  Indicates PIPE RXPOLARITY signal of selected lane
25081                                                                  number ([LANE_SELECT]). */
25082         uint32_t pipe_det_lane         : 1;  /**< [ 17: 17](RO/H) PIPE:Detect Lane.
25083                                                                  Indicates whether PHY indicates receiver detection or not on
25084                                                                  selected lane number ([LANE_SELECT]). */
25085         uint32_t pipe_rxvalid          : 1;  /**< [ 18: 18](RO/H) PIPE:RxValid.
25086                                                                  Indicates PIPE RXVALID signal of selected lane
25087                                                                  number ([LANE_SELECT]). */
25088         uint32_t pipe_rxelecidle       : 1;  /**< [ 19: 19](RO/H) PIPE:RxElecIdle.
25089                                                                  Indicates PIPE RXELECIDLE signal of selected lane
25090                                                                  number ([LANE_SELECT]). */
25091         uint32_t pipe_txelecidle       : 1;  /**< [ 20: 20](RO/H) PIPE:TxElecIdle.
25092                                                                  Indicates PIPE TXELECIDLE signal of selected lane
25093                                                                  number ([LANE_SELECT]). */
25094         uint32_t reserved_21_23        : 3;
25095         uint32_t deskew_ptr            : 8;  /**< [ 31: 24](RO/H) Deskew pointer.
25096                                                                  Indicates deskew pointer of internal deskew buffer of
25097                                                                  selected lane number ([LANE_SELECT]). */
25098 #endif /* Word 0 - End */
25099     } s;
25100     /* struct bdk_pciercx_ras_sd_l1lane_s cn; */
25101 };
25102 typedef union bdk_pciercx_ras_sd_l1lane bdk_pciercx_ras_sd_l1lane_t;
25103 
25104 static inline uint64_t BDK_PCIERCX_RAS_SD_L1LANE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_L1LANE(unsigned long a)25105 static inline uint64_t BDK_PCIERCX_RAS_SD_L1LANE(unsigned long a)
25106 {
25107     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25108         return 0x3c8ll + 0x100000000ll * ((a) & 0x3);
25109     __bdk_csr_fatal("PCIERCX_RAS_SD_L1LANE", 1, a, 0, 0, 0);
25110 }
25111 
25112 #define typedef_BDK_PCIERCX_RAS_SD_L1LANE(a) bdk_pciercx_ras_sd_l1lane_t
25113 #define bustype_BDK_PCIERCX_RAS_SD_L1LANE(a) BDK_CSR_TYPE_PCICONFIGRC
25114 #define basename_BDK_PCIERCX_RAS_SD_L1LANE(a) "PCIERCX_RAS_SD_L1LANE"
25115 #define busnum_BDK_PCIERCX_RAS_SD_L1LANE(a) (a)
25116 #define arguments_BDK_PCIERCX_RAS_SD_L1LANE(a) (a),-1,-1,-1
25117 
25118 /**
25119  * Register (PCICONFIGRC) pcierc#_ras_sd_l1ltssm
25120  *
25121  * PCIe RC Vendor RAS DES Silicon Debug Status L1LTSSM Register
25122  */
25123 union bdk_pciercx_ras_sd_l1ltssm
25124 {
25125     uint32_t u;
25126     struct bdk_pciercx_ras_sd_l1ltssm_s
25127     {
25128 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25129         uint32_t ltssm_var             : 16; /**< [ 31: 16](RO/H) LTSSM variable.
25130                                                                  Indicates internal LTSSM variables defined in the PCI
25131                                                                  Express base specification.
25132                                                                  0x0 = directed_speed change.
25133                                                                  0x1 = changed_speed_recovery.
25134                                                                  0x2 = successful_speed_negotiation.
25135                                                                  0x3 = upconfigure_capable; Set to one if both ports advertised
25136                                                                  the UpConfigure capability in the last Config.Complete.
25137                                                                  0x4 = select_deemphasis.
25138                                                                  0x5 = start_equalization_w_preset.
25139                                                                  0x6 = equalization_done_8GT_data_rate.
25140                                                                  0x7 = equalization_done_16GT_data_rate.
25141                                                                  0x8-0xF = idle_to_rlock_transitioned. */
25142         uint32_t lane_rev              : 1;  /**< [ 15: 15](RO/H) Lane reversal operation.
25143                                                                  Receiver detected lane reversal. */
25144         uint32_t reserved_11_14        : 4;
25145         uint32_t pipe_pwr_dwn          : 3;  /**< [ 10:  8](RO/H) PIPE:PowerDown.
25146                                                                  Indicates PIPE PowerDown signal. */
25147         uint32_t framing_err           : 1;  /**< [  7:  7](R/W1C) Framing error.
25148                                                                  Indicates framing error detection status. */
25149         uint32_t framing_err_ptr       : 7;  /**< [  6:  0](RO) First framing error pointer.
25150                                                                  Identifies the first framing error using the following
25151                                                                  encoding. The field contents are only valid value when
25152                                                                  [FRAMING_ERR] = 1.
25153 
25154                                                                  Received unexpected framing token:
25155                                                                  0x1 = When non-STP/SDP/IDL token was received and it
25156                                                                  was not in TLP/DLLP reception.
25157                                                                  0x02 = When current token was not a valid EDB token and
25158                                                                  previous token was an EDB. (128/256 bit core only).
25159                                                                  0x03 = When SDP token was received but not expected.
25160                                                                  0x04 = When STP token was received but not expected.
25161                                                                  0x05 = When EDS token was expected but not received or
25162                                                                  whenever an EDS token was received but not expected.
25163                                                                  0x06 = When a framing error was detected in the deskew
25164                                                                  block while a packet has been in progress in token_finder.
25165                                                                  Received Unexpected STP Token
25166                                                                  0x11 = When framing CRC in STP token did not match.
25167                                                                  0x12 = When framing parity in STP token did not match.
25168                                                                  0x13 = When framing TLP length in STP token was
25169                                                                  smaller than 5 DWORDs.
25170 
25171                                                                  \<page\>
25172 
25173                                                                  Received unexpected block:
25174                                                                  0x21 = When receiving an OS block following SDS in datastream state.n.
25175                                                                  0x22 = When data block followed by OS block different.
25176                                                                  from SKP, EI, EIE in datastream state.
25177                                                                  0x23 = When block with an undefined block type in datastream state.
25178                                                                  0x24 = When data stream without data over three cycles in datastream state.
25179                                                                  0x25 = When OS block during data stream in datastream state.
25180                                                                  0x26 = When RxStatus error was detected in datastream state.
25181                                                                  0x27 = When not all active lanes receiving SKP OS starting
25182                                                                  at same cycle time in SKPOS state.
25183                                                                  0x28 = When a two-block timeout occurs for SKP OS in SKPOS state.
25184                                                                  0x29 = When receiving consecutive OS blocks within a data stream in SKPOS state.n.
25185                                                                  0x2A = When Phy status error was detected in SKPOS state.
25186                                                                  0x2B = When not all active lanes receiving EIOS starting at
25187                                                                  same cycle time in EIOS state.
25188                                                                  0x2C = When at least one symbol from the first 4 symbols
25189                                                                  is not EIOS symbol in EIOS state (CX_NB=2 only).
25190                                                                  0x2D = When not all active lanes receiving EIEOS starting
25191                                                                  at same cycle time in EIEOS state.
25192                                                                  0x2E = When not full 16 eieos symbols are received in EIEOS state.
25193 
25194                                                                  All other values not listed above are reserved. */
25195 #else /* Word 0 - Little Endian */
25196         uint32_t framing_err_ptr       : 7;  /**< [  6:  0](RO) First framing error pointer.
25197                                                                  Identifies the first framing error using the following
25198                                                                  encoding. The field contents are only valid value when
25199                                                                  [FRAMING_ERR] = 1.
25200 
25201                                                                  Received unexpected framing token:
25202                                                                  0x1 = When non-STP/SDP/IDL token was received and it
25203                                                                  was not in TLP/DLLP reception.
25204                                                                  0x02 = When current token was not a valid EDB token and
25205                                                                  previous token was an EDB. (128/256 bit core only).
25206                                                                  0x03 = When SDP token was received but not expected.
25207                                                                  0x04 = When STP token was received but not expected.
25208                                                                  0x05 = When EDS token was expected but not received or
25209                                                                  whenever an EDS token was received but not expected.
25210                                                                  0x06 = When a framing error was detected in the deskew
25211                                                                  block while a packet has been in progress in token_finder.
25212                                                                  Received Unexpected STP Token
25213                                                                  0x11 = When framing CRC in STP token did not match.
25214                                                                  0x12 = When framing parity in STP token did not match.
25215                                                                  0x13 = When framing TLP length in STP token was
25216                                                                  smaller than 5 DWORDs.
25217 
25218                                                                  \<page\>
25219 
25220                                                                  Received unexpected block:
25221                                                                  0x21 = When receiving an OS block following SDS in datastream state.n.
25222                                                                  0x22 = When data block followed by OS block different.
25223                                                                  from SKP, EI, EIE in datastream state.
25224                                                                  0x23 = When block with an undefined block type in datastream state.
25225                                                                  0x24 = When data stream without data over three cycles in datastream state.
25226                                                                  0x25 = When OS block during data stream in datastream state.
25227                                                                  0x26 = When RxStatus error was detected in datastream state.
25228                                                                  0x27 = When not all active lanes receiving SKP OS starting
25229                                                                  at same cycle time in SKPOS state.
25230                                                                  0x28 = When a two-block timeout occurs for SKP OS in SKPOS state.
25231                                                                  0x29 = When receiving consecutive OS blocks within a data stream in SKPOS state.n.
25232                                                                  0x2A = When Phy status error was detected in SKPOS state.
25233                                                                  0x2B = When not all active lanes receiving EIOS starting at
25234                                                                  same cycle time in EIOS state.
25235                                                                  0x2C = When at least one symbol from the first 4 symbols
25236                                                                  is not EIOS symbol in EIOS state (CX_NB=2 only).
25237                                                                  0x2D = When not all active lanes receiving EIEOS starting
25238                                                                  at same cycle time in EIEOS state.
25239                                                                  0x2E = When not full 16 eieos symbols are received in EIEOS state.
25240 
25241                                                                  All other values not listed above are reserved. */
25242         uint32_t framing_err           : 1;  /**< [  7:  7](R/W1C) Framing error.
25243                                                                  Indicates framing error detection status. */
25244         uint32_t pipe_pwr_dwn          : 3;  /**< [ 10:  8](RO/H) PIPE:PowerDown.
25245                                                                  Indicates PIPE PowerDown signal. */
25246         uint32_t reserved_11_14        : 4;
25247         uint32_t lane_rev              : 1;  /**< [ 15: 15](RO/H) Lane reversal operation.
25248                                                                  Receiver detected lane reversal. */
25249         uint32_t ltssm_var             : 16; /**< [ 31: 16](RO/H) LTSSM variable.
25250                                                                  Indicates internal LTSSM variables defined in the PCI
25251                                                                  Express base specification.
25252                                                                  0x0 = directed_speed change.
25253                                                                  0x1 = changed_speed_recovery.
25254                                                                  0x2 = successful_speed_negotiation.
25255                                                                  0x3 = upconfigure_capable; Set to one if both ports advertised
25256                                                                  the UpConfigure capability in the last Config.Complete.
25257                                                                  0x4 = select_deemphasis.
25258                                                                  0x5 = start_equalization_w_preset.
25259                                                                  0x6 = equalization_done_8GT_data_rate.
25260                                                                  0x7 = equalization_done_16GT_data_rate.
25261                                                                  0x8-0xF = idle_to_rlock_transitioned. */
25262 #endif /* Word 0 - End */
25263     } s;
25264     /* struct bdk_pciercx_ras_sd_l1ltssm_s cn; */
25265 };
25266 typedef union bdk_pciercx_ras_sd_l1ltssm bdk_pciercx_ras_sd_l1ltssm_t;
25267 
25268 static inline uint64_t BDK_PCIERCX_RAS_SD_L1LTSSM(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_L1LTSSM(unsigned long a)25269 static inline uint64_t BDK_PCIERCX_RAS_SD_L1LTSSM(unsigned long a)
25270 {
25271     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25272         return 0x3ccll + 0x100000000ll * ((a) & 0x3);
25273     __bdk_csr_fatal("PCIERCX_RAS_SD_L1LTSSM", 1, a, 0, 0, 0);
25274 }
25275 
25276 #define typedef_BDK_PCIERCX_RAS_SD_L1LTSSM(a) bdk_pciercx_ras_sd_l1ltssm_t
25277 #define bustype_BDK_PCIERCX_RAS_SD_L1LTSSM(a) BDK_CSR_TYPE_PCICONFIGRC
25278 #define basename_BDK_PCIERCX_RAS_SD_L1LTSSM(a) "PCIERCX_RAS_SD_L1LTSSM"
25279 #define busnum_BDK_PCIERCX_RAS_SD_L1LTSSM(a) (a)
25280 #define arguments_BDK_PCIERCX_RAS_SD_L1LTSSM(a) (a),-1,-1,-1
25281 
25282 /**
25283  * Register (PCICONFIGRC) pcierc#_ras_sd_statusl2
25284  *
25285  * PCIe RC Vendor RAS DES Silicon Debug Status L2 Register
25286  */
25287 union bdk_pciercx_ras_sd_statusl2
25288 {
25289     uint32_t u;
25290     struct bdk_pciercx_ras_sd_statusl2_s
25291     {
25292 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25293         uint32_t reserved_28_31        : 4;
25294         uint32_t fc_init2              : 1;  /**< [ 27: 27](RO) Indicates the core is in FC_INIT2(VC0) state. */
25295         uint32_t fc_init1              : 1;  /**< [ 26: 26](RO) Indicates the core is in FC_INIT1(VC0) state. */
25296         uint32_t dlcmsm                : 2;  /**< [ 25: 24](RO/H) Indicates the current DLCMSM.
25297                                                                  0x0 = DL_INACTIVE.
25298                                                                  0x1 = DL_FC_INIT.
25299                                                                  0x2 = Reserved.
25300                                                                  0x3 = DL_ACTIVE. */
25301         uint32_t rx_ack_seq_no         : 12; /**< [ 23: 12](RO/H) RX ACK sequence number.
25302                                                                  Indicates the ack sequence number which is updated by receiving
25303                                                                  ACK/NAK DLLP. */
25304         uint32_t tx_ack_seq_no         : 12; /**< [ 11:  0](RO/H) TX ACK sequence number.
25305                                                                  Indicates next transmit sequence number for transmit TLP. */
25306 #else /* Word 0 - Little Endian */
25307         uint32_t tx_ack_seq_no         : 12; /**< [ 11:  0](RO/H) TX ACK sequence number.
25308                                                                  Indicates next transmit sequence number for transmit TLP. */
25309         uint32_t rx_ack_seq_no         : 12; /**< [ 23: 12](RO/H) RX ACK sequence number.
25310                                                                  Indicates the ack sequence number which is updated by receiving
25311                                                                  ACK/NAK DLLP. */
25312         uint32_t dlcmsm                : 2;  /**< [ 25: 24](RO/H) Indicates the current DLCMSM.
25313                                                                  0x0 = DL_INACTIVE.
25314                                                                  0x1 = DL_FC_INIT.
25315                                                                  0x2 = Reserved.
25316                                                                  0x3 = DL_ACTIVE. */
25317         uint32_t fc_init1              : 1;  /**< [ 26: 26](RO) Indicates the core is in FC_INIT1(VC0) state. */
25318         uint32_t fc_init2              : 1;  /**< [ 27: 27](RO) Indicates the core is in FC_INIT2(VC0) state. */
25319         uint32_t reserved_28_31        : 4;
25320 #endif /* Word 0 - End */
25321     } s;
25322     /* struct bdk_pciercx_ras_sd_statusl2_s cn; */
25323 };
25324 typedef union bdk_pciercx_ras_sd_statusl2 bdk_pciercx_ras_sd_statusl2_t;
25325 
25326 static inline uint64_t BDK_PCIERCX_RAS_SD_STATUSL2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_STATUSL2(unsigned long a)25327 static inline uint64_t BDK_PCIERCX_RAS_SD_STATUSL2(unsigned long a)
25328 {
25329     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25330         return 0x3d4ll + 0x100000000ll * ((a) & 0x3);
25331     __bdk_csr_fatal("PCIERCX_RAS_SD_STATUSL2", 1, a, 0, 0, 0);
25332 }
25333 
25334 #define typedef_BDK_PCIERCX_RAS_SD_STATUSL2(a) bdk_pciercx_ras_sd_statusl2_t
25335 #define bustype_BDK_PCIERCX_RAS_SD_STATUSL2(a) BDK_CSR_TYPE_PCICONFIGRC
25336 #define basename_BDK_PCIERCX_RAS_SD_STATUSL2(a) "PCIERCX_RAS_SD_STATUSL2"
25337 #define busnum_BDK_PCIERCX_RAS_SD_STATUSL2(a) (a)
25338 #define arguments_BDK_PCIERCX_RAS_SD_STATUSL2(a) (a),-1,-1,-1
25339 
25340 /**
25341  * Register (PCICONFIGRC) pcierc#_ras_sd_statusl3
25342  *
25343  * PCIe RC Vendor RAS DES Silicon Debug Status L3 Register
25344  */
25345 union bdk_pciercx_ras_sd_statusl3
25346 {
25347     uint32_t u;
25348     struct bdk_pciercx_ras_sd_statusl3_s
25349     {
25350 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25351         uint32_t reserved_8_31         : 24;
25352         uint32_t mftlp_status          : 1;  /**< [  7:  7](R/W1C) Malformed TLP status.
25353                                                                  Indicates malformed TLP has occurred. */
25354         uint32_t mftlp_ptr             : 7;  /**< [  6:  0](RO) First malformed TLP error pointer.
25355                                                                  Indicates the element of the received first malformed TLP.
25356                                                                  This pointer is validated by [MFTLP_STATUS].
25357                                                                  0x01 = AtomicOp address alignment.
25358                                                                  0x02 = AtomicOp operand.
25359                                                                  0x03 = AtomicOp byte enable.
25360                                                                  0x04 = TLP length miss match.
25361                                                                  0x05 = Max payload size.
25362                                                                  0x06 = Message TLP without TC0.
25363                                                                  0x07 = Invalid TC.
25364                                                                  0x08 = Unexpected route bit in message TLP.
25365                                                                  0x09 = Unexpected CRS status in completion TLP.
25366                                                                  0x0A = Byte enable.
25367                                                                  0x0B = Memory address 4KB boundary.
25368                                                                  0x0C = TLP prefix rules.
25369                                                                  0x0D = Translation request rules.
25370                                                                  0x0E = Invalid TLP type.
25371                                                                  0x0F = Completion rules.
25372                                                                  0x10-0x7E = Reserved.
25373                                                                  0x7F = Application. */
25374 #else /* Word 0 - Little Endian */
25375         uint32_t mftlp_ptr             : 7;  /**< [  6:  0](RO) First malformed TLP error pointer.
25376                                                                  Indicates the element of the received first malformed TLP.
25377                                                                  This pointer is validated by [MFTLP_STATUS].
25378                                                                  0x01 = AtomicOp address alignment.
25379                                                                  0x02 = AtomicOp operand.
25380                                                                  0x03 = AtomicOp byte enable.
25381                                                                  0x04 = TLP length miss match.
25382                                                                  0x05 = Max payload size.
25383                                                                  0x06 = Message TLP without TC0.
25384                                                                  0x07 = Invalid TC.
25385                                                                  0x08 = Unexpected route bit in message TLP.
25386                                                                  0x09 = Unexpected CRS status in completion TLP.
25387                                                                  0x0A = Byte enable.
25388                                                                  0x0B = Memory address 4KB boundary.
25389                                                                  0x0C = TLP prefix rules.
25390                                                                  0x0D = Translation request rules.
25391                                                                  0x0E = Invalid TLP type.
25392                                                                  0x0F = Completion rules.
25393                                                                  0x10-0x7E = Reserved.
25394                                                                  0x7F = Application. */
25395         uint32_t mftlp_status          : 1;  /**< [  7:  7](R/W1C) Malformed TLP status.
25396                                                                  Indicates malformed TLP has occurred. */
25397         uint32_t reserved_8_31         : 24;
25398 #endif /* Word 0 - End */
25399     } s;
25400     /* struct bdk_pciercx_ras_sd_statusl3_s cn; */
25401 };
25402 typedef union bdk_pciercx_ras_sd_statusl3 bdk_pciercx_ras_sd_statusl3_t;
25403 
25404 static inline uint64_t BDK_PCIERCX_RAS_SD_STATUSL3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_STATUSL3(unsigned long a)25405 static inline uint64_t BDK_PCIERCX_RAS_SD_STATUSL3(unsigned long a)
25406 {
25407     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25408         return 0x3dcll + 0x100000000ll * ((a) & 0x3);
25409     __bdk_csr_fatal("PCIERCX_RAS_SD_STATUSL3", 1, a, 0, 0, 0);
25410 }
25411 
25412 #define typedef_BDK_PCIERCX_RAS_SD_STATUSL3(a) bdk_pciercx_ras_sd_statusl3_t
25413 #define bustype_BDK_PCIERCX_RAS_SD_STATUSL3(a) BDK_CSR_TYPE_PCICONFIGRC
25414 #define basename_BDK_PCIERCX_RAS_SD_STATUSL3(a) "PCIERCX_RAS_SD_STATUSL3"
25415 #define busnum_BDK_PCIERCX_RAS_SD_STATUSL3(a) (a)
25416 #define arguments_BDK_PCIERCX_RAS_SD_STATUSL3(a) (a),-1,-1,-1
25417 
25418 /**
25419  * Register (PCICONFIGRC) pcierc#_ras_sd_statusl3fc
25420  *
25421  * PCIe RC Vendor RAS DES Silicon Debug Status L2 Register
25422  */
25423 union bdk_pciercx_ras_sd_statusl3fc
25424 {
25425     uint32_t u;
25426     struct bdk_pciercx_ras_sd_statusl3fc_s
25427     {
25428 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25429         uint32_t credit_data1          : 12; /**< [ 31: 20](RO/H) Credit data 1.
25430                                                                  Current FC credit data selected by the [CREDIT_SEL_VC],
25431                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
25432                                                                  and [CREDIT_SEL_HD] viewport-select fields.
25433                                                                  RX = Credit allocated value.
25434                                                                  TX = Credit limit value. This value is valid when DLCMSM=0x3(DL_ACTIVE). */
25435         uint32_t credit_data0          : 12; /**< [ 19:  8](RO/H) Credit data 0.
25436                                                                  Current FC credit data selected by the [CREDIT_SEL_VC],
25437                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
25438                                                                  and [CREDIT_SEL_HD] viewport-select fields.
25439                                                                  RX = Credit received value.
25440                                                                  TX = Credit consumed value. */
25441         uint32_t reserved_7            : 1;
25442         uint32_t credit_sel_hd         : 1;  /**< [  6:  6](R/W) Credit select (HeaderData).
25443                                                                  This field in conjunction with the [CREDIT_SEL_VC],
25444                                                                  [CREDIT_SEL_CREDIT_TYPE], and
25445                                                                  [CREDIT_SEL_TLP_TYPE] viewport-select fields determines
25446                                                                  that data that is returned by the [CREDIT_DATA0] and
25447                                                                  [CREDIT_DATA1] data fields.
25448                                                                  0x0 = Header credit.
25449                                                                  0x1 = Data credit. */
25450         uint32_t credit_sel_tlp_type   : 2;  /**< [  5:  4](R/W) Credit select (TLP Type).
25451                                                                  This field in conjunction with the [CREDIT_SEL_VC],
25452                                                                  [CREDIT_SEL_CREDIT_TYPE], and [CREDIT_SEL_HD]
25453                                                                  viewport-select fields determines that data that is returned
25454                                                                  by the [CREDIT_DATA0] and [CREDIT_DATA1] data fields.
25455                                                                  0x0 = Posted.
25456                                                                  0x1 = Non-posted.
25457                                                                  0x2 = Completion.
25458                                                                  0x3 = Reserved. */
25459         uint32_t credit_sel_credit_type : 1; /**< [  3:  3](R/W) Credit select (credit type).
25460                                                                  This field in conjunction with the [CREDIT_SEL_VC],
25461                                                                  [CREDIT_SEL_TLP_TYPE], and [CREDIT_SEL_HD] viewport-select
25462                                                                  fields determines that data that is returned by the
25463                                                                  [CREDIT_DATA0] and [CREDIT_DATA1] data fields.
25464                                                                  0x0 = RX.
25465                                                                  0x1 = TX. */
25466         uint32_t credit_sel_vc         : 3;  /**< [  2:  0](R/W) Credit select (VC).
25467                                                                  This field in conjunction with the
25468                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
25469                                                                  and [CREDIT_SEL_HD] viewport-select fields determines that
25470                                                                  data that is returned by the [CREDIT_DATA0] and
25471                                                                  [CREDIT_DATA1] data fields.
25472                                                                  0x0 = VC0.
25473                                                                  0x1 = VC1.
25474                                                                  0x2 = VC2.
25475                                                                  ...
25476                                                                  0x7 = VC7. */
25477 #else /* Word 0 - Little Endian */
25478         uint32_t credit_sel_vc         : 3;  /**< [  2:  0](R/W) Credit select (VC).
25479                                                                  This field in conjunction with the
25480                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
25481                                                                  and [CREDIT_SEL_HD] viewport-select fields determines that
25482                                                                  data that is returned by the [CREDIT_DATA0] and
25483                                                                  [CREDIT_DATA1] data fields.
25484                                                                  0x0 = VC0.
25485                                                                  0x1 = VC1.
25486                                                                  0x2 = VC2.
25487                                                                  ...
25488                                                                  0x7 = VC7. */
25489         uint32_t credit_sel_credit_type : 1; /**< [  3:  3](R/W) Credit select (credit type).
25490                                                                  This field in conjunction with the [CREDIT_SEL_VC],
25491                                                                  [CREDIT_SEL_TLP_TYPE], and [CREDIT_SEL_HD] viewport-select
25492                                                                  fields determines that data that is returned by the
25493                                                                  [CREDIT_DATA0] and [CREDIT_DATA1] data fields.
25494                                                                  0x0 = RX.
25495                                                                  0x1 = TX. */
25496         uint32_t credit_sel_tlp_type   : 2;  /**< [  5:  4](R/W) Credit select (TLP Type).
25497                                                                  This field in conjunction with the [CREDIT_SEL_VC],
25498                                                                  [CREDIT_SEL_CREDIT_TYPE], and [CREDIT_SEL_HD]
25499                                                                  viewport-select fields determines that data that is returned
25500                                                                  by the [CREDIT_DATA0] and [CREDIT_DATA1] data fields.
25501                                                                  0x0 = Posted.
25502                                                                  0x1 = Non-posted.
25503                                                                  0x2 = Completion.
25504                                                                  0x3 = Reserved. */
25505         uint32_t credit_sel_hd         : 1;  /**< [  6:  6](R/W) Credit select (HeaderData).
25506                                                                  This field in conjunction with the [CREDIT_SEL_VC],
25507                                                                  [CREDIT_SEL_CREDIT_TYPE], and
25508                                                                  [CREDIT_SEL_TLP_TYPE] viewport-select fields determines
25509                                                                  that data that is returned by the [CREDIT_DATA0] and
25510                                                                  [CREDIT_DATA1] data fields.
25511                                                                  0x0 = Header credit.
25512                                                                  0x1 = Data credit. */
25513         uint32_t reserved_7            : 1;
25514         uint32_t credit_data0          : 12; /**< [ 19:  8](RO/H) Credit data 0.
25515                                                                  Current FC credit data selected by the [CREDIT_SEL_VC],
25516                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
25517                                                                  and [CREDIT_SEL_HD] viewport-select fields.
25518                                                                  RX = Credit received value.
25519                                                                  TX = Credit consumed value. */
25520         uint32_t credit_data1          : 12; /**< [ 31: 20](RO/H) Credit data 1.
25521                                                                  Current FC credit data selected by the [CREDIT_SEL_VC],
25522                                                                  [CREDIT_SEL_CREDIT_TYPE], [CREDIT_SEL_TLP_TYPE],
25523                                                                  and [CREDIT_SEL_HD] viewport-select fields.
25524                                                                  RX = Credit allocated value.
25525                                                                  TX = Credit limit value. This value is valid when DLCMSM=0x3(DL_ACTIVE). */
25526 #endif /* Word 0 - End */
25527     } s;
25528     /* struct bdk_pciercx_ras_sd_statusl3fc_s cn; */
25529 };
25530 typedef union bdk_pciercx_ras_sd_statusl3fc bdk_pciercx_ras_sd_statusl3fc_t;
25531 
25532 static inline uint64_t BDK_PCIERCX_RAS_SD_STATUSL3FC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_STATUSL3FC(unsigned long a)25533 static inline uint64_t BDK_PCIERCX_RAS_SD_STATUSL3FC(unsigned long a)
25534 {
25535     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25536         return 0x3d8ll + 0x100000000ll * ((a) & 0x3);
25537     __bdk_csr_fatal("PCIERCX_RAS_SD_STATUSL3FC", 1, a, 0, 0, 0);
25538 }
25539 
25540 #define typedef_BDK_PCIERCX_RAS_SD_STATUSL3FC(a) bdk_pciercx_ras_sd_statusl3fc_t
25541 #define bustype_BDK_PCIERCX_RAS_SD_STATUSL3FC(a) BDK_CSR_TYPE_PCICONFIGRC
25542 #define basename_BDK_PCIERCX_RAS_SD_STATUSL3FC(a) "PCIERCX_RAS_SD_STATUSL3FC"
25543 #define busnum_BDK_PCIERCX_RAS_SD_STATUSL3FC(a) (a)
25544 #define arguments_BDK_PCIERCX_RAS_SD_STATUSL3FC(a) (a),-1,-1,-1
25545 
25546 /**
25547  * Register (PCICONFIGRC) pcierc#_ras_sd_statuspm
25548  *
25549  * PCIe RC Vendor RAS DES Silicon Debug Status PM Register
25550  */
25551 union bdk_pciercx_ras_sd_statuspm
25552 {
25553     uint32_t u;
25554     struct bdk_pciercx_ras_sd_statuspm_s
25555     {
25556 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25557         uint32_t reserved_24_31        : 8;
25558         uint32_t latched_nfts          : 8;  /**< [ 23: 16](RO/H) Latched N_FTS.
25559                                                                  Indicates the value of N_FTS in the received TS ordered
25560                                                                  sets from the link partner. */
25561         uint32_t l1sub_state           : 3;  /**< [ 15: 13](RO/H) Indicates the internal L1Sub state machine state.
25562                                                                  Internal:
25563                                                                  0x0 = Idle state.
25564                                                                  0x1 = Wait for aux_clk_active.
25565                                                                  0x2 = Wait for pclkack.
25566                                                                  0x3 = Wait for clkreq.
25567                                                                  0x4 = Check clkreq_in_n is de-asserted for t_power_off time.
25568                                                                  0x5 = L1 substate, turn off txcommonmode circuits (L1.2 only)
25569                                                                       and rx electrical idle detection circuits.
25570                                                                  0x6 = Locally/remotely initiated exit, assert pclkreq, wait for pclkack.
25571                                                                  0x7 = Wait for pclkack when aborting an attempt to enter L1_N. */
25572         uint32_t pme_rsnd_flag         : 1;  /**< [ 12: 12](RO) PME resend flag.
25573                                                                  When the DUT sends a PM_PME message TLP, the DUT
25574                                                                  sets PME_Status bit. If host software does not clear
25575                                                                  PME_Status bit for 100ms (+50%/-5%), the DUT resends the
25576                                                                  PM_PME message. This bit indicates that a PM_PME was
25577                                                                  resent. */
25578         uint32_t int_pm_sstate         : 4;  /**< [ 11:  8](RO/H) Internal PM state (slave).
25579                                                                  Indicates internal state machine of power management
25580                                                                  slave controller.
25581                                                                  0x00 = S_IDLE.
25582                                                                  0x01 = S_RESPOND_NAK.
25583                                                                  0x02 = S_BLOCK_TLP.
25584                                                                  0x03 = S_WAIT_LAST_TLP_ACK.
25585                                                                  0x04 = S_WAIT_EIDLE.
25586                                                                  0x08 = S_LINK_ENTR_L1.
25587                                                                  0x09 = S_L1.
25588                                                                  0x0A = S_L1_EXIT.
25589                                                                  0x0B = S_L23RDY.
25590                                                                  0x0C = S_LINK_ENTR_L23.
25591                                                                  0x0D = S_L23RDY_WAIT4ALIVE.
25592                                                                  0x0F = S_L23RDY_WAIT4IDLE.
25593                                                                  0x10 = S_WAIT_LAST_PMDLLP.
25594                                                                  0x10-0x1F = Reserved. */
25595         uint32_t reserved_5_7          : 3;
25596         uint32_t int_pm_mstate         : 5;  /**< [  4:  0](RO/H) Internal PM state (master).
25597                                                                  Indicates internal state machine of power management
25598                                                                  master controller.
25599                                                                  0x00 = IDLE.
25600                                                                  0x01 = L0.
25601                                                                  0x02 = L0S.
25602                                                                  0x03 = ENTER_L0S.
25603                                                                  0x04 = L0S_EXIT.
25604                                                                  0x08 = L1.
25605                                                                  0x09 = L1_BLOCK_TLP.
25606                                                                  0x0A = L1_WAIT_LAST_TLP_ACK.
25607                                                                  0x0B = L1_WAIT_PMDLLP_ACK.
25608                                                                  0x0C = L1_LINK_ENTR_L1.
25609                                                                  0x0D = L1_EXIT.
25610                                                                  0x0F = PREP_4L1.
25611                                                                  0x10 = L23_BLOCK_TLP.
25612                                                                  0x11 = L23_WAIT_LAST_TLP_ACK.
25613                                                                  0x12 = L23_WAIT_PMDLLP_ACK.
25614                                                                  0x13 = L23_ENTR_L23.
25615                                                                  0x14 = L23RDY.
25616                                                                  0x15 = PREP_4L23.
25617                                                                  0x16 = L23RDY_WAIT4ALIVE.
25618                                                                  0x17 = L0S_BLOCK_TLP.
25619                                                                  0x18 = WAIT_LAST_PMDLLP.
25620                                                                  0x19 = WAIT_DSTATE_UPDATE.
25621                                                                  0x20-0x1F = Reserved. */
25622 #else /* Word 0 - Little Endian */
25623         uint32_t int_pm_mstate         : 5;  /**< [  4:  0](RO/H) Internal PM state (master).
25624                                                                  Indicates internal state machine of power management
25625                                                                  master controller.
25626                                                                  0x00 = IDLE.
25627                                                                  0x01 = L0.
25628                                                                  0x02 = L0S.
25629                                                                  0x03 = ENTER_L0S.
25630                                                                  0x04 = L0S_EXIT.
25631                                                                  0x08 = L1.
25632                                                                  0x09 = L1_BLOCK_TLP.
25633                                                                  0x0A = L1_WAIT_LAST_TLP_ACK.
25634                                                                  0x0B = L1_WAIT_PMDLLP_ACK.
25635                                                                  0x0C = L1_LINK_ENTR_L1.
25636                                                                  0x0D = L1_EXIT.
25637                                                                  0x0F = PREP_4L1.
25638                                                                  0x10 = L23_BLOCK_TLP.
25639                                                                  0x11 = L23_WAIT_LAST_TLP_ACK.
25640                                                                  0x12 = L23_WAIT_PMDLLP_ACK.
25641                                                                  0x13 = L23_ENTR_L23.
25642                                                                  0x14 = L23RDY.
25643                                                                  0x15 = PREP_4L23.
25644                                                                  0x16 = L23RDY_WAIT4ALIVE.
25645                                                                  0x17 = L0S_BLOCK_TLP.
25646                                                                  0x18 = WAIT_LAST_PMDLLP.
25647                                                                  0x19 = WAIT_DSTATE_UPDATE.
25648                                                                  0x20-0x1F = Reserved. */
25649         uint32_t reserved_5_7          : 3;
25650         uint32_t int_pm_sstate         : 4;  /**< [ 11:  8](RO/H) Internal PM state (slave).
25651                                                                  Indicates internal state machine of power management
25652                                                                  slave controller.
25653                                                                  0x00 = S_IDLE.
25654                                                                  0x01 = S_RESPOND_NAK.
25655                                                                  0x02 = S_BLOCK_TLP.
25656                                                                  0x03 = S_WAIT_LAST_TLP_ACK.
25657                                                                  0x04 = S_WAIT_EIDLE.
25658                                                                  0x08 = S_LINK_ENTR_L1.
25659                                                                  0x09 = S_L1.
25660                                                                  0x0A = S_L1_EXIT.
25661                                                                  0x0B = S_L23RDY.
25662                                                                  0x0C = S_LINK_ENTR_L23.
25663                                                                  0x0D = S_L23RDY_WAIT4ALIVE.
25664                                                                  0x0F = S_L23RDY_WAIT4IDLE.
25665                                                                  0x10 = S_WAIT_LAST_PMDLLP.
25666                                                                  0x10-0x1F = Reserved. */
25667         uint32_t pme_rsnd_flag         : 1;  /**< [ 12: 12](RO) PME resend flag.
25668                                                                  When the DUT sends a PM_PME message TLP, the DUT
25669                                                                  sets PME_Status bit. If host software does not clear
25670                                                                  PME_Status bit for 100ms (+50%/-5%), the DUT resends the
25671                                                                  PM_PME message. This bit indicates that a PM_PME was
25672                                                                  resent. */
25673         uint32_t l1sub_state           : 3;  /**< [ 15: 13](RO/H) Indicates the internal L1Sub state machine state.
25674                                                                  Internal:
25675                                                                  0x0 = Idle state.
25676                                                                  0x1 = Wait for aux_clk_active.
25677                                                                  0x2 = Wait for pclkack.
25678                                                                  0x3 = Wait for clkreq.
25679                                                                  0x4 = Check clkreq_in_n is de-asserted for t_power_off time.
25680                                                                  0x5 = L1 substate, turn off txcommonmode circuits (L1.2 only)
25681                                                                       and rx electrical idle detection circuits.
25682                                                                  0x6 = Locally/remotely initiated exit, assert pclkreq, wait for pclkack.
25683                                                                  0x7 = Wait for pclkack when aborting an attempt to enter L1_N. */
25684         uint32_t latched_nfts          : 8;  /**< [ 23: 16](RO/H) Latched N_FTS.
25685                                                                  Indicates the value of N_FTS in the received TS ordered
25686                                                                  sets from the link partner. */
25687         uint32_t reserved_24_31        : 8;
25688 #endif /* Word 0 - End */
25689     } s;
25690     /* struct bdk_pciercx_ras_sd_statuspm_s cn; */
25691 };
25692 typedef union bdk_pciercx_ras_sd_statuspm bdk_pciercx_ras_sd_statuspm_t;
25693 
25694 static inline uint64_t BDK_PCIERCX_RAS_SD_STATUSPM(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_SD_STATUSPM(unsigned long a)25695 static inline uint64_t BDK_PCIERCX_RAS_SD_STATUSPM(unsigned long a)
25696 {
25697     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25698         return 0x3d0ll + 0x100000000ll * ((a) & 0x3);
25699     __bdk_csr_fatal("PCIERCX_RAS_SD_STATUSPM", 1, a, 0, 0, 0);
25700 }
25701 
25702 #define typedef_BDK_PCIERCX_RAS_SD_STATUSPM(a) bdk_pciercx_ras_sd_statuspm_t
25703 #define bustype_BDK_PCIERCX_RAS_SD_STATUSPM(a) BDK_CSR_TYPE_PCICONFIGRC
25704 #define basename_BDK_PCIERCX_RAS_SD_STATUSPM(a) "PCIERCX_RAS_SD_STATUSPM"
25705 #define busnum_BDK_PCIERCX_RAS_SD_STATUSPM(a) (a)
25706 #define arguments_BDK_PCIERCX_RAS_SD_STATUSPM(a) (a),-1,-1,-1
25707 
25708 /**
25709  * Register (PCICONFIGRC) pcierc#_ras_tba_ctl
25710  *
25711  * PCIe RC Vendor RAS DES Time Based Analysis Control Register
25712  */
25713 union bdk_pciercx_ras_tba_ctl
25714 {
25715     uint32_t u;
25716     struct bdk_pciercx_ras_tba_ctl_s
25717     {
25718 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25719         uint32_t tbase_rpt_sel         : 8;  /**< [ 31: 24](R/W) Time-based report select. Selects what type of data is measured for the selected
25720                                                                  duration [TBASE_DUR_SEL]. Data is returned in PCIERC_RAS_TBA_DATA[TBASE_DATA].
25721 
25722                                                                  Each type of data is measured using one of three types of units.
25723 
25724                                                                  Core clock cycles.
25725                                                                  0x0 = Duration of 1 cycle.
25726                                                                  0x1 = TxL0s.
25727                                                                  0x2 = RxL0s.
25728                                                                  0x3 = L0.
25729                                                                  0x4 = L1.
25730                                                                  0x7 = Configuration/recovery.
25731 
25732                                                                  Aux_clk cycles.
25733                                                                  0x5 = L1.1.
25734                                                                  0x6 = L1.2.
25735 
25736                                                                  Data bytes.  Actual amount is 16x value.
25737                                                                  0x20 = TX TLP Bytes.
25738                                                                  0x21 = RX TLP Bytes. */
25739         uint32_t reserved_16_23        : 8;
25740         uint32_t tbase_dur_sel         : 8;  /**< [ 15:  8](R/W) Time-based duration select.  Selects the duration of time-based
25741                                                                  analysis.
25742 
25743                                                                  0x0 = Manual control.  Analysis controlled by [TIMER_START].
25744                                                                  0x1 = 1 ms.
25745                                                                  0x2 = 10 ms.
25746                                                                  0x3 = 100 ms.
25747                                                                  0x4 = 1 s.
25748                                                                  0x5 = 2 s.
25749                                                                  0x6 = 4 s.
25750                                                                  0x7 - 0xF = Reserved. */
25751         uint32_t reserved_1_7          : 7;
25752         uint32_t timer_start           : 1;  /**< [  0:  0](R/W) Timer start.
25753 
25754                                                                  0x0 = Start/restart.
25755                                                                  0x1 = Stop.
25756 
25757                                                                  This bit will be cleared automatically when the measurement is finished. */
25758 #else /* Word 0 - Little Endian */
25759         uint32_t timer_start           : 1;  /**< [  0:  0](R/W) Timer start.
25760 
25761                                                                  0x0 = Start/restart.
25762                                                                  0x1 = Stop.
25763 
25764                                                                  This bit will be cleared automatically when the measurement is finished. */
25765         uint32_t reserved_1_7          : 7;
25766         uint32_t tbase_dur_sel         : 8;  /**< [ 15:  8](R/W) Time-based duration select.  Selects the duration of time-based
25767                                                                  analysis.
25768 
25769                                                                  0x0 = Manual control.  Analysis controlled by [TIMER_START].
25770                                                                  0x1 = 1 ms.
25771                                                                  0x2 = 10 ms.
25772                                                                  0x3 = 100 ms.
25773                                                                  0x4 = 1 s.
25774                                                                  0x5 = 2 s.
25775                                                                  0x6 = 4 s.
25776                                                                  0x7 - 0xF = Reserved. */
25777         uint32_t reserved_16_23        : 8;
25778         uint32_t tbase_rpt_sel         : 8;  /**< [ 31: 24](R/W) Time-based report select. Selects what type of data is measured for the selected
25779                                                                  duration [TBASE_DUR_SEL]. Data is returned in PCIERC_RAS_TBA_DATA[TBASE_DATA].
25780 
25781                                                                  Each type of data is measured using one of three types of units.
25782 
25783                                                                  Core clock cycles.
25784                                                                  0x0 = Duration of 1 cycle.
25785                                                                  0x1 = TxL0s.
25786                                                                  0x2 = RxL0s.
25787                                                                  0x3 = L0.
25788                                                                  0x4 = L1.
25789                                                                  0x7 = Configuration/recovery.
25790 
25791                                                                  Aux_clk cycles.
25792                                                                  0x5 = L1.1.
25793                                                                  0x6 = L1.2.
25794 
25795                                                                  Data bytes.  Actual amount is 16x value.
25796                                                                  0x20 = TX TLP Bytes.
25797                                                                  0x21 = RX TLP Bytes. */
25798 #endif /* Word 0 - End */
25799     } s;
25800     /* struct bdk_pciercx_ras_tba_ctl_s cn; */
25801 };
25802 typedef union bdk_pciercx_ras_tba_ctl bdk_pciercx_ras_tba_ctl_t;
25803 
25804 static inline uint64_t BDK_PCIERCX_RAS_TBA_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_TBA_CTL(unsigned long a)25805 static inline uint64_t BDK_PCIERCX_RAS_TBA_CTL(unsigned long a)
25806 {
25807     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25808         return 0x328ll + 0x100000000ll * ((a) & 0x3);
25809     __bdk_csr_fatal("PCIERCX_RAS_TBA_CTL", 1, a, 0, 0, 0);
25810 }
25811 
25812 #define typedef_BDK_PCIERCX_RAS_TBA_CTL(a) bdk_pciercx_ras_tba_ctl_t
25813 #define bustype_BDK_PCIERCX_RAS_TBA_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
25814 #define basename_BDK_PCIERCX_RAS_TBA_CTL(a) "PCIERCX_RAS_TBA_CTL"
25815 #define busnum_BDK_PCIERCX_RAS_TBA_CTL(a) (a)
25816 #define arguments_BDK_PCIERCX_RAS_TBA_CTL(a) (a),-1,-1,-1
25817 
25818 /**
25819  * Register (PCICONFIGRC) pcierc#_ras_tba_data
25820  *
25821  * PCIe RC Vendor RAS DES Time Based Analysis Data Register
25822  */
25823 union bdk_pciercx_ras_tba_data
25824 {
25825     uint32_t u;
25826     struct bdk_pciercx_ras_tba_data_s
25827     {
25828 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25829         uint32_t tbase_data            : 32; /**< [ 31:  0](RO/H) Time-based analysis data.  This register returns data selected in the
25830                                                                  PCIERC_RAS_TBA_CTL[TBASE_RPT_SEL] field.  The results are cleared when
25831                                                                  the next measurement starts. */
25832 #else /* Word 0 - Little Endian */
25833         uint32_t tbase_data            : 32; /**< [ 31:  0](RO/H) Time-based analysis data.  This register returns data selected in the
25834                                                                  PCIERC_RAS_TBA_CTL[TBASE_RPT_SEL] field.  The results are cleared when
25835                                                                  the next measurement starts. */
25836 #endif /* Word 0 - End */
25837     } s;
25838     /* struct bdk_pciercx_ras_tba_data_s cn; */
25839 };
25840 typedef union bdk_pciercx_ras_tba_data bdk_pciercx_ras_tba_data_t;
25841 
25842 static inline uint64_t BDK_PCIERCX_RAS_TBA_DATA(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RAS_TBA_DATA(unsigned long a)25843 static inline uint64_t BDK_PCIERCX_RAS_TBA_DATA(unsigned long a)
25844 {
25845     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25846         return 0x32cll + 0x100000000ll * ((a) & 0x3);
25847     __bdk_csr_fatal("PCIERCX_RAS_TBA_DATA", 1, a, 0, 0, 0);
25848 }
25849 
25850 #define typedef_BDK_PCIERCX_RAS_TBA_DATA(a) bdk_pciercx_ras_tba_data_t
25851 #define bustype_BDK_PCIERCX_RAS_TBA_DATA(a) BDK_CSR_TYPE_PCICONFIGRC
25852 #define basename_BDK_PCIERCX_RAS_TBA_DATA(a) "PCIERCX_RAS_TBA_DATA"
25853 #define busnum_BDK_PCIERCX_RAS_TBA_DATA(a) (a)
25854 #define arguments_BDK_PCIERCX_RAS_TBA_DATA(a) (a),-1,-1,-1
25855 
25856 /**
25857  * Register (PCICONFIGRC) pcierc#_rasdp_cap_hdr
25858  *
25859  * PCIe RC Vendor RAS Data Path Protection Header Register
25860  */
25861 union bdk_pciercx_rasdp_cap_hdr
25862 {
25863     uint32_t u;
25864     struct bdk_pciercx_rasdp_cap_hdr_s
25865     {
25866 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25867         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
25868                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
25869         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
25870                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
25871         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
25872                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
25873 #else /* Word 0 - Little Endian */
25874         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
25875                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
25876         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
25877                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
25878         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
25879                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
25880 #endif /* Word 0 - End */
25881     } s;
25882     /* struct bdk_pciercx_rasdp_cap_hdr_s cn; */
25883 };
25884 typedef union bdk_pciercx_rasdp_cap_hdr bdk_pciercx_rasdp_cap_hdr_t;
25885 
25886 static inline uint64_t BDK_PCIERCX_RASDP_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_CAP_HDR(unsigned long a)25887 static inline uint64_t BDK_PCIERCX_RASDP_CAP_HDR(unsigned long a)
25888 {
25889     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25890         return 0x418ll + 0x100000000ll * ((a) & 0x3);
25891     __bdk_csr_fatal("PCIERCX_RASDP_CAP_HDR", 1, a, 0, 0, 0);
25892 }
25893 
25894 #define typedef_BDK_PCIERCX_RASDP_CAP_HDR(a) bdk_pciercx_rasdp_cap_hdr_t
25895 #define bustype_BDK_PCIERCX_RASDP_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
25896 #define basename_BDK_PCIERCX_RASDP_CAP_HDR(a) "PCIERCX_RASDP_CAP_HDR"
25897 #define busnum_BDK_PCIERCX_RASDP_CAP_HDR(a) (a)
25898 #define arguments_BDK_PCIERCX_RASDP_CAP_HDR(a) (a),-1,-1,-1
25899 
25900 /**
25901  * Register (PCICONFIGRC) pcierc#_rasdp_ce_ctl
25902  *
25903  * PCIe RC RAS Data Path Correctable Error Control Register
25904  */
25905 union bdk_pciercx_rasdp_ce_ctl
25906 {
25907     uint32_t u;
25908     struct bdk_pciercx_rasdp_ce_ctl_s
25909     {
25910 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25911         uint32_t corr_cnt_sel          : 8;  /**< [ 31: 24](R/W) Counter selection.  This field selects the counter ID (within
25912                                                                  the region defined by [CORR_CNT_SEL_REG]) whose contents
25913                                                                  can be read from PCIERC_RAS_TBA_CTL.  You can
25914                                                                  cycle this field value from 0 to 255 to access all counters. */
25915         uint32_t corr_cnt_sel_reg      : 4;  /**< [ 23: 20](R/W) Selected correctable counter region.
25916                                                                  0x0 = ADM RX path.
25917                                                                  0x1 = Layer 3 RX path.
25918                                                                  0x2 = Layer 2 RX path.
25919                                                                  0x3 = DMA read engine inbound (not supported).
25920                                                                  0x4 = AXI bridge inbound request path (not supported).
25921                                                                  0x5 = AXI bridge inbound completion composer (not supported).
25922                                                                  0x6 = ADM TX path.
25923                                                                  0x7 = Layer 3 TX path.
25924                                                                  0x8 = Layer 2 TX path.
25925                                                                  0x9 = DMA outbound path (not supported).
25926                                                                  0xA = AXI bridge outbound request path (not supported).
25927                                                                  0xB = AXI bridge outbound master completion buffer path (not supported).
25928                                                                  0xC - 0xF = Reserved. */
25929         uint32_t reserved_5_19         : 15;
25930         uint32_t corr_en_cntrs         : 1;  /**< [  4:  4](R/W) Error correction disable for ADM RX path. */
25931         uint32_t reserved_1_3          : 3;
25932         uint32_t ep_dis_l3_rx          : 1;  /**< [  0:  0](R/W1C) Clears all correctable error counters. */
25933 #else /* Word 0 - Little Endian */
25934         uint32_t ep_dis_l3_rx          : 1;  /**< [  0:  0](R/W1C) Clears all correctable error counters. */
25935         uint32_t reserved_1_3          : 3;
25936         uint32_t corr_en_cntrs         : 1;  /**< [  4:  4](R/W) Error correction disable for ADM RX path. */
25937         uint32_t reserved_5_19         : 15;
25938         uint32_t corr_cnt_sel_reg      : 4;  /**< [ 23: 20](R/W) Selected correctable counter region.
25939                                                                  0x0 = ADM RX path.
25940                                                                  0x1 = Layer 3 RX path.
25941                                                                  0x2 = Layer 2 RX path.
25942                                                                  0x3 = DMA read engine inbound (not supported).
25943                                                                  0x4 = AXI bridge inbound request path (not supported).
25944                                                                  0x5 = AXI bridge inbound completion composer (not supported).
25945                                                                  0x6 = ADM TX path.
25946                                                                  0x7 = Layer 3 TX path.
25947                                                                  0x8 = Layer 2 TX path.
25948                                                                  0x9 = DMA outbound path (not supported).
25949                                                                  0xA = AXI bridge outbound request path (not supported).
25950                                                                  0xB = AXI bridge outbound master completion buffer path (not supported).
25951                                                                  0xC - 0xF = Reserved. */
25952         uint32_t corr_cnt_sel          : 8;  /**< [ 31: 24](R/W) Counter selection.  This field selects the counter ID (within
25953                                                                  the region defined by [CORR_CNT_SEL_REG]) whose contents
25954                                                                  can be read from PCIERC_RAS_TBA_CTL.  You can
25955                                                                  cycle this field value from 0 to 255 to access all counters. */
25956 #endif /* Word 0 - End */
25957     } s;
25958     /* struct bdk_pciercx_rasdp_ce_ctl_s cn; */
25959 };
25960 typedef union bdk_pciercx_rasdp_ce_ctl bdk_pciercx_rasdp_ce_ctl_t;
25961 
25962 static inline uint64_t BDK_PCIERCX_RASDP_CE_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_CE_CTL(unsigned long a)25963 static inline uint64_t BDK_PCIERCX_RASDP_CE_CTL(unsigned long a)
25964 {
25965     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
25966         return 0x424ll + 0x100000000ll * ((a) & 0x3);
25967     __bdk_csr_fatal("PCIERCX_RASDP_CE_CTL", 1, a, 0, 0, 0);
25968 }
25969 
25970 #define typedef_BDK_PCIERCX_RASDP_CE_CTL(a) bdk_pciercx_rasdp_ce_ctl_t
25971 #define bustype_BDK_PCIERCX_RASDP_CE_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
25972 #define basename_BDK_PCIERCX_RASDP_CE_CTL(a) "PCIERCX_RASDP_CE_CTL"
25973 #define busnum_BDK_PCIERCX_RASDP_CE_CTL(a) (a)
25974 #define arguments_BDK_PCIERCX_RASDP_CE_CTL(a) (a),-1,-1,-1
25975 
25976 /**
25977  * Register (PCICONFIGRC) pcierc#_rasdp_ce_ictl
25978  *
25979  * PCIe RC RAS Data Correctable Error Injection Control Register
25980  */
25981 union bdk_pciercx_rasdp_ce_ictl
25982 {
25983     uint32_t u;
25984     struct bdk_pciercx_rasdp_ce_ictl_s
25985     {
25986 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
25987         uint32_t reserved_24_31        : 8;
25988         uint32_t err_inj_loc           : 8;  /**< [ 23: 16](R/W) Error injection location.  Selects where error injection takes place.  You
25989                                                                  can cycle this field value from 0 to 255 to access all locations. */
25990         uint32_t err_inj_cnt           : 8;  /**< [ 15:  8](R/W) Error injection count.
25991                                                                  0x0 = errors are injected in every TLP until [ERR_INJ_EN] is cleared.
25992                                                                  0x1 - 0xFF = number of errors injected. */
25993         uint32_t reserved_6_7          : 2;
25994         uint32_t err_inj_type          : 2;  /**< [  5:  4](R/W) Error injection type.
25995                                                                  0x0 = None.
25996                                                                  0x1 = 1-bit.
25997                                                                  0x2 = 2-bit.
25998                                                                  0x3 = Reserved. */
25999         uint32_t reserved_1_3          : 3;
26000         uint32_t err_inj_en            : 1;  /**< [  0:  0](R/W) Error injection global enable.  When set, enables the error
26001                                                                  insertion logic. */
26002 #else /* Word 0 - Little Endian */
26003         uint32_t err_inj_en            : 1;  /**< [  0:  0](R/W) Error injection global enable.  When set, enables the error
26004                                                                  insertion logic. */
26005         uint32_t reserved_1_3          : 3;
26006         uint32_t err_inj_type          : 2;  /**< [  5:  4](R/W) Error injection type.
26007                                                                  0x0 = None.
26008                                                                  0x1 = 1-bit.
26009                                                                  0x2 = 2-bit.
26010                                                                  0x3 = Reserved. */
26011         uint32_t reserved_6_7          : 2;
26012         uint32_t err_inj_cnt           : 8;  /**< [ 15:  8](R/W) Error injection count.
26013                                                                  0x0 = errors are injected in every TLP until [ERR_INJ_EN] is cleared.
26014                                                                  0x1 - 0xFF = number of errors injected. */
26015         uint32_t err_inj_loc           : 8;  /**< [ 23: 16](R/W) Error injection location.  Selects where error injection takes place.  You
26016                                                                  can cycle this field value from 0 to 255 to access all locations. */
26017         uint32_t reserved_24_31        : 8;
26018 #endif /* Word 0 - End */
26019     } s;
26020     /* struct bdk_pciercx_rasdp_ce_ictl_s cn; */
26021 };
26022 typedef union bdk_pciercx_rasdp_ce_ictl bdk_pciercx_rasdp_ce_ictl_t;
26023 
26024 static inline uint64_t BDK_PCIERCX_RASDP_CE_ICTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_CE_ICTL(unsigned long a)26025 static inline uint64_t BDK_PCIERCX_RASDP_CE_ICTL(unsigned long a)
26026 {
26027     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26028         return 0x434ll + 0x100000000ll * ((a) & 0x3);
26029     __bdk_csr_fatal("PCIERCX_RASDP_CE_ICTL", 1, a, 0, 0, 0);
26030 }
26031 
26032 #define typedef_BDK_PCIERCX_RASDP_CE_ICTL(a) bdk_pciercx_rasdp_ce_ictl_t
26033 #define bustype_BDK_PCIERCX_RASDP_CE_ICTL(a) BDK_CSR_TYPE_PCICONFIGRC
26034 #define basename_BDK_PCIERCX_RASDP_CE_ICTL(a) "PCIERCX_RASDP_CE_ICTL"
26035 #define busnum_BDK_PCIERCX_RASDP_CE_ICTL(a) (a)
26036 #define arguments_BDK_PCIERCX_RASDP_CE_ICTL(a) (a),-1,-1,-1
26037 
26038 /**
26039  * Register (PCICONFIGRC) pcierc#_rasdp_ce_loc
26040  *
26041  * PCIe RC RAS Data Correctable Error Location Register
26042  */
26043 union bdk_pciercx_rasdp_ce_loc
26044 {
26045     uint32_t u;
26046     struct bdk_pciercx_rasdp_ce_loc_s
26047     {
26048 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26049         uint32_t loc_last_corr_err     : 8;  /**< [ 31: 24](RO) Location/ID of the last corrected error within the region defined by
26050                                                                  [REG_LAST_CORR_ERR]. */
26051         uint32_t reg_last_corr_err     : 4;  /**< [ 23: 20](RO) Region of last corrected error
26052                                                                  0x0 = ADM RX path.
26053                                                                  0x1 = Layer 3 RX path.
26054                                                                  0x2 = Layer 2 RX path.
26055                                                                  0x3 = DMA inbound path (not supported).
26056                                                                  0x4 = AXI bridge inbound request path (not supported).
26057                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26058                                                                  0x6 = ADM TX path.
26059                                                                  0x7 = Layer 3 TX path.
26060                                                                  0x8 = Layer 2 TX path.
26061                                                                  0x9 = DMA outbound path (not supported).
26062                                                                  0xA = AXI bridge outbound request path (not supported).
26063                                                                  0xB = AXI bridge outbound master completion path (not supported).
26064                                                                  0xC - 0xF = Reserved. */
26065         uint32_t reserved_16_19        : 4;
26066         uint32_t loc_first_corr_err    : 8;  /**< [ 15:  8](RO) Location/ID of the first corrected error within the region defined by
26067                                                                  [REG_FIRST_CORR_ERR]. */
26068         uint32_t reg_first_corr_err    : 4;  /**< [  7:  4](RO) Region of first corrected error
26069                                                                  0x0 = ADM RX path.
26070                                                                  0x1 = Layer 3 RX path.
26071                                                                  0x2 = Layer 2 RX path.
26072                                                                  0x3 = DMA read engine (not supported).
26073                                                                  0x4 = AXI bridge inbound request path (not supported).
26074                                                                  0x5 = AXI bridge inbound completion composer (not supported).
26075                                                                  0x6 = ADM TX path.
26076                                                                  0x7 = Layer 3 TX path.
26077                                                                  0x8 = Layer 2 TX path.
26078                                                                  0x9 = DMA write engine (not supported).
26079                                                                  0xA = AXI bridge outbound request path (not supported).
26080                                                                  0xB = AXI bridge outbound master completion (not supported).
26081                                                                  0xC - 0xF = Reserved. */
26082         uint32_t reserved_0_3          : 4;
26083 #else /* Word 0 - Little Endian */
26084         uint32_t reserved_0_3          : 4;
26085         uint32_t reg_first_corr_err    : 4;  /**< [  7:  4](RO) Region of first corrected error
26086                                                                  0x0 = ADM RX path.
26087                                                                  0x1 = Layer 3 RX path.
26088                                                                  0x2 = Layer 2 RX path.
26089                                                                  0x3 = DMA read engine (not supported).
26090                                                                  0x4 = AXI bridge inbound request path (not supported).
26091                                                                  0x5 = AXI bridge inbound completion composer (not supported).
26092                                                                  0x6 = ADM TX path.
26093                                                                  0x7 = Layer 3 TX path.
26094                                                                  0x8 = Layer 2 TX path.
26095                                                                  0x9 = DMA write engine (not supported).
26096                                                                  0xA = AXI bridge outbound request path (not supported).
26097                                                                  0xB = AXI bridge outbound master completion (not supported).
26098                                                                  0xC - 0xF = Reserved. */
26099         uint32_t loc_first_corr_err    : 8;  /**< [ 15:  8](RO) Location/ID of the first corrected error within the region defined by
26100                                                                  [REG_FIRST_CORR_ERR]. */
26101         uint32_t reserved_16_19        : 4;
26102         uint32_t reg_last_corr_err     : 4;  /**< [ 23: 20](RO) Region of last corrected error
26103                                                                  0x0 = ADM RX path.
26104                                                                  0x1 = Layer 3 RX path.
26105                                                                  0x2 = Layer 2 RX path.
26106                                                                  0x3 = DMA inbound path (not supported).
26107                                                                  0x4 = AXI bridge inbound request path (not supported).
26108                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26109                                                                  0x6 = ADM TX path.
26110                                                                  0x7 = Layer 3 TX path.
26111                                                                  0x8 = Layer 2 TX path.
26112                                                                  0x9 = DMA outbound path (not supported).
26113                                                                  0xA = AXI bridge outbound request path (not supported).
26114                                                                  0xB = AXI bridge outbound master completion path (not supported).
26115                                                                  0xC - 0xF = Reserved. */
26116         uint32_t loc_last_corr_err     : 8;  /**< [ 31: 24](RO) Location/ID of the last corrected error within the region defined by
26117                                                                  [REG_LAST_CORR_ERR]. */
26118 #endif /* Word 0 - End */
26119     } s;
26120     /* struct bdk_pciercx_rasdp_ce_loc_s cn; */
26121 };
26122 typedef union bdk_pciercx_rasdp_ce_loc bdk_pciercx_rasdp_ce_loc_t;
26123 
26124 static inline uint64_t BDK_PCIERCX_RASDP_CE_LOC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_CE_LOC(unsigned long a)26125 static inline uint64_t BDK_PCIERCX_RASDP_CE_LOC(unsigned long a)
26126 {
26127     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26128         return 0x438ll + 0x100000000ll * ((a) & 0x3);
26129     __bdk_csr_fatal("PCIERCX_RASDP_CE_LOC", 1, a, 0, 0, 0);
26130 }
26131 
26132 #define typedef_BDK_PCIERCX_RASDP_CE_LOC(a) bdk_pciercx_rasdp_ce_loc_t
26133 #define bustype_BDK_PCIERCX_RASDP_CE_LOC(a) BDK_CSR_TYPE_PCICONFIGRC
26134 #define basename_BDK_PCIERCX_RASDP_CE_LOC(a) "PCIERCX_RASDP_CE_LOC"
26135 #define busnum_BDK_PCIERCX_RASDP_CE_LOC(a) (a)
26136 #define arguments_BDK_PCIERCX_RASDP_CE_LOC(a) (a),-1,-1,-1
26137 
26138 /**
26139  * Register (PCICONFIGRC) pcierc#_rasdp_ce_rp
26140  *
26141  * PCIe RC RAS Data Path Correctable Error Report Register
26142  */
26143 union bdk_pciercx_rasdp_ce_rp
26144 {
26145     uint32_t u;
26146     struct bdk_pciercx_rasdp_ce_rp_s
26147     {
26148 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26149         uint32_t corr_cnt_sel          : 8;  /**< [ 31: 24](RO/H) Counter selection.  Returns the value set in PCIERC_RASDP_CE_CTL[CORR_CNT_SEL]. */
26150         uint32_t corr_cnt_sel_reg      : 4;  /**< [ 23: 20](RO/H) Selected correctable counter region.
26151                                                                  0x0 = ADM RX path.
26152                                                                  0x1 = Layer 3 RX path.
26153                                                                  0x2 = Layer 2 RX path.
26154                                                                  0x3 = DMA inbound path (not supported).
26155                                                                  0x4 = AXI bridge inbound request path (not supported).
26156                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26157                                                                  0x6 = ADM TX path.
26158                                                                  0x7 = Layer 3 TX path.
26159                                                                  0x8 = Layer 2 TX path.
26160                                                                  0x9 = DMA outbound path (not supported).
26161                                                                  0xA = AXI bridge outbound request path (not supported).
26162                                                                  0xB = AXI bridge outbound master completion (not supported).
26163                                                                  0xC - 0xF = Reserved. */
26164         uint32_t reserved_8_19         : 12;
26165         uint32_t corr_count            : 8;  /**< [  7:  0](RO) Current corrected count for the selected counter. */
26166 #else /* Word 0 - Little Endian */
26167         uint32_t corr_count            : 8;  /**< [  7:  0](RO) Current corrected count for the selected counter. */
26168         uint32_t reserved_8_19         : 12;
26169         uint32_t corr_cnt_sel_reg      : 4;  /**< [ 23: 20](RO/H) Selected correctable counter region.
26170                                                                  0x0 = ADM RX path.
26171                                                                  0x1 = Layer 3 RX path.
26172                                                                  0x2 = Layer 2 RX path.
26173                                                                  0x3 = DMA inbound path (not supported).
26174                                                                  0x4 = AXI bridge inbound request path (not supported).
26175                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26176                                                                  0x6 = ADM TX path.
26177                                                                  0x7 = Layer 3 TX path.
26178                                                                  0x8 = Layer 2 TX path.
26179                                                                  0x9 = DMA outbound path (not supported).
26180                                                                  0xA = AXI bridge outbound request path (not supported).
26181                                                                  0xB = AXI bridge outbound master completion (not supported).
26182                                                                  0xC - 0xF = Reserved. */
26183         uint32_t corr_cnt_sel          : 8;  /**< [ 31: 24](RO/H) Counter selection.  Returns the value set in PCIERC_RASDP_CE_CTL[CORR_CNT_SEL]. */
26184 #endif /* Word 0 - End */
26185     } s;
26186     /* struct bdk_pciercx_rasdp_ce_rp_s cn; */
26187 };
26188 typedef union bdk_pciercx_rasdp_ce_rp bdk_pciercx_rasdp_ce_rp_t;
26189 
26190 static inline uint64_t BDK_PCIERCX_RASDP_CE_RP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_CE_RP(unsigned long a)26191 static inline uint64_t BDK_PCIERCX_RASDP_CE_RP(unsigned long a)
26192 {
26193     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26194         return 0x428ll + 0x100000000ll * ((a) & 0x3);
26195     __bdk_csr_fatal("PCIERCX_RASDP_CE_RP", 1, a, 0, 0, 0);
26196 }
26197 
26198 #define typedef_BDK_PCIERCX_RASDP_CE_RP(a) bdk_pciercx_rasdp_ce_rp_t
26199 #define bustype_BDK_PCIERCX_RASDP_CE_RP(a) BDK_CSR_TYPE_PCICONFIGRC
26200 #define basename_BDK_PCIERCX_RASDP_CE_RP(a) "PCIERCX_RASDP_CE_RP"
26201 #define busnum_BDK_PCIERCX_RASDP_CE_RP(a) (a)
26202 #define arguments_BDK_PCIERCX_RASDP_CE_RP(a) (a),-1,-1,-1
26203 
26204 /**
26205  * Register (PCICONFIGRC) pcierc#_rasdp_de_mc
26206  *
26207  * PCIe RC RAS Data Error Mode Clear Register
26208  */
26209 union bdk_pciercx_rasdp_de_mc
26210 {
26211     uint32_t u;
26212     struct bdk_pciercx_rasdp_de_mc_s
26213     {
26214 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26215         uint32_t reserved_1_31         : 31;
26216         uint32_t err_mode_clr          : 1;  /**< [  0:  0](R/W1C) Set this bit to take the core out of RASDP error mode.  The core will then report
26217                                                                  uncorrectable
26218                                                                  errors (through AER internal error reporting) and also stop nullifying/discarding TLPs. */
26219 #else /* Word 0 - Little Endian */
26220         uint32_t err_mode_clr          : 1;  /**< [  0:  0](R/W1C) Set this bit to take the core out of RASDP error mode.  The core will then report
26221                                                                  uncorrectable
26222                                                                  errors (through AER internal error reporting) and also stop nullifying/discarding TLPs. */
26223         uint32_t reserved_1_31         : 31;
26224 #endif /* Word 0 - End */
26225     } s;
26226     /* struct bdk_pciercx_rasdp_de_mc_s cn; */
26227 };
26228 typedef union bdk_pciercx_rasdp_de_mc bdk_pciercx_rasdp_de_mc_t;
26229 
26230 static inline uint64_t BDK_PCIERCX_RASDP_DE_MC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_DE_MC(unsigned long a)26231 static inline uint64_t BDK_PCIERCX_RASDP_DE_MC(unsigned long a)
26232 {
26233     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26234         return 0x444ll + 0x100000000ll * ((a) & 0x3);
26235     __bdk_csr_fatal("PCIERCX_RASDP_DE_MC", 1, a, 0, 0, 0);
26236 }
26237 
26238 #define typedef_BDK_PCIERCX_RASDP_DE_MC(a) bdk_pciercx_rasdp_de_mc_t
26239 #define bustype_BDK_PCIERCX_RASDP_DE_MC(a) BDK_CSR_TYPE_PCICONFIGRC
26240 #define basename_BDK_PCIERCX_RASDP_DE_MC(a) "PCIERCX_RASDP_DE_MC"
26241 #define busnum_BDK_PCIERCX_RASDP_DE_MC(a) (a)
26242 #define arguments_BDK_PCIERCX_RASDP_DE_MC(a) (a),-1,-1,-1
26243 
26244 /**
26245  * Register (PCICONFIGRC) pcierc#_rasdp_de_me
26246  *
26247  * PCIe RC RAS Data Error Mode Enable Register
26248  */
26249 union bdk_pciercx_rasdp_de_me
26250 {
26251     uint32_t u;
26252     struct bdk_pciercx_rasdp_de_me_s
26253     {
26254 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26255         uint32_t reserved_2_31         : 30;
26256         uint32_t auto_lnk_dn_en        : 1;  /**< [  1:  1](R/W) Set this bit to enable the core to bring the link down when RASDP error mode is entered. */
26257         uint32_t err_mode_en           : 1;  /**< [  0:  0](R/W) Set this bit to enable the core to enter RASDP error mode when it detects an uncorrectable error. */
26258 #else /* Word 0 - Little Endian */
26259         uint32_t err_mode_en           : 1;  /**< [  0:  0](R/W) Set this bit to enable the core to enter RASDP error mode when it detects an uncorrectable error. */
26260         uint32_t auto_lnk_dn_en        : 1;  /**< [  1:  1](R/W) Set this bit to enable the core to bring the link down when RASDP error mode is entered. */
26261         uint32_t reserved_2_31         : 30;
26262 #endif /* Word 0 - End */
26263     } s;
26264     /* struct bdk_pciercx_rasdp_de_me_s cn; */
26265 };
26266 typedef union bdk_pciercx_rasdp_de_me bdk_pciercx_rasdp_de_me_t;
26267 
26268 static inline uint64_t BDK_PCIERCX_RASDP_DE_ME(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_DE_ME(unsigned long a)26269 static inline uint64_t BDK_PCIERCX_RASDP_DE_ME(unsigned long a)
26270 {
26271     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26272         return 0x440ll + 0x100000000ll * ((a) & 0x3);
26273     __bdk_csr_fatal("PCIERCX_RASDP_DE_ME", 1, a, 0, 0, 0);
26274 }
26275 
26276 #define typedef_BDK_PCIERCX_RASDP_DE_ME(a) bdk_pciercx_rasdp_de_me_t
26277 #define bustype_BDK_PCIERCX_RASDP_DE_ME(a) BDK_CSR_TYPE_PCICONFIGRC
26278 #define basename_BDK_PCIERCX_RASDP_DE_ME(a) "PCIERCX_RASDP_DE_ME"
26279 #define busnum_BDK_PCIERCX_RASDP_DE_ME(a) (a)
26280 #define arguments_BDK_PCIERCX_RASDP_DE_ME(a) (a),-1,-1,-1
26281 
26282 /**
26283  * Register (PCICONFIGRC) pcierc#_rasdp_ep_ctl
26284  *
26285  * PCIe RC RAS Data Path Error Protection Control Register
26286  */
26287 union bdk_pciercx_rasdp_ep_ctl
26288 {
26289     uint32_t u;
26290     struct bdk_pciercx_rasdp_ep_ctl_s
26291     {
26292 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26293         uint32_t reserved_23_31        : 9;
26294         uint32_t ep_dis_adm_rx         : 1;  /**< [ 22: 22](R/W) Error correction disable for ADM RX path. */
26295         uint32_t ep_dis_l3_rx          : 1;  /**< [ 21: 21](R/W) Error correction disable for layer 3 RX path. */
26296         uint32_t ep_dis_l2_rx          : 1;  /**< [ 20: 20](R/W) Error correction disable for layer 2 RX path. */
26297         uint32_t ep_dis_dma_rd         : 1;  /**< [ 19: 19](R/W) Error correction disable for DMA read (not supported). */
26298         uint32_t ep_dis_axib_inbr      : 1;  /**< [ 18: 18](R/W) Error correction disable for AXI bridge inbound request path (not supported). */
26299         uint32_t ep_dis_axib_inbc      : 1;  /**< [ 17: 17](R/W) Error correction disable for AXI bridge inbound completion composer (not supported). */
26300         uint32_t ep_dis_rx             : 1;  /**< [ 16: 16](R/W) Global error correction disable for all RX layers. */
26301         uint32_t reserved_7_15         : 9;
26302         uint32_t ep_dis_adm_tx         : 1;  /**< [  6:  6](R/W) Error correction disable for ADM TX path. */
26303         uint32_t ep_dis_l3_tx          : 1;  /**< [  5:  5](R/W) Error correction disable for layer 3 TX path. */
26304         uint32_t ep_dis_l2_tx          : 1;  /**< [  4:  4](R/W) Error correction disable for layer 2 TX path. */
26305         uint32_t ep_dis_dma_wr         : 1;  /**< [  3:  3](R/W) Error correction disable for DMA write (not supported). */
26306         uint32_t ep_dis_axib_outb      : 1;  /**< [  2:  2](R/W) Error correction disable for AXI bridge outbound request path (not supported). */
26307         uint32_t ep_dis_axib_masc      : 1;  /**< [  1:  1](R/W) Error correction disable for AXI bridge master completion buffer (not supported). */
26308         uint32_t ep_dis_tx             : 1;  /**< [  0:  0](R/W) Global error correction disable for all TX layers. */
26309 #else /* Word 0 - Little Endian */
26310         uint32_t ep_dis_tx             : 1;  /**< [  0:  0](R/W) Global error correction disable for all TX layers. */
26311         uint32_t ep_dis_axib_masc      : 1;  /**< [  1:  1](R/W) Error correction disable for AXI bridge master completion buffer (not supported). */
26312         uint32_t ep_dis_axib_outb      : 1;  /**< [  2:  2](R/W) Error correction disable for AXI bridge outbound request path (not supported). */
26313         uint32_t ep_dis_dma_wr         : 1;  /**< [  3:  3](R/W) Error correction disable for DMA write (not supported). */
26314         uint32_t ep_dis_l2_tx          : 1;  /**< [  4:  4](R/W) Error correction disable for layer 2 TX path. */
26315         uint32_t ep_dis_l3_tx          : 1;  /**< [  5:  5](R/W) Error correction disable for layer 3 TX path. */
26316         uint32_t ep_dis_adm_tx         : 1;  /**< [  6:  6](R/W) Error correction disable for ADM TX path. */
26317         uint32_t reserved_7_15         : 9;
26318         uint32_t ep_dis_rx             : 1;  /**< [ 16: 16](R/W) Global error correction disable for all RX layers. */
26319         uint32_t ep_dis_axib_inbc      : 1;  /**< [ 17: 17](R/W) Error correction disable for AXI bridge inbound completion composer (not supported). */
26320         uint32_t ep_dis_axib_inbr      : 1;  /**< [ 18: 18](R/W) Error correction disable for AXI bridge inbound request path (not supported). */
26321         uint32_t ep_dis_dma_rd         : 1;  /**< [ 19: 19](R/W) Error correction disable for DMA read (not supported). */
26322         uint32_t ep_dis_l2_rx          : 1;  /**< [ 20: 20](R/W) Error correction disable for layer 2 RX path. */
26323         uint32_t ep_dis_l3_rx          : 1;  /**< [ 21: 21](R/W) Error correction disable for layer 3 RX path. */
26324         uint32_t ep_dis_adm_rx         : 1;  /**< [ 22: 22](R/W) Error correction disable for ADM RX path. */
26325         uint32_t reserved_23_31        : 9;
26326 #endif /* Word 0 - End */
26327     } s;
26328     /* struct bdk_pciercx_rasdp_ep_ctl_s cn; */
26329 };
26330 typedef union bdk_pciercx_rasdp_ep_ctl bdk_pciercx_rasdp_ep_ctl_t;
26331 
26332 static inline uint64_t BDK_PCIERCX_RASDP_EP_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_EP_CTL(unsigned long a)26333 static inline uint64_t BDK_PCIERCX_RASDP_EP_CTL(unsigned long a)
26334 {
26335     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26336         return 0x420ll + 0x100000000ll * ((a) & 0x3);
26337     __bdk_csr_fatal("PCIERCX_RASDP_EP_CTL", 1, a, 0, 0, 0);
26338 }
26339 
26340 #define typedef_BDK_PCIERCX_RASDP_EP_CTL(a) bdk_pciercx_rasdp_ep_ctl_t
26341 #define bustype_BDK_PCIERCX_RASDP_EP_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
26342 #define basename_BDK_PCIERCX_RASDP_EP_CTL(a) "PCIERCX_RASDP_EP_CTL"
26343 #define busnum_BDK_PCIERCX_RASDP_EP_CTL(a) (a)
26344 #define arguments_BDK_PCIERCX_RASDP_EP_CTL(a) (a),-1,-1,-1
26345 
26346 /**
26347  * Register (PCICONFIGRC) pcierc#_rasdp_hdr
26348  *
26349  * PCIe RC RAS Data Path Extended Capability Register
26350  */
26351 union bdk_pciercx_rasdp_hdr
26352 {
26353     uint32_t u;
26354     struct bdk_pciercx_rasdp_hdr_s
26355     {
26356 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26357         uint32_t vsec_length           : 12; /**< [ 31: 20](RO) VSEC length. */
26358         uint32_t vsec_rev              : 4;  /**< [ 19: 16](RO) Capability version. */
26359         uint32_t vsec_id               : 16; /**< [ 15:  0](RO) VSEC ID. */
26360 #else /* Word 0 - Little Endian */
26361         uint32_t vsec_id               : 16; /**< [ 15:  0](RO) VSEC ID. */
26362         uint32_t vsec_rev              : 4;  /**< [ 19: 16](RO) Capability version. */
26363         uint32_t vsec_length           : 12; /**< [ 31: 20](RO) VSEC length. */
26364 #endif /* Word 0 - End */
26365     } s;
26366     /* struct bdk_pciercx_rasdp_hdr_s cn; */
26367 };
26368 typedef union bdk_pciercx_rasdp_hdr bdk_pciercx_rasdp_hdr_t;
26369 
26370 static inline uint64_t BDK_PCIERCX_RASDP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_HDR(unsigned long a)26371 static inline uint64_t BDK_PCIERCX_RASDP_HDR(unsigned long a)
26372 {
26373     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26374         return 0x41cll + 0x100000000ll * ((a) & 0x3);
26375     __bdk_csr_fatal("PCIERCX_RASDP_HDR", 1, a, 0, 0, 0);
26376 }
26377 
26378 #define typedef_BDK_PCIERCX_RASDP_HDR(a) bdk_pciercx_rasdp_hdr_t
26379 #define bustype_BDK_PCIERCX_RASDP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
26380 #define basename_BDK_PCIERCX_RASDP_HDR(a) "PCIERCX_RASDP_HDR"
26381 #define busnum_BDK_PCIERCX_RASDP_HDR(a) (a)
26382 #define arguments_BDK_PCIERCX_RASDP_HDR(a) (a),-1,-1,-1
26383 
26384 /**
26385  * Register (PCICONFIGRC) pcierc#_rasdp_radr_ce
26386  *
26387  * PCIe RC RAS RAM Address Corrected Error Register
26388  */
26389 union bdk_pciercx_rasdp_radr_ce
26390 {
26391     uint32_t u;
26392     struct bdk_pciercx_rasdp_radr_ce_s
26393     {
26394 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26395         uint32_t ram_idx_corr_err      : 4;  /**< [ 31: 28](RO) RAM index where a corrected error has been detected. */
26396         uint32_t reserved_27           : 1;
26397         uint32_t ram_addr_corr_err     : 27; /**< [ 26:  0](RO) RAM address where a corrected error has been detected. */
26398 #else /* Word 0 - Little Endian */
26399         uint32_t ram_addr_corr_err     : 27; /**< [ 26:  0](RO) RAM address where a corrected error has been detected. */
26400         uint32_t reserved_27           : 1;
26401         uint32_t ram_idx_corr_err      : 4;  /**< [ 31: 28](RO) RAM index where a corrected error has been detected. */
26402 #endif /* Word 0 - End */
26403     } s;
26404     /* struct bdk_pciercx_rasdp_radr_ce_s cn; */
26405 };
26406 typedef union bdk_pciercx_rasdp_radr_ce bdk_pciercx_rasdp_radr_ce_t;
26407 
26408 static inline uint64_t BDK_PCIERCX_RASDP_RADR_CE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_RADR_CE(unsigned long a)26409 static inline uint64_t BDK_PCIERCX_RASDP_RADR_CE(unsigned long a)
26410 {
26411     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26412         return 0x448ll + 0x100000000ll * ((a) & 0x3);
26413     __bdk_csr_fatal("PCIERCX_RASDP_RADR_CE", 1, a, 0, 0, 0);
26414 }
26415 
26416 #define typedef_BDK_PCIERCX_RASDP_RADR_CE(a) bdk_pciercx_rasdp_radr_ce_t
26417 #define bustype_BDK_PCIERCX_RASDP_RADR_CE(a) BDK_CSR_TYPE_PCICONFIGRC
26418 #define basename_BDK_PCIERCX_RASDP_RADR_CE(a) "PCIERCX_RASDP_RADR_CE"
26419 #define busnum_BDK_PCIERCX_RASDP_RADR_CE(a) (a)
26420 #define arguments_BDK_PCIERCX_RASDP_RADR_CE(a) (a),-1,-1,-1
26421 
26422 /**
26423  * Register (PCICONFIGRC) pcierc#_rasdp_radr_uce
26424  *
26425  * PCIe RC RAS RAM Address Uncorrected Error Register
26426  */
26427 union bdk_pciercx_rasdp_radr_uce
26428 {
26429     uint32_t u;
26430     struct bdk_pciercx_rasdp_radr_uce_s
26431     {
26432 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26433         uint32_t ram_idx_ucorr_err     : 4;  /**< [ 31: 28](RO) RAM index where a uncorrected error has been detected. */
26434         uint32_t reserved_27           : 1;
26435         uint32_t ram_addr_ucorr_err    : 27; /**< [ 26:  0](RO) RAM address where a uncorrected error has been detected. */
26436 #else /* Word 0 - Little Endian */
26437         uint32_t ram_addr_ucorr_err    : 27; /**< [ 26:  0](RO) RAM address where a uncorrected error has been detected. */
26438         uint32_t reserved_27           : 1;
26439         uint32_t ram_idx_ucorr_err     : 4;  /**< [ 31: 28](RO) RAM index where a uncorrected error has been detected. */
26440 #endif /* Word 0 - End */
26441     } s;
26442     /* struct bdk_pciercx_rasdp_radr_uce_s cn; */
26443 };
26444 typedef union bdk_pciercx_rasdp_radr_uce bdk_pciercx_rasdp_radr_uce_t;
26445 
26446 static inline uint64_t BDK_PCIERCX_RASDP_RADR_UCE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_RADR_UCE(unsigned long a)26447 static inline uint64_t BDK_PCIERCX_RASDP_RADR_UCE(unsigned long a)
26448 {
26449     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26450         return 0x44cll + 0x100000000ll * ((a) & 0x3);
26451     __bdk_csr_fatal("PCIERCX_RASDP_RADR_UCE", 1, a, 0, 0, 0);
26452 }
26453 
26454 #define typedef_BDK_PCIERCX_RASDP_RADR_UCE(a) bdk_pciercx_rasdp_radr_uce_t
26455 #define bustype_BDK_PCIERCX_RASDP_RADR_UCE(a) BDK_CSR_TYPE_PCICONFIGRC
26456 #define basename_BDK_PCIERCX_RASDP_RADR_UCE(a) "PCIERCX_RASDP_RADR_UCE"
26457 #define busnum_BDK_PCIERCX_RASDP_RADR_UCE(a) (a)
26458 #define arguments_BDK_PCIERCX_RASDP_RADR_UCE(a) (a),-1,-1,-1
26459 
26460 /**
26461  * Register (PCICONFIGRC) pcierc#_rasdp_uce_ctl
26462  *
26463  * PCIe RC RAS Data Path Uncorrectable Error Control Register
26464  */
26465 union bdk_pciercx_rasdp_uce_ctl
26466 {
26467     uint32_t u;
26468     struct bdk_pciercx_rasdp_uce_ctl_s
26469     {
26470 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26471         uint32_t ucorr_cnt_sel         : 8;  /**< [ 31: 24](R/W) Counter selection.  This field selects the counter ID (within
26472                                                                  the region defined by [UCORR_CNT_SEL_REG]) whose contents
26473                                                                  can be read from PCIERC_RAS_TBA_CTL.  You can
26474                                                                  cycle this field value from 0 to 255 to access all counters. */
26475         uint32_t ucorr_cnt_sel_reg     : 4;  /**< [ 23: 20](R/W) Selected correctable counter region.
26476                                                                  0x0 = ADM RX path.
26477                                                                  0x1 = Layer 3 RX path.
26478                                                                  0x2 = Layer 2 RX path.
26479                                                                  0x3 = DMA inbound path (not supported).
26480                                                                  0x4 = AXI bridge inbound request path (not supported).
26481                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26482                                                                  0x6 = ADM TX path.
26483                                                                  0x7 = Layer 3 TX path.
26484                                                                  0x8 = Layer 2 TX path.
26485                                                                  0x9 = DMA outbound path (not supported).
26486                                                                  0xA = AXI bridge outbound request path (not supported).
26487                                                                  0xB = AXI bridge outbound master completion path (not supported).
26488                                                                  0xC - 0xF = Reserved. */
26489         uint32_t reserved_5_19         : 15;
26490         uint32_t ucorr_en_cntrs        : 1;  /**< [  4:  4](R/W) Error correction disable for ADM RX path. */
26491         uint32_t reserved_1_3          : 3;
26492         uint32_t ep_dis_l3_rx          : 1;  /**< [  0:  0](R/W1C) Clears all uncorrectable error counters. */
26493 #else /* Word 0 - Little Endian */
26494         uint32_t ep_dis_l3_rx          : 1;  /**< [  0:  0](R/W1C) Clears all uncorrectable error counters. */
26495         uint32_t reserved_1_3          : 3;
26496         uint32_t ucorr_en_cntrs        : 1;  /**< [  4:  4](R/W) Error correction disable for ADM RX path. */
26497         uint32_t reserved_5_19         : 15;
26498         uint32_t ucorr_cnt_sel_reg     : 4;  /**< [ 23: 20](R/W) Selected correctable counter region.
26499                                                                  0x0 = ADM RX path.
26500                                                                  0x1 = Layer 3 RX path.
26501                                                                  0x2 = Layer 2 RX path.
26502                                                                  0x3 = DMA inbound path (not supported).
26503                                                                  0x4 = AXI bridge inbound request path (not supported).
26504                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26505                                                                  0x6 = ADM TX path.
26506                                                                  0x7 = Layer 3 TX path.
26507                                                                  0x8 = Layer 2 TX path.
26508                                                                  0x9 = DMA outbound path (not supported).
26509                                                                  0xA = AXI bridge outbound request path (not supported).
26510                                                                  0xB = AXI bridge outbound master completion path (not supported).
26511                                                                  0xC - 0xF = Reserved. */
26512         uint32_t ucorr_cnt_sel         : 8;  /**< [ 31: 24](R/W) Counter selection.  This field selects the counter ID (within
26513                                                                  the region defined by [UCORR_CNT_SEL_REG]) whose contents
26514                                                                  can be read from PCIERC_RAS_TBA_CTL.  You can
26515                                                                  cycle this field value from 0 to 255 to access all counters. */
26516 #endif /* Word 0 - End */
26517     } s;
26518     /* struct bdk_pciercx_rasdp_uce_ctl_s cn; */
26519 };
26520 typedef union bdk_pciercx_rasdp_uce_ctl bdk_pciercx_rasdp_uce_ctl_t;
26521 
26522 static inline uint64_t BDK_PCIERCX_RASDP_UCE_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_UCE_CTL(unsigned long a)26523 static inline uint64_t BDK_PCIERCX_RASDP_UCE_CTL(unsigned long a)
26524 {
26525     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26526         return 0x42cll + 0x100000000ll * ((a) & 0x3);
26527     __bdk_csr_fatal("PCIERCX_RASDP_UCE_CTL", 1, a, 0, 0, 0);
26528 }
26529 
26530 #define typedef_BDK_PCIERCX_RASDP_UCE_CTL(a) bdk_pciercx_rasdp_uce_ctl_t
26531 #define bustype_BDK_PCIERCX_RASDP_UCE_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
26532 #define basename_BDK_PCIERCX_RASDP_UCE_CTL(a) "PCIERCX_RASDP_UCE_CTL"
26533 #define busnum_BDK_PCIERCX_RASDP_UCE_CTL(a) (a)
26534 #define arguments_BDK_PCIERCX_RASDP_UCE_CTL(a) (a),-1,-1,-1
26535 
26536 /**
26537  * Register (PCICONFIGRC) pcierc#_rasdp_uce_loc
26538  *
26539  * PCIe RC RAS Data Uncorrectable Error Location Register
26540  */
26541 union bdk_pciercx_rasdp_uce_loc
26542 {
26543     uint32_t u;
26544     struct bdk_pciercx_rasdp_uce_loc_s
26545     {
26546 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26547         uint32_t loc_last_ucorr_err    : 8;  /**< [ 31: 24](RO) Location/ID of the last uncorrected error within the region defined by
26548                                                                  [REG_LAST_UCORR_ERR]. */
26549         uint32_t reg_last_ucorr_err    : 4;  /**< [ 23: 20](RO) Region of last uncorrected error
26550                                                                  0x0 = ADM RX path.
26551                                                                  0x1 = Layer 3 RX path.
26552                                                                  0x2 = Layer 2 RX path.
26553                                                                  0x3 = DMA inbound path (not supported).
26554                                                                  0x4 = AXI bridge inbound request path (not supported).
26555                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26556                                                                  0x6 = ADM TX path.
26557                                                                  0x7 = Layer 3 TX path.
26558                                                                  0x8 = Layer 2 TX path.
26559                                                                  0x9 = DMA outbound path (not supported).
26560                                                                  0xA = AXI bridge outbound request path (not supported).
26561                                                                  0xB = AXI bridge outbound master completion path (not supported).
26562                                                                  0xC - 0xF = Reserved. */
26563         uint32_t reserved_16_19        : 4;
26564         uint32_t loc_first_ucorr_err   : 8;  /**< [ 15:  8](RO) Location/ID of the first uncorrected error within the region defined by
26565                                                                  [REG_FIRST_UCORR_ERR]. */
26566         uint32_t reg_first_ucorr_err   : 4;  /**< [  7:  4](RO) Region of first uncorrected error
26567                                                                  0x0 = ADM RX path.
26568                                                                  0x1 = Layer 3 RX path.
26569                                                                  0x2 = Layer 2 RX path.
26570                                                                  0x3 = DMA inbound path (not supported).
26571                                                                  0x4 = AXI bridge inbound request path (not supported).
26572                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26573                                                                  0x6 = ADM TX path.
26574                                                                  0x7 = Layer 3 TX path.
26575                                                                  0x8 = Layer 2 TX path.
26576                                                                  0x9 = DMA outbound path (not supported).
26577                                                                  0xA = AXI bridge outbound request path (not supported).
26578                                                                  0xB = AXI bridge outbound master completion path (not supported).
26579                                                                  0xC - 0xF = Reserved. */
26580         uint32_t reserved_0_3          : 4;
26581 #else /* Word 0 - Little Endian */
26582         uint32_t reserved_0_3          : 4;
26583         uint32_t reg_first_ucorr_err   : 4;  /**< [  7:  4](RO) Region of first uncorrected error
26584                                                                  0x0 = ADM RX path.
26585                                                                  0x1 = Layer 3 RX path.
26586                                                                  0x2 = Layer 2 RX path.
26587                                                                  0x3 = DMA inbound path (not supported).
26588                                                                  0x4 = AXI bridge inbound request path (not supported).
26589                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26590                                                                  0x6 = ADM TX path.
26591                                                                  0x7 = Layer 3 TX path.
26592                                                                  0x8 = Layer 2 TX path.
26593                                                                  0x9 = DMA outbound path (not supported).
26594                                                                  0xA = AXI bridge outbound request path (not supported).
26595                                                                  0xB = AXI bridge outbound master completion path (not supported).
26596                                                                  0xC - 0xF = Reserved. */
26597         uint32_t loc_first_ucorr_err   : 8;  /**< [ 15:  8](RO) Location/ID of the first uncorrected error within the region defined by
26598                                                                  [REG_FIRST_UCORR_ERR]. */
26599         uint32_t reserved_16_19        : 4;
26600         uint32_t reg_last_ucorr_err    : 4;  /**< [ 23: 20](RO) Region of last uncorrected error
26601                                                                  0x0 = ADM RX path.
26602                                                                  0x1 = Layer 3 RX path.
26603                                                                  0x2 = Layer 2 RX path.
26604                                                                  0x3 = DMA inbound path (not supported).
26605                                                                  0x4 = AXI bridge inbound request path (not supported).
26606                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26607                                                                  0x6 = ADM TX path.
26608                                                                  0x7 = Layer 3 TX path.
26609                                                                  0x8 = Layer 2 TX path.
26610                                                                  0x9 = DMA outbound path (not supported).
26611                                                                  0xA = AXI bridge outbound request path (not supported).
26612                                                                  0xB = AXI bridge outbound master completion path (not supported).
26613                                                                  0xC - 0xF = Reserved. */
26614         uint32_t loc_last_ucorr_err    : 8;  /**< [ 31: 24](RO) Location/ID of the last uncorrected error within the region defined by
26615                                                                  [REG_LAST_UCORR_ERR]. */
26616 #endif /* Word 0 - End */
26617     } s;
26618     /* struct bdk_pciercx_rasdp_uce_loc_s cn; */
26619 };
26620 typedef union bdk_pciercx_rasdp_uce_loc bdk_pciercx_rasdp_uce_loc_t;
26621 
26622 static inline uint64_t BDK_PCIERCX_RASDP_UCE_LOC(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_UCE_LOC(unsigned long a)26623 static inline uint64_t BDK_PCIERCX_RASDP_UCE_LOC(unsigned long a)
26624 {
26625     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26626         return 0x43cll + 0x100000000ll * ((a) & 0x3);
26627     __bdk_csr_fatal("PCIERCX_RASDP_UCE_LOC", 1, a, 0, 0, 0);
26628 }
26629 
26630 #define typedef_BDK_PCIERCX_RASDP_UCE_LOC(a) bdk_pciercx_rasdp_uce_loc_t
26631 #define bustype_BDK_PCIERCX_RASDP_UCE_LOC(a) BDK_CSR_TYPE_PCICONFIGRC
26632 #define basename_BDK_PCIERCX_RASDP_UCE_LOC(a) "PCIERCX_RASDP_UCE_LOC"
26633 #define busnum_BDK_PCIERCX_RASDP_UCE_LOC(a) (a)
26634 #define arguments_BDK_PCIERCX_RASDP_UCE_LOC(a) (a),-1,-1,-1
26635 
26636 /**
26637  * Register (PCICONFIGRC) pcierc#_rasdp_uce_rp
26638  *
26639  * PCIe RC RAS Data Path Uncorrectable Error Report Register
26640  */
26641 union bdk_pciercx_rasdp_uce_rp
26642 {
26643     uint32_t u;
26644     struct bdk_pciercx_rasdp_uce_rp_s
26645     {
26646 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26647         uint32_t ucorr_cnt_sel         : 8;  /**< [ 31: 24](RO/H) Counter selection.  Returns the value set in PCIERC_RASDP_UCE_CTL[UCORR_CNT_SEL]. */
26648         uint32_t ucorr_cnt_sel_reg     : 4;  /**< [ 23: 20](RO/H) Selected correctable counter region.
26649                                                                  0x0 = ADM RX path.
26650                                                                  0x1 = Layer 3 RX path.
26651                                                                  0x2 = Layer 2 RX path.
26652                                                                  0x3 = DMA inbound path (not supported).
26653                                                                  0x4 = AXI bridge inbound request path (not supported).
26654                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26655                                                                  0x6 = ADM TX path.
26656                                                                  0x7 = Layer 3 TX path.
26657                                                                  0x8 = Layer 2 TX path.
26658                                                                  0x9 = DMA outbound path (not supported).
26659                                                                  0xA = AXI bridge outbound request path (not supported).
26660                                                                  0xB = AXI bridge outbound master completion buffer path (not supported).
26661                                                                  0xC - 0xF = Reserved. */
26662         uint32_t reserved_8_19         : 12;
26663         uint32_t ucorr_count           : 8;  /**< [  7:  0](RO) Current uncorrected count for the selected counter. */
26664 #else /* Word 0 - Little Endian */
26665         uint32_t ucorr_count           : 8;  /**< [  7:  0](RO) Current uncorrected count for the selected counter. */
26666         uint32_t reserved_8_19         : 12;
26667         uint32_t ucorr_cnt_sel_reg     : 4;  /**< [ 23: 20](RO/H) Selected correctable counter region.
26668                                                                  0x0 = ADM RX path.
26669                                                                  0x1 = Layer 3 RX path.
26670                                                                  0x2 = Layer 2 RX path.
26671                                                                  0x3 = DMA inbound path (not supported).
26672                                                                  0x4 = AXI bridge inbound request path (not supported).
26673                                                                  0x5 = AXI bridge inbound completion composer path (not supported).
26674                                                                  0x6 = ADM TX path.
26675                                                                  0x7 = Layer 3 TX path.
26676                                                                  0x8 = Layer 2 TX path.
26677                                                                  0x9 = DMA outbound path (not supported).
26678                                                                  0xA = AXI bridge outbound request path (not supported).
26679                                                                  0xB = AXI bridge outbound master completion buffer path (not supported).
26680                                                                  0xC - 0xF = Reserved. */
26681         uint32_t ucorr_cnt_sel         : 8;  /**< [ 31: 24](RO/H) Counter selection.  Returns the value set in PCIERC_RASDP_UCE_CTL[UCORR_CNT_SEL]. */
26682 #endif /* Word 0 - End */
26683     } s;
26684     /* struct bdk_pciercx_rasdp_uce_rp_s cn; */
26685 };
26686 typedef union bdk_pciercx_rasdp_uce_rp bdk_pciercx_rasdp_uce_rp_t;
26687 
26688 static inline uint64_t BDK_PCIERCX_RASDP_UCE_RP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RASDP_UCE_RP(unsigned long a)26689 static inline uint64_t BDK_PCIERCX_RASDP_UCE_RP(unsigned long a)
26690 {
26691     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26692         return 0x430ll + 0x100000000ll * ((a) & 0x3);
26693     __bdk_csr_fatal("PCIERCX_RASDP_UCE_RP", 1, a, 0, 0, 0);
26694 }
26695 
26696 #define typedef_BDK_PCIERCX_RASDP_UCE_RP(a) bdk_pciercx_rasdp_uce_rp_t
26697 #define bustype_BDK_PCIERCX_RASDP_UCE_RP(a) BDK_CSR_TYPE_PCICONFIGRC
26698 #define basename_BDK_PCIERCX_RASDP_UCE_RP(a) "PCIERCX_RASDP_UCE_RP"
26699 #define busnum_BDK_PCIERCX_RASDP_UCE_RP(a) (a)
26700 #define arguments_BDK_PCIERCX_RASDP_UCE_RP(a) (a),-1,-1,-1
26701 
26702 /**
26703  * Register (PCICONFIGRC) pcierc#_rev
26704  *
26705  * PCIe RC Class Code/Revision ID Register
26706  */
26707 union bdk_pciercx_rev
26708 {
26709     uint32_t u;
26710     struct bdk_pciercx_rev_s
26711     {
26712 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26713         uint32_t bcc                   : 8;  /**< [ 31: 24](RO/WRSL) Base class code, writable through PEM()_CFG_WR.
26714                                                                  However, the application must not change this field.
26715                                                                  0x6 = Bridge. */
26716         uint32_t sc                    : 8;  /**< [ 23: 16](RO/WRSL) Subclass code, writable through PEM()_CFG_WR.
26717                                                                  However, the application must not change this field.
26718                                                                  0x4 = PCI-to-PCI. */
26719         uint32_t pi                    : 8;  /**< [ 15:  8](RO/WRSL) Programming interface, writable through PEM()_CFG_WR.
26720                                                                  However, the application must not change this field.
26721                                                                  0x0 = No standard interface. */
26722         uint32_t rid                   : 8;  /**< [  7:  0](RO/WRSL) Revision ID, writable through PEM()_CFG_WR.
26723                                                                  However, the application must not change this field.
26724                                                                  See FUS_FUSE_NUM_E::CHIP_ID() for more information. */
26725 #else /* Word 0 - Little Endian */
26726         uint32_t rid                   : 8;  /**< [  7:  0](RO/WRSL) Revision ID, writable through PEM()_CFG_WR.
26727                                                                  However, the application must not change this field.
26728                                                                  See FUS_FUSE_NUM_E::CHIP_ID() for more information. */
26729         uint32_t pi                    : 8;  /**< [ 15:  8](RO/WRSL) Programming interface, writable through PEM()_CFG_WR.
26730                                                                  However, the application must not change this field.
26731                                                                  0x0 = No standard interface. */
26732         uint32_t sc                    : 8;  /**< [ 23: 16](RO/WRSL) Subclass code, writable through PEM()_CFG_WR.
26733                                                                  However, the application must not change this field.
26734                                                                  0x4 = PCI-to-PCI. */
26735         uint32_t bcc                   : 8;  /**< [ 31: 24](RO/WRSL) Base class code, writable through PEM()_CFG_WR.
26736                                                                  However, the application must not change this field.
26737                                                                  0x6 = Bridge. */
26738 #endif /* Word 0 - End */
26739     } s;
26740     /* struct bdk_pciercx_rev_s cn; */
26741 };
26742 typedef union bdk_pciercx_rev bdk_pciercx_rev_t;
26743 
26744 static inline uint64_t BDK_PCIERCX_REV(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_REV(unsigned long a)26745 static inline uint64_t BDK_PCIERCX_REV(unsigned long a)
26746 {
26747     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26748         return 8ll + 0x100000000ll * ((a) & 0x3);
26749     __bdk_csr_fatal("PCIERCX_REV", 1, a, 0, 0, 0);
26750 }
26751 
26752 #define typedef_BDK_PCIERCX_REV(a) bdk_pciercx_rev_t
26753 #define bustype_BDK_PCIERCX_REV(a) BDK_CSR_TYPE_PCICONFIGRC
26754 #define basename_BDK_PCIERCX_REV(a) "PCIERCX_REV"
26755 #define busnum_BDK_PCIERCX_REV(a) (a)
26756 #define arguments_BDK_PCIERCX_REV(a) (a),-1,-1,-1
26757 
26758 /**
26759  * Register (PCICONFIGRC) pcierc#_root_ctl_cap
26760  *
26761  * PCIe RC Root Control/Root Capabilities Register
26762  */
26763 union bdk_pciercx_root_ctl_cap
26764 {
26765     uint32_t u;
26766     struct bdk_pciercx_root_ctl_cap_s
26767     {
26768 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26769         uint32_t reserved_17_31        : 15;
26770         uint32_t crssv                 : 1;  /**< [ 16: 16](RO) CRS software visibility. Not supported, hardwired to zero. */
26771         uint32_t reserved_5_15         : 11;
26772         uint32_t crssve                : 1;  /**< [  4:  4](RO) CRS software visibility enable. Not supported, hardwired to zero. */
26773         uint32_t pmeie                 : 1;  /**< [  3:  3](R/W) PME interrupt enable. */
26774         uint32_t sefee                 : 1;  /**< [  2:  2](R/W) System error on fatal error enable. */
26775         uint32_t senfee                : 1;  /**< [  1:  1](R/W) System error on nonfatal error enable. */
26776         uint32_t secee                 : 1;  /**< [  0:  0](R/W) System error on correctable error enable. */
26777 #else /* Word 0 - Little Endian */
26778         uint32_t secee                 : 1;  /**< [  0:  0](R/W) System error on correctable error enable. */
26779         uint32_t senfee                : 1;  /**< [  1:  1](R/W) System error on nonfatal error enable. */
26780         uint32_t sefee                 : 1;  /**< [  2:  2](R/W) System error on fatal error enable. */
26781         uint32_t pmeie                 : 1;  /**< [  3:  3](R/W) PME interrupt enable. */
26782         uint32_t crssve                : 1;  /**< [  4:  4](RO) CRS software visibility enable. Not supported, hardwired to zero. */
26783         uint32_t reserved_5_15         : 11;
26784         uint32_t crssv                 : 1;  /**< [ 16: 16](RO) CRS software visibility. Not supported, hardwired to zero. */
26785         uint32_t reserved_17_31        : 15;
26786 #endif /* Word 0 - End */
26787     } s;
26788     /* struct bdk_pciercx_root_ctl_cap_s cn; */
26789 };
26790 typedef union bdk_pciercx_root_ctl_cap bdk_pciercx_root_ctl_cap_t;
26791 
26792 static inline uint64_t BDK_PCIERCX_ROOT_CTL_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ROOT_CTL_CAP(unsigned long a)26793 static inline uint64_t BDK_PCIERCX_ROOT_CTL_CAP(unsigned long a)
26794 {
26795     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26796         return 0x8cll + 0x100000000ll * ((a) & 0x3);
26797     __bdk_csr_fatal("PCIERCX_ROOT_CTL_CAP", 1, a, 0, 0, 0);
26798 }
26799 
26800 #define typedef_BDK_PCIERCX_ROOT_CTL_CAP(a) bdk_pciercx_root_ctl_cap_t
26801 #define bustype_BDK_PCIERCX_ROOT_CTL_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
26802 #define basename_BDK_PCIERCX_ROOT_CTL_CAP(a) "PCIERCX_ROOT_CTL_CAP"
26803 #define busnum_BDK_PCIERCX_ROOT_CTL_CAP(a) (a)
26804 #define arguments_BDK_PCIERCX_ROOT_CTL_CAP(a) (a),-1,-1,-1
26805 
26806 /**
26807  * Register (PCICONFIGRC) pcierc#_root_err_cmd
26808  *
26809  * PCIe RC Root Error Command Register
26810  */
26811 union bdk_pciercx_root_err_cmd
26812 {
26813     uint32_t u;
26814     struct bdk_pciercx_root_err_cmd_s
26815     {
26816 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26817         uint32_t reserved_3_31         : 29;
26818         uint32_t fere                  : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
26819         uint32_t nfere                 : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
26820         uint32_t cere                  : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
26821 #else /* Word 0 - Little Endian */
26822         uint32_t cere                  : 1;  /**< [  0:  0](R/W) Correctable error reporting enable. */
26823         uint32_t nfere                 : 1;  /**< [  1:  1](R/W) Nonfatal error reporting enable. */
26824         uint32_t fere                  : 1;  /**< [  2:  2](R/W) Fatal error reporting enable. */
26825         uint32_t reserved_3_31         : 29;
26826 #endif /* Word 0 - End */
26827     } s;
26828     /* struct bdk_pciercx_root_err_cmd_s cn; */
26829 };
26830 typedef union bdk_pciercx_root_err_cmd bdk_pciercx_root_err_cmd_t;
26831 
26832 static inline uint64_t BDK_PCIERCX_ROOT_ERR_CMD(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ROOT_ERR_CMD(unsigned long a)26833 static inline uint64_t BDK_PCIERCX_ROOT_ERR_CMD(unsigned long a)
26834 {
26835     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26836         return 0x12cll + 0x100000000ll * ((a) & 0x3);
26837     __bdk_csr_fatal("PCIERCX_ROOT_ERR_CMD", 1, a, 0, 0, 0);
26838 }
26839 
26840 #define typedef_BDK_PCIERCX_ROOT_ERR_CMD(a) bdk_pciercx_root_err_cmd_t
26841 #define bustype_BDK_PCIERCX_ROOT_ERR_CMD(a) BDK_CSR_TYPE_PCICONFIGRC
26842 #define basename_BDK_PCIERCX_ROOT_ERR_CMD(a) "PCIERCX_ROOT_ERR_CMD"
26843 #define busnum_BDK_PCIERCX_ROOT_ERR_CMD(a) (a)
26844 #define arguments_BDK_PCIERCX_ROOT_ERR_CMD(a) (a),-1,-1,-1
26845 
26846 /**
26847  * Register (PCICONFIGRC) pcierc#_root_err_stat
26848  *
26849  * PCIe RC Root Error Status Register
26850  */
26851 union bdk_pciercx_root_err_stat
26852 {
26853     uint32_t u;
26854     struct bdk_pciercx_root_err_stat_s
26855     {
26856 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26857         uint32_t aeimn                 : 5;  /**< [ 31: 27](RO/WRSL) Advanced error interrupt message number, writable through
26858                                                                  PEM()_CFG_WR. */
26859         uint32_t reserved_7_26         : 20;
26860         uint32_t femr                  : 1;  /**< [  6:  6](R/W1C/H) Fatal error messages received. */
26861         uint32_t nfemr                 : 1;  /**< [  5:  5](R/W1C/H) Nonfatal error messages received. */
26862         uint32_t fuf                   : 1;  /**< [  4:  4](R/W1C/H) First uncorrectable fatal. */
26863         uint32_t multi_efnfr           : 1;  /**< [  3:  3](R/W1C/H) Multiple ERR_FATAL/NONFATAL received. */
26864         uint32_t efnfr                 : 1;  /**< [  2:  2](R/W1C/H) ERR_FATAL/NONFATAL received. */
26865         uint32_t multi_ecr             : 1;  /**< [  1:  1](R/W1C/H) Multiple ERR_COR received. */
26866         uint32_t ecr                   : 1;  /**< [  0:  0](R/W1C/H) ERR_COR received. */
26867 #else /* Word 0 - Little Endian */
26868         uint32_t ecr                   : 1;  /**< [  0:  0](R/W1C/H) ERR_COR received. */
26869         uint32_t multi_ecr             : 1;  /**< [  1:  1](R/W1C/H) Multiple ERR_COR received. */
26870         uint32_t efnfr                 : 1;  /**< [  2:  2](R/W1C/H) ERR_FATAL/NONFATAL received. */
26871         uint32_t multi_efnfr           : 1;  /**< [  3:  3](R/W1C/H) Multiple ERR_FATAL/NONFATAL received. */
26872         uint32_t fuf                   : 1;  /**< [  4:  4](R/W1C/H) First uncorrectable fatal. */
26873         uint32_t nfemr                 : 1;  /**< [  5:  5](R/W1C/H) Nonfatal error messages received. */
26874         uint32_t femr                  : 1;  /**< [  6:  6](R/W1C/H) Fatal error messages received. */
26875         uint32_t reserved_7_26         : 20;
26876         uint32_t aeimn                 : 5;  /**< [ 31: 27](RO/WRSL) Advanced error interrupt message number, writable through
26877                                                                  PEM()_CFG_WR. */
26878 #endif /* Word 0 - End */
26879     } s;
26880     /* struct bdk_pciercx_root_err_stat_s cn; */
26881 };
26882 typedef union bdk_pciercx_root_err_stat bdk_pciercx_root_err_stat_t;
26883 
26884 static inline uint64_t BDK_PCIERCX_ROOT_ERR_STAT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ROOT_ERR_STAT(unsigned long a)26885 static inline uint64_t BDK_PCIERCX_ROOT_ERR_STAT(unsigned long a)
26886 {
26887     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26888         return 0x130ll + 0x100000000ll * ((a) & 0x3);
26889     __bdk_csr_fatal("PCIERCX_ROOT_ERR_STAT", 1, a, 0, 0, 0);
26890 }
26891 
26892 #define typedef_BDK_PCIERCX_ROOT_ERR_STAT(a) bdk_pciercx_root_err_stat_t
26893 #define bustype_BDK_PCIERCX_ROOT_ERR_STAT(a) BDK_CSR_TYPE_PCICONFIGRC
26894 #define basename_BDK_PCIERCX_ROOT_ERR_STAT(a) "PCIERCX_ROOT_ERR_STAT"
26895 #define busnum_BDK_PCIERCX_ROOT_ERR_STAT(a) (a)
26896 #define arguments_BDK_PCIERCX_ROOT_ERR_STAT(a) (a),-1,-1,-1
26897 
26898 /**
26899  * Register (PCICONFIGRC) pcierc#_root_stat
26900  *
26901  * PCIe RC Root Status Register
26902  */
26903 union bdk_pciercx_root_stat
26904 {
26905     uint32_t u;
26906     struct bdk_pciercx_root_stat_s
26907     {
26908 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26909         uint32_t reserved_18_31        : 14;
26910         uint32_t pme_pend              : 1;  /**< [ 17: 17](RO) PME pending. */
26911         uint32_t pme_stat              : 1;  /**< [ 16: 16](R/W1C/H) PME status. */
26912         uint32_t pme_rid               : 16; /**< [ 15:  0](RO) PME requester ID. */
26913 #else /* Word 0 - Little Endian */
26914         uint32_t pme_rid               : 16; /**< [ 15:  0](RO) PME requester ID. */
26915         uint32_t pme_stat              : 1;  /**< [ 16: 16](R/W1C/H) PME status. */
26916         uint32_t pme_pend              : 1;  /**< [ 17: 17](RO) PME pending. */
26917         uint32_t reserved_18_31        : 14;
26918 #endif /* Word 0 - End */
26919     } s;
26920     /* struct bdk_pciercx_root_stat_s cn; */
26921 };
26922 typedef union bdk_pciercx_root_stat bdk_pciercx_root_stat_t;
26923 
26924 static inline uint64_t BDK_PCIERCX_ROOT_STAT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_ROOT_STAT(unsigned long a)26925 static inline uint64_t BDK_PCIERCX_ROOT_STAT(unsigned long a)
26926 {
26927     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26928         return 0x90ll + 0x100000000ll * ((a) & 0x3);
26929     __bdk_csr_fatal("PCIERCX_ROOT_STAT", 1, a, 0, 0, 0);
26930 }
26931 
26932 #define typedef_BDK_PCIERCX_ROOT_STAT(a) bdk_pciercx_root_stat_t
26933 #define bustype_BDK_PCIERCX_ROOT_STAT(a) BDK_CSR_TYPE_PCICONFIGRC
26934 #define basename_BDK_PCIERCX_ROOT_STAT(a) "PCIERCX_ROOT_STAT"
26935 #define busnum_BDK_PCIERCX_ROOT_STAT(a) (a)
26936 #define arguments_BDK_PCIERCX_ROOT_STAT(a) (a),-1,-1,-1
26937 
26938 /**
26939  * Register (PCICONFIGRC) pcierc#_rx_ser_q_ctrl
26940  *
26941  * PCIe RC Receive Serialization Queue Control Register
26942  */
26943 union bdk_pciercx_rx_ser_q_ctrl
26944 {
26945     uint32_t u;
26946     struct bdk_pciercx_rx_ser_q_ctrl_s
26947     {
26948 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26949         uint32_t qof_prv_en            : 1;  /**< [ 31: 31](R/W) Enable receive serialization queue overflow prevention. */
26950         uint32_t af_thres_sign         : 1;  /**< [ 30: 30](R/W) Almost full threshold adjustment sign. */
26951         uint32_t reserved_28_29        : 2;
26952         uint32_t af_thres_val          : 12; /**< [ 27: 16](R/W) Almost full threshold adjustment value. */
26953         uint32_t af_thres              : 16; /**< [ 15:  0](RO) Current almost full threshold. */
26954 #else /* Word 0 - Little Endian */
26955         uint32_t af_thres              : 16; /**< [ 15:  0](RO) Current almost full threshold. */
26956         uint32_t af_thres_val          : 12; /**< [ 27: 16](R/W) Almost full threshold adjustment value. */
26957         uint32_t reserved_28_29        : 2;
26958         uint32_t af_thres_sign         : 1;  /**< [ 30: 30](R/W) Almost full threshold adjustment sign. */
26959         uint32_t qof_prv_en            : 1;  /**< [ 31: 31](R/W) Enable receive serialization queue overflow prevention. */
26960 #endif /* Word 0 - End */
26961     } s;
26962     /* struct bdk_pciercx_rx_ser_q_ctrl_s cn; */
26963 };
26964 typedef union bdk_pciercx_rx_ser_q_ctrl bdk_pciercx_rx_ser_q_ctrl_t;
26965 
26966 static inline uint64_t BDK_PCIERCX_RX_SER_Q_CTRL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_RX_SER_Q_CTRL(unsigned long a)26967 static inline uint64_t BDK_PCIERCX_RX_SER_Q_CTRL(unsigned long a)
26968 {
26969     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
26970         return 0xc00ll + 0x100000000ll * ((a) & 0x3);
26971     __bdk_csr_fatal("PCIERCX_RX_SER_Q_CTRL", 1, a, 0, 0, 0);
26972 }
26973 
26974 #define typedef_BDK_PCIERCX_RX_SER_Q_CTRL(a) bdk_pciercx_rx_ser_q_ctrl_t
26975 #define bustype_BDK_PCIERCX_RX_SER_Q_CTRL(a) BDK_CSR_TYPE_PCICONFIGRC
26976 #define basename_BDK_PCIERCX_RX_SER_Q_CTRL(a) "PCIERCX_RX_SER_Q_CTRL"
26977 #define busnum_BDK_PCIERCX_RX_SER_Q_CTRL(a) (a)
26978 #define arguments_BDK_PCIERCX_RX_SER_Q_CTRL(a) (a),-1,-1,-1
26979 
26980 /**
26981  * Register (PCICONFIGRC) pcierc#_scap_hdr
26982  *
26983  * PCIe RC PCI Express Secondary Capability (Gen3) Header Register
26984  */
26985 union bdk_pciercx_scap_hdr
26986 {
26987     uint32_t u;
26988     struct bdk_pciercx_scap_hdr_s
26989     {
26990 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
26991         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
26992                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
26993         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
26994                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
26995         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
26996                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
26997 #else /* Word 0 - Little Endian */
26998         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
26999                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27000         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
27001                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27002         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
27003                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27004 #endif /* Word 0 - End */
27005     } s;
27006     /* struct bdk_pciercx_scap_hdr_s cn; */
27007 };
27008 typedef union bdk_pciercx_scap_hdr bdk_pciercx_scap_hdr_t;
27009 
27010 static inline uint64_t BDK_PCIERCX_SCAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_SCAP_HDR(unsigned long a)27011 static inline uint64_t BDK_PCIERCX_SCAP_HDR(unsigned long a)
27012 {
27013     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27014         return 0x178ll + 0x100000000ll * ((a) & 0x3);
27015     __bdk_csr_fatal("PCIERCX_SCAP_HDR", 1, a, 0, 0, 0);
27016 }
27017 
27018 #define typedef_BDK_PCIERCX_SCAP_HDR(a) bdk_pciercx_scap_hdr_t
27019 #define bustype_BDK_PCIERCX_SCAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
27020 #define basename_BDK_PCIERCX_SCAP_HDR(a) "PCIERCX_SCAP_HDR"
27021 #define busnum_BDK_PCIERCX_SCAP_HDR(a) (a)
27022 #define arguments_BDK_PCIERCX_SCAP_HDR(a) (a),-1,-1,-1
27023 
27024 /**
27025  * Register (PCICONFIGRC) pcierc#_ser_num_1
27026  *
27027  * PCIe RC Serial Number 1 Register
27028  */
27029 union bdk_pciercx_ser_num_1
27030 {
27031     uint32_t u;
27032     struct bdk_pciercx_ser_num_1_s
27033     {
27034 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27035         uint32_t dword1                : 32; /**< [ 31:  0](R/W) IEEE 64-bit device serial number (doubleword 1). */
27036 #else /* Word 0 - Little Endian */
27037         uint32_t dword1                : 32; /**< [ 31:  0](R/W) IEEE 64-bit device serial number (doubleword 1). */
27038 #endif /* Word 0 - End */
27039     } s;
27040     /* struct bdk_pciercx_ser_num_1_s cn; */
27041 };
27042 typedef union bdk_pciercx_ser_num_1 bdk_pciercx_ser_num_1_t;
27043 
27044 static inline uint64_t BDK_PCIERCX_SER_NUM_1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_SER_NUM_1(unsigned long a)27045 static inline uint64_t BDK_PCIERCX_SER_NUM_1(unsigned long a)
27046 {
27047     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27048         return 0x14cll + 0x100000000ll * ((a) & 0x3);
27049     __bdk_csr_fatal("PCIERCX_SER_NUM_1", 1, a, 0, 0, 0);
27050 }
27051 
27052 #define typedef_BDK_PCIERCX_SER_NUM_1(a) bdk_pciercx_ser_num_1_t
27053 #define bustype_BDK_PCIERCX_SER_NUM_1(a) BDK_CSR_TYPE_PCICONFIGRC
27054 #define basename_BDK_PCIERCX_SER_NUM_1(a) "PCIERCX_SER_NUM_1"
27055 #define busnum_BDK_PCIERCX_SER_NUM_1(a) (a)
27056 #define arguments_BDK_PCIERCX_SER_NUM_1(a) (a),-1,-1,-1
27057 
27058 /**
27059  * Register (PCICONFIGRC) pcierc#_ser_num_2
27060  *
27061  * PCIe RC Serial Number 2 Register
27062  */
27063 union bdk_pciercx_ser_num_2
27064 {
27065     uint32_t u;
27066     struct bdk_pciercx_ser_num_2_s
27067     {
27068 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27069         uint32_t dword2                : 32; /**< [ 31:  0](R/W) IEEE 64-bit device serial number (doubleword 2). */
27070 #else /* Word 0 - Little Endian */
27071         uint32_t dword2                : 32; /**< [ 31:  0](R/W) IEEE 64-bit device serial number (doubleword 2). */
27072 #endif /* Word 0 - End */
27073     } s;
27074     /* struct bdk_pciercx_ser_num_2_s cn; */
27075 };
27076 typedef union bdk_pciercx_ser_num_2 bdk_pciercx_ser_num_2_t;
27077 
27078 static inline uint64_t BDK_PCIERCX_SER_NUM_2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_SER_NUM_2(unsigned long a)27079 static inline uint64_t BDK_PCIERCX_SER_NUM_2(unsigned long a)
27080 {
27081     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27082         return 0x150ll + 0x100000000ll * ((a) & 0x3);
27083     __bdk_csr_fatal("PCIERCX_SER_NUM_2", 1, a, 0, 0, 0);
27084 }
27085 
27086 #define typedef_BDK_PCIERCX_SER_NUM_2(a) bdk_pciercx_ser_num_2_t
27087 #define bustype_BDK_PCIERCX_SER_NUM_2(a) BDK_CSR_TYPE_PCICONFIGRC
27088 #define basename_BDK_PCIERCX_SER_NUM_2(a) "PCIERCX_SER_NUM_2"
27089 #define busnum_BDK_PCIERCX_SER_NUM_2(a) (a)
27090 #define arguments_BDK_PCIERCX_SER_NUM_2(a) (a),-1,-1,-1
27091 
27092 /**
27093  * Register (PCICONFIGRC) pcierc#_slot_cap
27094  *
27095  * PCIe RC Slot Capabilities Register
27096  */
27097 union bdk_pciercx_slot_cap
27098 {
27099     uint32_t u;
27100     struct bdk_pciercx_slot_cap_s
27101     {
27102 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27103         uint32_t ps_num                : 13; /**< [ 31: 19](RO/WRSL) Physical slot number, writable through PEM()_CFG_WR. */
27104         uint32_t nccs                  : 1;  /**< [ 18: 18](RO/WRSL) No command complete support, writable through PEM()_CFG_WR. However, the application
27105                                                                  must not change this field. */
27106         uint32_t emip                  : 1;  /**< [ 17: 17](RO/WRSL) Electromechanical interlock present, writable through PEM()_CFG_WR. However, the
27107                                                                  application must not change this field. */
27108         uint32_t sp_ls                 : 2;  /**< [ 16: 15](RO/WRSL) Slot power limit scale, writable through PEM()_CFG_WR. */
27109         uint32_t sp_lv                 : 8;  /**< [ 14:  7](RO/WRSL) Slot power limit value, writable through PEM()_CFG_WR. */
27110         uint32_t hp_c                  : 1;  /**< [  6:  6](RO/WRSL) Hot plug capable, writable through PEM()_CFG_WR. However, the application must not
27111                                                                  change this field. */
27112         uint32_t hp_s                  : 1;  /**< [  5:  5](RO/WRSL) Hot plug surprise, writable through PEM()_CFG_WR. However, the application must not
27113                                                                  change this field. */
27114         uint32_t pip                   : 1;  /**< [  4:  4](RO/WRSL) Power indicator present, writable through PEM()_CFG_WR. However, the application must
27115                                                                  not change this field. */
27116         uint32_t aip                   : 1;  /**< [  3:  3](RO/WRSL) Attention indicator present, writable through PEM()_CFG_WR. However, the application
27117                                                                  must not change this field. */
27118         uint32_t mrlsp                 : 1;  /**< [  2:  2](RO/WRSL) MRL sensor present, writable through PEM()_CFG_WR. However, the application must not
27119                                                                  change this field. */
27120         uint32_t pcp                   : 1;  /**< [  1:  1](RO/WRSL) Power controller present, writable through PEM()_CFG_WR. However, the application must
27121                                                                  not change this field. */
27122         uint32_t abp                   : 1;  /**< [  0:  0](RO/WRSL) Attention button present, writable through PEM()_CFG_WR. However, the application must
27123                                                                  not change this field. */
27124 #else /* Word 0 - Little Endian */
27125         uint32_t abp                   : 1;  /**< [  0:  0](RO/WRSL) Attention button present, writable through PEM()_CFG_WR. However, the application must
27126                                                                  not change this field. */
27127         uint32_t pcp                   : 1;  /**< [  1:  1](RO/WRSL) Power controller present, writable through PEM()_CFG_WR. However, the application must
27128                                                                  not change this field. */
27129         uint32_t mrlsp                 : 1;  /**< [  2:  2](RO/WRSL) MRL sensor present, writable through PEM()_CFG_WR. However, the application must not
27130                                                                  change this field. */
27131         uint32_t aip                   : 1;  /**< [  3:  3](RO/WRSL) Attention indicator present, writable through PEM()_CFG_WR. However, the application
27132                                                                  must not change this field. */
27133         uint32_t pip                   : 1;  /**< [  4:  4](RO/WRSL) Power indicator present, writable through PEM()_CFG_WR. However, the application must
27134                                                                  not change this field. */
27135         uint32_t hp_s                  : 1;  /**< [  5:  5](RO/WRSL) Hot plug surprise, writable through PEM()_CFG_WR. However, the application must not
27136                                                                  change this field. */
27137         uint32_t hp_c                  : 1;  /**< [  6:  6](RO/WRSL) Hot plug capable, writable through PEM()_CFG_WR. However, the application must not
27138                                                                  change this field. */
27139         uint32_t sp_lv                 : 8;  /**< [ 14:  7](RO/WRSL) Slot power limit value, writable through PEM()_CFG_WR. */
27140         uint32_t sp_ls                 : 2;  /**< [ 16: 15](RO/WRSL) Slot power limit scale, writable through PEM()_CFG_WR. */
27141         uint32_t emip                  : 1;  /**< [ 17: 17](RO/WRSL) Electromechanical interlock present, writable through PEM()_CFG_WR. However, the
27142                                                                  application must not change this field. */
27143         uint32_t nccs                  : 1;  /**< [ 18: 18](RO/WRSL) No command complete support, writable through PEM()_CFG_WR. However, the application
27144                                                                  must not change this field. */
27145         uint32_t ps_num                : 13; /**< [ 31: 19](RO/WRSL) Physical slot number, writable through PEM()_CFG_WR. */
27146 #endif /* Word 0 - End */
27147     } s;
27148     /* struct bdk_pciercx_slot_cap_s cn; */
27149 };
27150 typedef union bdk_pciercx_slot_cap bdk_pciercx_slot_cap_t;
27151 
27152 static inline uint64_t BDK_PCIERCX_SLOT_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_SLOT_CAP(unsigned long a)27153 static inline uint64_t BDK_PCIERCX_SLOT_CAP(unsigned long a)
27154 {
27155     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27156         return 0x84ll + 0x100000000ll * ((a) & 0x3);
27157     __bdk_csr_fatal("PCIERCX_SLOT_CAP", 1, a, 0, 0, 0);
27158 }
27159 
27160 #define typedef_BDK_PCIERCX_SLOT_CAP(a) bdk_pciercx_slot_cap_t
27161 #define bustype_BDK_PCIERCX_SLOT_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
27162 #define basename_BDK_PCIERCX_SLOT_CAP(a) "PCIERCX_SLOT_CAP"
27163 #define busnum_BDK_PCIERCX_SLOT_CAP(a) (a)
27164 #define arguments_BDK_PCIERCX_SLOT_CAP(a) (a),-1,-1,-1
27165 
27166 /**
27167  * Register (PCICONFIGRC) pcierc#_slot_cap2
27168  *
27169  * PCIe RC Slot Capabilities 2 Register
27170  */
27171 union bdk_pciercx_slot_cap2
27172 {
27173     uint32_t u;
27174     struct bdk_pciercx_slot_cap2_s
27175     {
27176 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27177         uint32_t reserved_0_31         : 32;
27178 #else /* Word 0 - Little Endian */
27179         uint32_t reserved_0_31         : 32;
27180 #endif /* Word 0 - End */
27181     } s;
27182     /* struct bdk_pciercx_slot_cap2_s cn; */
27183 };
27184 typedef union bdk_pciercx_slot_cap2 bdk_pciercx_slot_cap2_t;
27185 
27186 static inline uint64_t BDK_PCIERCX_SLOT_CAP2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_SLOT_CAP2(unsigned long a)27187 static inline uint64_t BDK_PCIERCX_SLOT_CAP2(unsigned long a)
27188 {
27189     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27190         return 0xa4ll + 0x100000000ll * ((a) & 0x3);
27191     __bdk_csr_fatal("PCIERCX_SLOT_CAP2", 1, a, 0, 0, 0);
27192 }
27193 
27194 #define typedef_BDK_PCIERCX_SLOT_CAP2(a) bdk_pciercx_slot_cap2_t
27195 #define bustype_BDK_PCIERCX_SLOT_CAP2(a) BDK_CSR_TYPE_PCICONFIGRC
27196 #define basename_BDK_PCIERCX_SLOT_CAP2(a) "PCIERCX_SLOT_CAP2"
27197 #define busnum_BDK_PCIERCX_SLOT_CAP2(a) (a)
27198 #define arguments_BDK_PCIERCX_SLOT_CAP2(a) (a),-1,-1,-1
27199 
27200 /**
27201  * Register (PCICONFIGRC) pcierc#_slot_ctl
27202  *
27203  * PCIe RC Slot Control/Slot Status Register
27204  */
27205 union bdk_pciercx_slot_ctl
27206 {
27207     uint32_t u;
27208     struct bdk_pciercx_slot_ctl_s
27209     {
27210 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27211         uint32_t reserved_25_31        : 7;
27212         uint32_t dlls_c                : 1;  /**< [ 24: 24](R/W1C/H) Data link layer state changed. */
27213         uint32_t emis                  : 1;  /**< [ 23: 23](RO) Electromechanical interlock status. */
27214         uint32_t pds                   : 1;  /**< [ 22: 22](RO/H) Presence detect state. */
27215         uint32_t mrlss                 : 1;  /**< [ 21: 21](RO) MRL sensor state. */
27216         uint32_t ccint_d               : 1;  /**< [ 20: 20](R/W1C/H) Command completed. */
27217         uint32_t pd_c                  : 1;  /**< [ 19: 19](R/W1C/H) Presence detect changed. */
27218         uint32_t mrls_c                : 1;  /**< [ 18: 18](R/W1C/H) MRL sensor changed. */
27219         uint32_t pf_d                  : 1;  /**< [ 17: 17](R/W1C/H) Power fault detected. */
27220         uint32_t abp_d                 : 1;  /**< [ 16: 16](R/W1C/H) Attention button pressed. */
27221         uint32_t reserved_13_15        : 3;
27222         uint32_t dlls_en               : 1;  /**< [ 12: 12](R/W) Data link layer state changed enable. */
27223         uint32_t emic                  : 1;  /**< [ 11: 11](WO) Electromechanical interlock control. */
27224         uint32_t pcc                   : 1;  /**< [ 10: 10](R/W) Power controller control. */
27225         uint32_t pic                   : 2;  /**< [  9:  8](R/W) Power indicator control. */
27226         uint32_t aic                   : 2;  /**< [  7:  6](R/W) Attention indicator control. */
27227         uint32_t hpint_en              : 1;  /**< [  5:  5](R/W) Hot-plug interrupt enable. */
27228         uint32_t ccint_en              : 1;  /**< [  4:  4](R/W) Command completed interrupt enable. */
27229         uint32_t pd_en                 : 1;  /**< [  3:  3](R/W) Presence detect changed enable. */
27230         uint32_t mrls_en               : 1;  /**< [  2:  2](R/W) MRL sensor changed enable. */
27231         uint32_t pf_en                 : 1;  /**< [  1:  1](R/W) Power fault detected enable. */
27232         uint32_t abp_en                : 1;  /**< [  0:  0](R/W) Attention button pressed enable. */
27233 #else /* Word 0 - Little Endian */
27234         uint32_t abp_en                : 1;  /**< [  0:  0](R/W) Attention button pressed enable. */
27235         uint32_t pf_en                 : 1;  /**< [  1:  1](R/W) Power fault detected enable. */
27236         uint32_t mrls_en               : 1;  /**< [  2:  2](R/W) MRL sensor changed enable. */
27237         uint32_t pd_en                 : 1;  /**< [  3:  3](R/W) Presence detect changed enable. */
27238         uint32_t ccint_en              : 1;  /**< [  4:  4](R/W) Command completed interrupt enable. */
27239         uint32_t hpint_en              : 1;  /**< [  5:  5](R/W) Hot-plug interrupt enable. */
27240         uint32_t aic                   : 2;  /**< [  7:  6](R/W) Attention indicator control. */
27241         uint32_t pic                   : 2;  /**< [  9:  8](R/W) Power indicator control. */
27242         uint32_t pcc                   : 1;  /**< [ 10: 10](R/W) Power controller control. */
27243         uint32_t emic                  : 1;  /**< [ 11: 11](WO) Electromechanical interlock control. */
27244         uint32_t dlls_en               : 1;  /**< [ 12: 12](R/W) Data link layer state changed enable. */
27245         uint32_t reserved_13_15        : 3;
27246         uint32_t abp_d                 : 1;  /**< [ 16: 16](R/W1C/H) Attention button pressed. */
27247         uint32_t pf_d                  : 1;  /**< [ 17: 17](R/W1C/H) Power fault detected. */
27248         uint32_t mrls_c                : 1;  /**< [ 18: 18](R/W1C/H) MRL sensor changed. */
27249         uint32_t pd_c                  : 1;  /**< [ 19: 19](R/W1C/H) Presence detect changed. */
27250         uint32_t ccint_d               : 1;  /**< [ 20: 20](R/W1C/H) Command completed. */
27251         uint32_t mrlss                 : 1;  /**< [ 21: 21](RO) MRL sensor state. */
27252         uint32_t pds                   : 1;  /**< [ 22: 22](RO/H) Presence detect state. */
27253         uint32_t emis                  : 1;  /**< [ 23: 23](RO) Electromechanical interlock status. */
27254         uint32_t dlls_c                : 1;  /**< [ 24: 24](R/W1C/H) Data link layer state changed. */
27255         uint32_t reserved_25_31        : 7;
27256 #endif /* Word 0 - End */
27257     } s;
27258     /* struct bdk_pciercx_slot_ctl_s cn; */
27259 };
27260 typedef union bdk_pciercx_slot_ctl bdk_pciercx_slot_ctl_t;
27261 
27262 static inline uint64_t BDK_PCIERCX_SLOT_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_SLOT_CTL(unsigned long a)27263 static inline uint64_t BDK_PCIERCX_SLOT_CTL(unsigned long a)
27264 {
27265     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27266         return 0x88ll + 0x100000000ll * ((a) & 0x3);
27267     __bdk_csr_fatal("PCIERCX_SLOT_CTL", 1, a, 0, 0, 0);
27268 }
27269 
27270 #define typedef_BDK_PCIERCX_SLOT_CTL(a) bdk_pciercx_slot_ctl_t
27271 #define bustype_BDK_PCIERCX_SLOT_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
27272 #define basename_BDK_PCIERCX_SLOT_CTL(a) "PCIERCX_SLOT_CTL"
27273 #define busnum_BDK_PCIERCX_SLOT_CTL(a) (a)
27274 #define arguments_BDK_PCIERCX_SLOT_CTL(a) (a),-1,-1,-1
27275 
27276 /**
27277  * Register (PCICONFIGRC) pcierc#_slot_ctl_stat2
27278  *
27279  * PCIe RC Slot Control 2 Register/Slot Status 2 Register
27280  */
27281 union bdk_pciercx_slot_ctl_stat2
27282 {
27283     uint32_t u;
27284     struct bdk_pciercx_slot_ctl_stat2_s
27285     {
27286 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27287         uint32_t reserved_0_31         : 32;
27288 #else /* Word 0 - Little Endian */
27289         uint32_t reserved_0_31         : 32;
27290 #endif /* Word 0 - End */
27291     } s;
27292     /* struct bdk_pciercx_slot_ctl_stat2_s cn; */
27293 };
27294 typedef union bdk_pciercx_slot_ctl_stat2 bdk_pciercx_slot_ctl_stat2_t;
27295 
27296 static inline uint64_t BDK_PCIERCX_SLOT_CTL_STAT2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_SLOT_CTL_STAT2(unsigned long a)27297 static inline uint64_t BDK_PCIERCX_SLOT_CTL_STAT2(unsigned long a)
27298 {
27299     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27300         return 0xa8ll + 0x100000000ll * ((a) & 0x3);
27301     __bdk_csr_fatal("PCIERCX_SLOT_CTL_STAT2", 1, a, 0, 0, 0);
27302 }
27303 
27304 #define typedef_BDK_PCIERCX_SLOT_CTL_STAT2(a) bdk_pciercx_slot_ctl_stat2_t
27305 #define bustype_BDK_PCIERCX_SLOT_CTL_STAT2(a) BDK_CSR_TYPE_PCICONFIGRC
27306 #define basename_BDK_PCIERCX_SLOT_CTL_STAT2(a) "PCIERCX_SLOT_CTL_STAT2"
27307 #define busnum_BDK_PCIERCX_SLOT_CTL_STAT2(a) (a)
27308 #define arguments_BDK_PCIERCX_SLOT_CTL_STAT2(a) (a),-1,-1,-1
27309 
27310 /**
27311  * Register (PCICONFIGRC) pcierc#_sn_base
27312  *
27313  * Device Serial Number Extended Capability Header Register
27314  * Device Serial Number Extended Capability Header
27315  */
27316 union bdk_pciercx_sn_base
27317 {
27318     uint32_t u;
27319     struct bdk_pciercx_sn_base_s
27320     {
27321 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27322         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
27323                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27324         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
27325                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27326         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
27327                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27328 #else /* Word 0 - Little Endian */
27329         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
27330                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27331         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
27332                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27333         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
27334                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27335 #endif /* Word 0 - End */
27336     } s;
27337     /* struct bdk_pciercx_sn_base_s cn; */
27338 };
27339 typedef union bdk_pciercx_sn_base bdk_pciercx_sn_base_t;
27340 
27341 static inline uint64_t BDK_PCIERCX_SN_BASE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_SN_BASE(unsigned long a)27342 static inline uint64_t BDK_PCIERCX_SN_BASE(unsigned long a)
27343 {
27344     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27345         return 0x148ll + 0x100000000ll * ((a) & 0x3);
27346     __bdk_csr_fatal("PCIERCX_SN_BASE", 1, a, 0, 0, 0);
27347 }
27348 
27349 #define typedef_BDK_PCIERCX_SN_BASE(a) bdk_pciercx_sn_base_t
27350 #define bustype_BDK_PCIERCX_SN_BASE(a) BDK_CSR_TYPE_PCICONFIGRC
27351 #define basename_BDK_PCIERCX_SN_BASE(a) "PCIERCX_SN_BASE"
27352 #define busnum_BDK_PCIERCX_SN_BASE(a) (a)
27353 #define arguments_BDK_PCIERCX_SN_BASE(a) (a),-1,-1,-1
27354 
27355 /**
27356  * Register (PCICONFIGRC) pcierc#_symb_timer
27357  *
27358  * PCIe RC Symbol Timer/Filter Mask Register 1
27359  */
27360 union bdk_pciercx_symb_timer
27361 {
27362     uint32_t u;
27363     struct bdk_pciercx_symb_timer_s
27364     {
27365 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27366         uint32_t m_cfg0_filt           : 1;  /**< [ 31: 31](R/W) Mask filtering of received configuration requests (RC mode only). */
27367         uint32_t m_io_filt             : 1;  /**< [ 30: 30](R/W) Mask filtering of received I/O requests (RC mode only). */
27368         uint32_t msg_ctrl              : 1;  /**< [ 29: 29](R/W) Message control. The application must not change this field. */
27369         uint32_t m_cpl_ecrc_filt       : 1;  /**< [ 28: 28](R/W) Mask ECRC error filtering for completions. */
27370         uint32_t m_ecrc_filt           : 1;  /**< [ 27: 27](R/W) Mask ECRC error filtering. */
27371         uint32_t m_cpl_len_err         : 1;  /**< [ 26: 26](R/W) Mask length mismatch error for received completions. */
27372         uint32_t m_cpl_attr_err        : 1;  /**< [ 25: 25](R/W) Mask attributes mismatch error for received completions. */
27373         uint32_t m_cpl_tc_err          : 1;  /**< [ 24: 24](R/W) Mask traffic class mismatch error for received completions. */
27374         uint32_t m_cpl_fun_err         : 1;  /**< [ 23: 23](R/W) Mask function mismatch error for received completions. */
27375         uint32_t m_cpl_rid_err         : 1;  /**< [ 22: 22](R/W) Mask requester ID mismatch error for received completions. */
27376         uint32_t m_cpl_tag_err         : 1;  /**< [ 21: 21](R/W) Mask tag error rules for received completions. */
27377         uint32_t m_lk_filt             : 1;  /**< [ 20: 20](R/W) Mask locked request filtering. */
27378         uint32_t m_cfg1_filt           : 1;  /**< [ 19: 19](R/W) Mask type 1 configuration request filtering. */
27379         uint32_t m_bar_match           : 1;  /**< [ 18: 18](R/W) Mask BAR match filtering. */
27380         uint32_t m_pois_filt           : 1;  /**< [ 17: 17](R/W) Mask poisoned TLP filtering. */
27381         uint32_t m_fun                 : 1;  /**< [ 16: 16](R/W) Mask function. */
27382         uint32_t dfcwt                 : 1;  /**< [ 15: 15](R/W) Disable FC watchdog timer. */
27383         uint32_t reserved_11_14        : 4;
27384         uint32_t skpiv                 : 11; /**< [ 10:  0](R/W) SKP interval value.  The number of symbol times to wait
27385                                                                  between transmitting SKP ordered sets. Note that the
27386                                                                  controller actually waits the number of symbol times in this
27387                                                                  register plus one between transmitting SKP ordered sets.
27388 
27389                                                                  This value is not used at Gen3 speed; the skip interval
27390                                                                  is hardcoded to 370 blocks. */
27391 #else /* Word 0 - Little Endian */
27392         uint32_t skpiv                 : 11; /**< [ 10:  0](R/W) SKP interval value.  The number of symbol times to wait
27393                                                                  between transmitting SKP ordered sets. Note that the
27394                                                                  controller actually waits the number of symbol times in this
27395                                                                  register plus one between transmitting SKP ordered sets.
27396 
27397                                                                  This value is not used at Gen3 speed; the skip interval
27398                                                                  is hardcoded to 370 blocks. */
27399         uint32_t reserved_11_14        : 4;
27400         uint32_t dfcwt                 : 1;  /**< [ 15: 15](R/W) Disable FC watchdog timer. */
27401         uint32_t m_fun                 : 1;  /**< [ 16: 16](R/W) Mask function. */
27402         uint32_t m_pois_filt           : 1;  /**< [ 17: 17](R/W) Mask poisoned TLP filtering. */
27403         uint32_t m_bar_match           : 1;  /**< [ 18: 18](R/W) Mask BAR match filtering. */
27404         uint32_t m_cfg1_filt           : 1;  /**< [ 19: 19](R/W) Mask type 1 configuration request filtering. */
27405         uint32_t m_lk_filt             : 1;  /**< [ 20: 20](R/W) Mask locked request filtering. */
27406         uint32_t m_cpl_tag_err         : 1;  /**< [ 21: 21](R/W) Mask tag error rules for received completions. */
27407         uint32_t m_cpl_rid_err         : 1;  /**< [ 22: 22](R/W) Mask requester ID mismatch error for received completions. */
27408         uint32_t m_cpl_fun_err         : 1;  /**< [ 23: 23](R/W) Mask function mismatch error for received completions. */
27409         uint32_t m_cpl_tc_err          : 1;  /**< [ 24: 24](R/W) Mask traffic class mismatch error for received completions. */
27410         uint32_t m_cpl_attr_err        : 1;  /**< [ 25: 25](R/W) Mask attributes mismatch error for received completions. */
27411         uint32_t m_cpl_len_err         : 1;  /**< [ 26: 26](R/W) Mask length mismatch error for received completions. */
27412         uint32_t m_ecrc_filt           : 1;  /**< [ 27: 27](R/W) Mask ECRC error filtering. */
27413         uint32_t m_cpl_ecrc_filt       : 1;  /**< [ 28: 28](R/W) Mask ECRC error filtering for completions. */
27414         uint32_t msg_ctrl              : 1;  /**< [ 29: 29](R/W) Message control. The application must not change this field. */
27415         uint32_t m_io_filt             : 1;  /**< [ 30: 30](R/W) Mask filtering of received I/O requests (RC mode only). */
27416         uint32_t m_cfg0_filt           : 1;  /**< [ 31: 31](R/W) Mask filtering of received configuration requests (RC mode only). */
27417 #endif /* Word 0 - End */
27418     } s;
27419     /* struct bdk_pciercx_symb_timer_s cn; */
27420 };
27421 typedef union bdk_pciercx_symb_timer bdk_pciercx_symb_timer_t;
27422 
27423 static inline uint64_t BDK_PCIERCX_SYMB_TIMER(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_SYMB_TIMER(unsigned long a)27424 static inline uint64_t BDK_PCIERCX_SYMB_TIMER(unsigned long a)
27425 {
27426     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27427         return 0x71cll + 0x100000000ll * ((a) & 0x3);
27428     __bdk_csr_fatal("PCIERCX_SYMB_TIMER", 1, a, 0, 0, 0);
27429 }
27430 
27431 #define typedef_BDK_PCIERCX_SYMB_TIMER(a) bdk_pciercx_symb_timer_t
27432 #define bustype_BDK_PCIERCX_SYMB_TIMER(a) BDK_CSR_TYPE_PCICONFIGRC
27433 #define basename_BDK_PCIERCX_SYMB_TIMER(a) "PCIERCX_SYMB_TIMER"
27434 #define busnum_BDK_PCIERCX_SYMB_TIMER(a) (a)
27435 #define arguments_BDK_PCIERCX_SYMB_TIMER(a) (a),-1,-1,-1
27436 
27437 /**
27438  * Register (PCICONFIGRC) pcierc#_timer_ctl
27439  *
27440  * PCIe RC PF Timer Control and Max Function Number Register
27441  */
27442 union bdk_pciercx_timer_ctl
27443 {
27444     uint32_t u;
27445     struct bdk_pciercx_timer_ctl_s
27446     {
27447 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27448         uint32_t reserved_31           : 1;
27449         uint32_t flmsf                 : 2;  /**< [ 30: 29](R/W) Fast link timer scaling factor. Sets the scaling factor of
27450                                                                  LTSSM timer when PCIERC_PORT_CTL[FLM] is set.
27451                                                                  0x0 = Scaling factor is 1024 (1 ms is 1 us).
27452                                                                  0x1 = Scaling factor is 256 (1 ms is 4 us).
27453                                                                  0x2 = Scaling factor is 64 (1 ms is 16 us).
27454                                                                  0x3 = Scaling factor is 16 (1 ms is 64 us). */
27455         uint32_t updft                 : 5;  /**< [ 28: 24](R/W) Update frequency timer.  This is an internally reserved field, do not use. */
27456         uint32_t tmanlt                : 5;  /**< [ 23: 19](R/W) Timer modifier for ACK/NAK latency timer. Increases the timer value for the ACK/NAK
27457                                                                  latency timer, in increments of 64 clock cycles. */
27458         uint32_t tmrt                  : 5;  /**< [ 18: 14](R/W/H) Timer modifier for replay timer. Increases the timer value for the replay timer, in
27459                                                                  increments of 64 clock cycles. */
27460         uint32_t reserved_8_13         : 6;
27461         uint32_t mfuncn                : 8;  /**< [  7:  0](R/W/H) Max number of functions supported.
27462 
27463                                                                  Reset values:
27464                                                                  _ UPEM:      0xf.
27465                                                                  _ BPEM:      0x1. */
27466 #else /* Word 0 - Little Endian */
27467         uint32_t mfuncn                : 8;  /**< [  7:  0](R/W/H) Max number of functions supported.
27468 
27469                                                                  Reset values:
27470                                                                  _ UPEM:      0xf.
27471                                                                  _ BPEM:      0x1. */
27472         uint32_t reserved_8_13         : 6;
27473         uint32_t tmrt                  : 5;  /**< [ 18: 14](R/W/H) Timer modifier for replay timer. Increases the timer value for the replay timer, in
27474                                                                  increments of 64 clock cycles. */
27475         uint32_t tmanlt                : 5;  /**< [ 23: 19](R/W) Timer modifier for ACK/NAK latency timer. Increases the timer value for the ACK/NAK
27476                                                                  latency timer, in increments of 64 clock cycles. */
27477         uint32_t updft                 : 5;  /**< [ 28: 24](R/W) Update frequency timer.  This is an internally reserved field, do not use. */
27478         uint32_t flmsf                 : 2;  /**< [ 30: 29](R/W) Fast link timer scaling factor. Sets the scaling factor of
27479                                                                  LTSSM timer when PCIERC_PORT_CTL[FLM] is set.
27480                                                                  0x0 = Scaling factor is 1024 (1 ms is 1 us).
27481                                                                  0x1 = Scaling factor is 256 (1 ms is 4 us).
27482                                                                  0x2 = Scaling factor is 64 (1 ms is 16 us).
27483                                                                  0x3 = Scaling factor is 16 (1 ms is 64 us). */
27484         uint32_t reserved_31           : 1;
27485 #endif /* Word 0 - End */
27486     } s;
27487     /* struct bdk_pciercx_timer_ctl_s cn; */
27488 };
27489 typedef union bdk_pciercx_timer_ctl bdk_pciercx_timer_ctl_t;
27490 
27491 static inline uint64_t BDK_PCIERCX_TIMER_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TIMER_CTL(unsigned long a)27492 static inline uint64_t BDK_PCIERCX_TIMER_CTL(unsigned long a)
27493 {
27494     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27495         return 0x718ll + 0x100000000ll * ((a) & 0x3);
27496     __bdk_csr_fatal("PCIERCX_TIMER_CTL", 1, a, 0, 0, 0);
27497 }
27498 
27499 #define typedef_BDK_PCIERCX_TIMER_CTL(a) bdk_pciercx_timer_ctl_t
27500 #define bustype_BDK_PCIERCX_TIMER_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
27501 #define basename_BDK_PCIERCX_TIMER_CTL(a) "PCIERCX_TIMER_CTL"
27502 #define busnum_BDK_PCIERCX_TIMER_CTL(a) (a)
27503 #define arguments_BDK_PCIERCX_TIMER_CTL(a) (a),-1,-1,-1
27504 
27505 /**
27506  * Register (PCICONFIGRC) pcierc#_tlp_plog1
27507  *
27508  * PCIe RC TLP Prefix Log Register 1
27509  * PCIe RC TLP Prefix Log Register 1
27510  */
27511 union bdk_pciercx_tlp_plog1
27512 {
27513     uint32_t u;
27514     struct bdk_pciercx_tlp_plog1_s
27515     {
27516 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27517         uint32_t dword1                : 32; /**< [ 31:  0](RO) TLP Prefix log register (first DWORD). */
27518 #else /* Word 0 - Little Endian */
27519         uint32_t dword1                : 32; /**< [ 31:  0](RO) TLP Prefix log register (first DWORD). */
27520 #endif /* Word 0 - End */
27521     } s;
27522     /* struct bdk_pciercx_tlp_plog1_s cn; */
27523 };
27524 typedef union bdk_pciercx_tlp_plog1 bdk_pciercx_tlp_plog1_t;
27525 
27526 static inline uint64_t BDK_PCIERCX_TLP_PLOG1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TLP_PLOG1(unsigned long a)27527 static inline uint64_t BDK_PCIERCX_TLP_PLOG1(unsigned long a)
27528 {
27529     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27530         return 0x138ll + 0x100000000ll * ((a) & 0x3);
27531     __bdk_csr_fatal("PCIERCX_TLP_PLOG1", 1, a, 0, 0, 0);
27532 }
27533 
27534 #define typedef_BDK_PCIERCX_TLP_PLOG1(a) bdk_pciercx_tlp_plog1_t
27535 #define bustype_BDK_PCIERCX_TLP_PLOG1(a) BDK_CSR_TYPE_PCICONFIGRC
27536 #define basename_BDK_PCIERCX_TLP_PLOG1(a) "PCIERCX_TLP_PLOG1"
27537 #define busnum_BDK_PCIERCX_TLP_PLOG1(a) (a)
27538 #define arguments_BDK_PCIERCX_TLP_PLOG1(a) (a),-1,-1,-1
27539 
27540 /**
27541  * Register (PCICONFIGRC) pcierc#_tlp_plog2
27542  *
27543  * PCIe RC TLP Prefix Log Register 2
27544  * PCIe RC TLP Prefix Log Register 2
27545  */
27546 union bdk_pciercx_tlp_plog2
27547 {
27548     uint32_t u;
27549     struct bdk_pciercx_tlp_plog2_s
27550     {
27551 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27552         uint32_t dword2                : 32; /**< [ 31:  0](RO) TLP Prefix log register (second DWORD). */
27553 #else /* Word 0 - Little Endian */
27554         uint32_t dword2                : 32; /**< [ 31:  0](RO) TLP Prefix log register (second DWORD). */
27555 #endif /* Word 0 - End */
27556     } s;
27557     /* struct bdk_pciercx_tlp_plog2_s cn; */
27558 };
27559 typedef union bdk_pciercx_tlp_plog2 bdk_pciercx_tlp_plog2_t;
27560 
27561 static inline uint64_t BDK_PCIERCX_TLP_PLOG2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TLP_PLOG2(unsigned long a)27562 static inline uint64_t BDK_PCIERCX_TLP_PLOG2(unsigned long a)
27563 {
27564     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27565         return 0x13cll + 0x100000000ll * ((a) & 0x3);
27566     __bdk_csr_fatal("PCIERCX_TLP_PLOG2", 1, a, 0, 0, 0);
27567 }
27568 
27569 #define typedef_BDK_PCIERCX_TLP_PLOG2(a) bdk_pciercx_tlp_plog2_t
27570 #define bustype_BDK_PCIERCX_TLP_PLOG2(a) BDK_CSR_TYPE_PCICONFIGRC
27571 #define basename_BDK_PCIERCX_TLP_PLOG2(a) "PCIERCX_TLP_PLOG2"
27572 #define busnum_BDK_PCIERCX_TLP_PLOG2(a) (a)
27573 #define arguments_BDK_PCIERCX_TLP_PLOG2(a) (a),-1,-1,-1
27574 
27575 /**
27576  * Register (PCICONFIGRC) pcierc#_tlp_plog3
27577  *
27578  * PCIe RC TLP Prefix Log Register 3
27579  * PCIe RC TLP Prefix Log Register 3
27580  */
27581 union bdk_pciercx_tlp_plog3
27582 {
27583     uint32_t u;
27584     struct bdk_pciercx_tlp_plog3_s
27585     {
27586 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27587         uint32_t dword3                : 32; /**< [ 31:  0](RO) TLP Prefix log register (third DWORD). */
27588 #else /* Word 0 - Little Endian */
27589         uint32_t dword3                : 32; /**< [ 31:  0](RO) TLP Prefix log register (third DWORD). */
27590 #endif /* Word 0 - End */
27591     } s;
27592     /* struct bdk_pciercx_tlp_plog3_s cn; */
27593 };
27594 typedef union bdk_pciercx_tlp_plog3 bdk_pciercx_tlp_plog3_t;
27595 
27596 static inline uint64_t BDK_PCIERCX_TLP_PLOG3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TLP_PLOG3(unsigned long a)27597 static inline uint64_t BDK_PCIERCX_TLP_PLOG3(unsigned long a)
27598 {
27599     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27600         return 0x140ll + 0x100000000ll * ((a) & 0x3);
27601     __bdk_csr_fatal("PCIERCX_TLP_PLOG3", 1, a, 0, 0, 0);
27602 }
27603 
27604 #define typedef_BDK_PCIERCX_TLP_PLOG3(a) bdk_pciercx_tlp_plog3_t
27605 #define bustype_BDK_PCIERCX_TLP_PLOG3(a) BDK_CSR_TYPE_PCICONFIGRC
27606 #define basename_BDK_PCIERCX_TLP_PLOG3(a) "PCIERCX_TLP_PLOG3"
27607 #define busnum_BDK_PCIERCX_TLP_PLOG3(a) (a)
27608 #define arguments_BDK_PCIERCX_TLP_PLOG3(a) (a),-1,-1,-1
27609 
27610 /**
27611  * Register (PCICONFIGRC) pcierc#_tlp_plog4
27612  *
27613  * PCIe RC TLP Prefix Log Register 4
27614  * PCIe RC TLP Prefix Log Register 4
27615  */
27616 union bdk_pciercx_tlp_plog4
27617 {
27618     uint32_t u;
27619     struct bdk_pciercx_tlp_plog4_s
27620     {
27621 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27622         uint32_t dword4                : 32; /**< [ 31:  0](RO) TLP Prefix log register (fourth DWORD). */
27623 #else /* Word 0 - Little Endian */
27624         uint32_t dword4                : 32; /**< [ 31:  0](RO) TLP Prefix log register (fourth DWORD). */
27625 #endif /* Word 0 - End */
27626     } s;
27627     /* struct bdk_pciercx_tlp_plog4_s cn; */
27628 };
27629 typedef union bdk_pciercx_tlp_plog4 bdk_pciercx_tlp_plog4_t;
27630 
27631 static inline uint64_t BDK_PCIERCX_TLP_PLOG4(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TLP_PLOG4(unsigned long a)27632 static inline uint64_t BDK_PCIERCX_TLP_PLOG4(unsigned long a)
27633 {
27634     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27635         return 0x144ll + 0x100000000ll * ((a) & 0x3);
27636     __bdk_csr_fatal("PCIERCX_TLP_PLOG4", 1, a, 0, 0, 0);
27637 }
27638 
27639 #define typedef_BDK_PCIERCX_TLP_PLOG4(a) bdk_pciercx_tlp_plog4_t
27640 #define bustype_BDK_PCIERCX_TLP_PLOG4(a) BDK_CSR_TYPE_PCICONFIGRC
27641 #define basename_BDK_PCIERCX_TLP_PLOG4(a) "PCIERCX_TLP_PLOG4"
27642 #define busnum_BDK_PCIERCX_TLP_PLOG4(a) (a)
27643 #define arguments_BDK_PCIERCX_TLP_PLOG4(a) (a),-1,-1,-1
27644 
27645 /**
27646  * Register (PCICONFIGRC) pcierc#_tph_ext_cap_hdr
27647  *
27648  * PCIe RC TPH Extended Capability Header Register
27649  */
27650 union bdk_pciercx_tph_ext_cap_hdr
27651 {
27652     uint32_t u;
27653     struct bdk_pciercx_tph_ext_cap_hdr_s
27654     {
27655 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27656         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
27657                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27658         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
27659                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27660         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
27661                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27662 #else /* Word 0 - Little Endian */
27663         uint32_t pcieec                : 16; /**< [ 15:  0](RO/WRSL) PCI Express extended capability.
27664                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27665         uint32_t cv                    : 4;  /**< [ 19: 16](RO/WRSL) Capability version.
27666                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27667         uint32_t nco                   : 12; /**< [ 31: 20](RO/WRSL) Next capability offset.
27668                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
27669 #endif /* Word 0 - End */
27670     } s;
27671     /* struct bdk_pciercx_tph_ext_cap_hdr_s cn; */
27672 };
27673 typedef union bdk_pciercx_tph_ext_cap_hdr bdk_pciercx_tph_ext_cap_hdr_t;
27674 
27675 static inline uint64_t BDK_PCIERCX_TPH_EXT_CAP_HDR(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TPH_EXT_CAP_HDR(unsigned long a)27676 static inline uint64_t BDK_PCIERCX_TPH_EXT_CAP_HDR(unsigned long a)
27677 {
27678     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27679         return 0x260ll + 0x100000000ll * ((a) & 0x3);
27680     __bdk_csr_fatal("PCIERCX_TPH_EXT_CAP_HDR", 1, a, 0, 0, 0);
27681 }
27682 
27683 #define typedef_BDK_PCIERCX_TPH_EXT_CAP_HDR(a) bdk_pciercx_tph_ext_cap_hdr_t
27684 #define bustype_BDK_PCIERCX_TPH_EXT_CAP_HDR(a) BDK_CSR_TYPE_PCICONFIGRC
27685 #define basename_BDK_PCIERCX_TPH_EXT_CAP_HDR(a) "PCIERCX_TPH_EXT_CAP_HDR"
27686 #define busnum_BDK_PCIERCX_TPH_EXT_CAP_HDR(a) (a)
27687 #define arguments_BDK_PCIERCX_TPH_EXT_CAP_HDR(a) (a),-1,-1,-1
27688 
27689 /**
27690  * Register (PCICONFIGRC) pcierc#_tph_req_cap
27691  *
27692  * PCIe RC TPH Requestor Capability Register
27693  */
27694 union bdk_pciercx_tph_req_cap
27695 {
27696     uint32_t u;
27697     struct bdk_pciercx_tph_req_cap_s
27698     {
27699 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27700         uint32_t reserved_27_31        : 5;
27701         uint32_t st_tbl_size           : 11; /**< [ 26: 16](RO/WRSL) ST table size. */
27702         uint32_t reserved_11_15        : 5;
27703         uint32_t st_tbl_l1             : 1;  /**< [ 10: 10](RO/WRSL) Steering tag table bit 1. */
27704         uint32_t st_tbl_l0             : 1;  /**< [  9:  9](RO/WRSL) Steering tag table bit 0. */
27705         uint32_t ext                   : 1;  /**< [  8:  8](RO/WRSL) Extended TPH requester supported.
27706                                                                  This field is writable through PEM()_CFG_WR. However, Extended TPH requester
27707                                                                  is not supported. Therefore, the application must not write any value
27708                                                                  other than 0x0 to this field. */
27709         uint32_t reserved_3_7          : 5;
27710         uint32_t dev_sms               : 1;  /**< [  2:  2](RO/WRSL) Device specific mode supported. */
27711         uint32_t ivms                  : 1;  /**< [  1:  1](RO/WRSL) Interrupt vector mode supported. */
27712         uint32_t nsms                  : 1;  /**< [  0:  0](RO) No ST mode supported. */
27713 #else /* Word 0 - Little Endian */
27714         uint32_t nsms                  : 1;  /**< [  0:  0](RO) No ST mode supported. */
27715         uint32_t ivms                  : 1;  /**< [  1:  1](RO/WRSL) Interrupt vector mode supported. */
27716         uint32_t dev_sms               : 1;  /**< [  2:  2](RO/WRSL) Device specific mode supported. */
27717         uint32_t reserved_3_7          : 5;
27718         uint32_t ext                   : 1;  /**< [  8:  8](RO/WRSL) Extended TPH requester supported.
27719                                                                  This field is writable through PEM()_CFG_WR. However, Extended TPH requester
27720                                                                  is not supported. Therefore, the application must not write any value
27721                                                                  other than 0x0 to this field. */
27722         uint32_t st_tbl_l0             : 1;  /**< [  9:  9](RO/WRSL) Steering tag table bit 0. */
27723         uint32_t st_tbl_l1             : 1;  /**< [ 10: 10](RO/WRSL) Steering tag table bit 1. */
27724         uint32_t reserved_11_15        : 5;
27725         uint32_t st_tbl_size           : 11; /**< [ 26: 16](RO/WRSL) ST table size. */
27726         uint32_t reserved_27_31        : 5;
27727 #endif /* Word 0 - End */
27728     } s;
27729     /* struct bdk_pciercx_tph_req_cap_s cn; */
27730 };
27731 typedef union bdk_pciercx_tph_req_cap bdk_pciercx_tph_req_cap_t;
27732 
27733 static inline uint64_t BDK_PCIERCX_TPH_REQ_CAP(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TPH_REQ_CAP(unsigned long a)27734 static inline uint64_t BDK_PCIERCX_TPH_REQ_CAP(unsigned long a)
27735 {
27736     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27737         return 0x264ll + 0x100000000ll * ((a) & 0x3);
27738     __bdk_csr_fatal("PCIERCX_TPH_REQ_CAP", 1, a, 0, 0, 0);
27739 }
27740 
27741 #define typedef_BDK_PCIERCX_TPH_REQ_CAP(a) bdk_pciercx_tph_req_cap_t
27742 #define bustype_BDK_PCIERCX_TPH_REQ_CAP(a) BDK_CSR_TYPE_PCICONFIGRC
27743 #define basename_BDK_PCIERCX_TPH_REQ_CAP(a) "PCIERCX_TPH_REQ_CAP"
27744 #define busnum_BDK_PCIERCX_TPH_REQ_CAP(a) (a)
27745 #define arguments_BDK_PCIERCX_TPH_REQ_CAP(a) (a),-1,-1,-1
27746 
27747 /**
27748  * Register (PCICONFIGRC) pcierc#_tph_req_ctl
27749  *
27750  * PCIe RC TPH Requestor Control Register
27751  */
27752 union bdk_pciercx_tph_req_ctl
27753 {
27754     uint32_t u;
27755     struct bdk_pciercx_tph_req_ctl_s
27756     {
27757 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27758         uint32_t reserved_10_31        : 22;
27759         uint32_t en                    : 2;  /**< [  9:  8](R/W) TPH requestor enable. */
27760         uint32_t reserved_3_7          : 5;
27761         uint32_t msel                  : 3;  /**< [  2:  0](R/W) ST mode select. */
27762 #else /* Word 0 - Little Endian */
27763         uint32_t msel                  : 3;  /**< [  2:  0](R/W) ST mode select. */
27764         uint32_t reserved_3_7          : 5;
27765         uint32_t en                    : 2;  /**< [  9:  8](R/W) TPH requestor enable. */
27766         uint32_t reserved_10_31        : 22;
27767 #endif /* Word 0 - End */
27768     } s;
27769     /* struct bdk_pciercx_tph_req_ctl_s cn; */
27770 };
27771 typedef union bdk_pciercx_tph_req_ctl bdk_pciercx_tph_req_ctl_t;
27772 
27773 static inline uint64_t BDK_PCIERCX_TPH_REQ_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TPH_REQ_CTL(unsigned long a)27774 static inline uint64_t BDK_PCIERCX_TPH_REQ_CTL(unsigned long a)
27775 {
27776     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27777         return 0x268ll + 0x100000000ll * ((a) & 0x3);
27778     __bdk_csr_fatal("PCIERCX_TPH_REQ_CTL", 1, a, 0, 0, 0);
27779 }
27780 
27781 #define typedef_BDK_PCIERCX_TPH_REQ_CTL(a) bdk_pciercx_tph_req_ctl_t
27782 #define bustype_BDK_PCIERCX_TPH_REQ_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
27783 #define basename_BDK_PCIERCX_TPH_REQ_CTL(a) "PCIERCX_TPH_REQ_CTL"
27784 #define busnum_BDK_PCIERCX_TPH_REQ_CTL(a) (a)
27785 #define arguments_BDK_PCIERCX_TPH_REQ_CTL(a) (a),-1,-1,-1
27786 
27787 /**
27788  * Register (PCICONFIGRC) pcierc#_tph_st_table0
27789  *
27790  * PCIe RC TPH St Table Register 0
27791  */
27792 union bdk_pciercx_tph_st_table0
27793 {
27794     uint32_t u;
27795     struct bdk_pciercx_tph_st_table0_s
27796     {
27797 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27798         uint32_t reserved_16_31        : 16;
27799         uint32_t ubyte                 : 8;  /**< [ 15:  8](RO) ST table 0 upper byte. */
27800         uint32_t lbyte                 : 8;  /**< [  7:  0](RO) ST table 0 lower byte. */
27801 #else /* Word 0 - Little Endian */
27802         uint32_t lbyte                 : 8;  /**< [  7:  0](RO) ST table 0 lower byte. */
27803         uint32_t ubyte                 : 8;  /**< [ 15:  8](RO) ST table 0 upper byte. */
27804         uint32_t reserved_16_31        : 16;
27805 #endif /* Word 0 - End */
27806     } s;
27807     /* struct bdk_pciercx_tph_st_table0_s cn; */
27808 };
27809 typedef union bdk_pciercx_tph_st_table0 bdk_pciercx_tph_st_table0_t;
27810 
27811 static inline uint64_t BDK_PCIERCX_TPH_ST_TABLE0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TPH_ST_TABLE0(unsigned long a)27812 static inline uint64_t BDK_PCIERCX_TPH_ST_TABLE0(unsigned long a)
27813 {
27814     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27815         return 0x26cll + 0x100000000ll * ((a) & 0x3);
27816     __bdk_csr_fatal("PCIERCX_TPH_ST_TABLE0", 1, a, 0, 0, 0);
27817 }
27818 
27819 #define typedef_BDK_PCIERCX_TPH_ST_TABLE0(a) bdk_pciercx_tph_st_table0_t
27820 #define bustype_BDK_PCIERCX_TPH_ST_TABLE0(a) BDK_CSR_TYPE_PCICONFIGRC
27821 #define basename_BDK_PCIERCX_TPH_ST_TABLE0(a) "PCIERCX_TPH_ST_TABLE0"
27822 #define busnum_BDK_PCIERCX_TPH_ST_TABLE0(a) (a)
27823 #define arguments_BDK_PCIERCX_TPH_ST_TABLE0(a) (a),-1,-1,-1
27824 
27825 /**
27826  * Register (PCICONFIGRC) pcierc#_trgt_cpl_lut_del_ent
27827  *
27828  * PCIe RC TRGT_CPL_LUT Delete Entry Control Register
27829  */
27830 union bdk_pciercx_trgt_cpl_lut_del_ent
27831 {
27832     uint32_t u;
27833     struct bdk_pciercx_trgt_cpl_lut_del_ent_s
27834     {
27835 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27836         uint32_t del_en                : 1;  /**< [ 31: 31](R/W1C/H) This is a one-shot bit. Writing a one triggers the deletion of the target
27837                                                                  completion LUT entry that is specified in [LKUP_ID]. This is a self-clearing
27838                                                                  register field. Reading from this register field always returns a zero. */
27839         uint32_t lkup_id               : 31; /**< [ 30:  0](R/W) This number selects one entry to delete from the target completion LUT. */
27840 #else /* Word 0 - Little Endian */
27841         uint32_t lkup_id               : 31; /**< [ 30:  0](R/W) This number selects one entry to delete from the target completion LUT. */
27842         uint32_t del_en                : 1;  /**< [ 31: 31](R/W1C/H) This is a one-shot bit. Writing a one triggers the deletion of the target
27843                                                                  completion LUT entry that is specified in [LKUP_ID]. This is a self-clearing
27844                                                                  register field. Reading from this register field always returns a zero. */
27845 #endif /* Word 0 - End */
27846     } s;
27847     /* struct bdk_pciercx_trgt_cpl_lut_del_ent_s cn; */
27848 };
27849 typedef union bdk_pciercx_trgt_cpl_lut_del_ent bdk_pciercx_trgt_cpl_lut_del_ent_t;
27850 
27851 static inline uint64_t BDK_PCIERCX_TRGT_CPL_LUT_DEL_ENT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TRGT_CPL_LUT_DEL_ENT(unsigned long a)27852 static inline uint64_t BDK_PCIERCX_TRGT_CPL_LUT_DEL_ENT(unsigned long a)
27853 {
27854     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27855         return 0x8c8ll + 0x100000000ll * ((a) & 0x3);
27856     __bdk_csr_fatal("PCIERCX_TRGT_CPL_LUT_DEL_ENT", 1, a, 0, 0, 0);
27857 }
27858 
27859 #define typedef_BDK_PCIERCX_TRGT_CPL_LUT_DEL_ENT(a) bdk_pciercx_trgt_cpl_lut_del_ent_t
27860 #define bustype_BDK_PCIERCX_TRGT_CPL_LUT_DEL_ENT(a) BDK_CSR_TYPE_PCICONFIGRC
27861 #define basename_BDK_PCIERCX_TRGT_CPL_LUT_DEL_ENT(a) "PCIERCX_TRGT_CPL_LUT_DEL_ENT"
27862 #define busnum_BDK_PCIERCX_TRGT_CPL_LUT_DEL_ENT(a) (a)
27863 #define arguments_BDK_PCIERCX_TRGT_CPL_LUT_DEL_ENT(a) (a),-1,-1,-1
27864 
27865 /**
27866  * Register (PCICONFIGRC) pcierc#_trgt_map_ctl
27867  *
27868  * PCIe RC Programmable Target Map Control Register
27869  */
27870 union bdk_pciercx_trgt_map_ctl
27871 {
27872     uint32_t u;
27873     struct bdk_pciercx_trgt_map_ctl_s
27874     {
27875 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27876         uint32_t reserved_21_31        : 11;
27877         uint32_t map_idx               : 5;  /**< [ 20: 16](R/W/H) The number of the PF function on which target values are set. This register does
27878                                                                  not respect the Byte Enable setting. any write will affect all register bits. */
27879         uint32_t reserved_13_15        : 3;
27880         uint32_t map_vf                : 6;  /**< [ 12:  7](R/W/H) Target values for each BAR on the VF Function selected by the index number. This register
27881                                                                  does not respect the Byte Enable setting. any write will affect all register bits. */
27882         uint32_t map_rom               : 1;  /**< [  6:  6](R/W/H) Target values for the ROM page of the PF Function selected by the index number. This
27883                                                                  register
27884                                                                  does not respect the Byte Enable setting. any write will affect all register bits. */
27885         uint32_t map_pf                : 6;  /**< [  5:  0](R/W/H) Target values for each BAR on the PF Function selected by the index number. This register
27886                                                                  does not respect the Byte Enable setting. any write will affect all register bits. */
27887 #else /* Word 0 - Little Endian */
27888         uint32_t map_pf                : 6;  /**< [  5:  0](R/W/H) Target values for each BAR on the PF Function selected by the index number. This register
27889                                                                  does not respect the Byte Enable setting. any write will affect all register bits. */
27890         uint32_t map_rom               : 1;  /**< [  6:  6](R/W/H) Target values for the ROM page of the PF Function selected by the index number. This
27891                                                                  register
27892                                                                  does not respect the Byte Enable setting. any write will affect all register bits. */
27893         uint32_t map_vf                : 6;  /**< [ 12:  7](R/W/H) Target values for each BAR on the VF Function selected by the index number. This register
27894                                                                  does not respect the Byte Enable setting. any write will affect all register bits. */
27895         uint32_t reserved_13_15        : 3;
27896         uint32_t map_idx               : 5;  /**< [ 20: 16](R/W/H) The number of the PF function on which target values are set. This register does
27897                                                                  not respect the Byte Enable setting. any write will affect all register bits. */
27898         uint32_t reserved_21_31        : 11;
27899 #endif /* Word 0 - End */
27900     } s;
27901     /* struct bdk_pciercx_trgt_map_ctl_s cn; */
27902 };
27903 typedef union bdk_pciercx_trgt_map_ctl bdk_pciercx_trgt_map_ctl_t;
27904 
27905 static inline uint64_t BDK_PCIERCX_TRGT_MAP_CTL(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_TRGT_MAP_CTL(unsigned long a)27906 static inline uint64_t BDK_PCIERCX_TRGT_MAP_CTL(unsigned long a)
27907 {
27908     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
27909         return 0x81cll + 0x100000000ll * ((a) & 0x3);
27910     __bdk_csr_fatal("PCIERCX_TRGT_MAP_CTL", 1, a, 0, 0, 0);
27911 }
27912 
27913 #define typedef_BDK_PCIERCX_TRGT_MAP_CTL(a) bdk_pciercx_trgt_map_ctl_t
27914 #define bustype_BDK_PCIERCX_TRGT_MAP_CTL(a) BDK_CSR_TYPE_PCICONFIGRC
27915 #define basename_BDK_PCIERCX_TRGT_MAP_CTL(a) "PCIERCX_TRGT_MAP_CTL"
27916 #define busnum_BDK_PCIERCX_TRGT_MAP_CTL(a) (a)
27917 #define arguments_BDK_PCIERCX_TRGT_MAP_CTL(a) (a),-1,-1,-1
27918 
27919 /**
27920  * Register (PCICONFIGRC) pcierc#_ucor_err_msk
27921  *
27922  * PCIe RC Uncorrectable Error Mask Register
27923  */
27924 union bdk_pciercx_ucor_err_msk
27925 {
27926     uint32_t u;
27927     struct bdk_pciercx_ucor_err_msk_s
27928     {
27929 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27930         uint32_t reserved_26_31        : 6;
27931         uint32_t tpbem                 : 1;  /**< [ 25: 25](R/W) TLP prefix blocked error mask. */
27932         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked mask. */
27933         uint32_t reserved_23           : 1;
27934         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
27935         uint32_t avm                   : 1;  /**< [ 21: 21](R/W) ACS violation mask. */
27936         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
27937         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
27938         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
27939         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
27940         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
27941         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
27942         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
27943         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
27944         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
27945         uint32_t reserved_6_11         : 6;
27946         uint32_t sdem                  : 1;  /**< [  5:  5](R/W) Surprise down error mask. Writeable when PCIERC_LINK_CAP[SDERC] is set.
27947                                                                  When PCIERC_LINK_CAP[SDERC] is clear, will always read as clear. */
27948         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
27949         uint32_t reserved_0_3          : 4;
27950 #else /* Word 0 - Little Endian */
27951         uint32_t reserved_0_3          : 4;
27952         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
27953         uint32_t sdem                  : 1;  /**< [  5:  5](R/W) Surprise down error mask. Writeable when PCIERC_LINK_CAP[SDERC] is set.
27954                                                                  When PCIERC_LINK_CAP[SDERC] is clear, will always read as clear. */
27955         uint32_t reserved_6_11         : 6;
27956         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
27957         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
27958         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
27959         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
27960         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
27961         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
27962         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
27963         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
27964         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
27965         uint32_t avm                   : 1;  /**< [ 21: 21](R/W) ACS violation mask. */
27966         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
27967         uint32_t reserved_23           : 1;
27968         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked mask. */
27969         uint32_t tpbem                 : 1;  /**< [ 25: 25](R/W) TLP prefix blocked error mask. */
27970         uint32_t reserved_26_31        : 6;
27971 #endif /* Word 0 - End */
27972     } s;
27973     struct bdk_pciercx_ucor_err_msk_cn
27974     {
27975 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
27976         uint32_t reserved_26_31        : 6;
27977         uint32_t tpbem                 : 1;  /**< [ 25: 25](R/W) TLP prefix blocked error mask. */
27978         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked mask. */
27979         uint32_t reserved_23           : 1;
27980         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
27981         uint32_t avm                   : 1;  /**< [ 21: 21](R/W) ACS violation mask. */
27982         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
27983         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
27984         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
27985         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
27986         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
27987         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
27988         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
27989         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
27990         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
27991         uint32_t reserved_6_11         : 6;
27992         uint32_t sdem                  : 1;  /**< [  5:  5](R/W) Surprise down error mask. Writeable when PCIERC_LINK_CAP[SDERC] is set.
27993                                                                  When PCIERC_LINK_CAP[SDERC] is clear, will always read as clear. */
27994         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
27995         uint32_t reserved_1_3          : 3;
27996         uint32_t reserved_0            : 1;
27997 #else /* Word 0 - Little Endian */
27998         uint32_t reserved_0            : 1;
27999         uint32_t reserved_1_3          : 3;
28000         uint32_t dlpem                 : 1;  /**< [  4:  4](R/W) Data link protocol error mask. */
28001         uint32_t sdem                  : 1;  /**< [  5:  5](R/W) Surprise down error mask. Writeable when PCIERC_LINK_CAP[SDERC] is set.
28002                                                                  When PCIERC_LINK_CAP[SDERC] is clear, will always read as clear. */
28003         uint32_t reserved_6_11         : 6;
28004         uint32_t ptlpm                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP mask. */
28005         uint32_t fcpem                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error mask. */
28006         uint32_t ctm                   : 1;  /**< [ 14: 14](R/W) Completion timeout mask. */
28007         uint32_t cam                   : 1;  /**< [ 15: 15](R/W) Completer abort mask. */
28008         uint32_t ucm                   : 1;  /**< [ 16: 16](R/W) Unexpected completion mask. */
28009         uint32_t rom                   : 1;  /**< [ 17: 17](R/W) Receiver overflow mask. */
28010         uint32_t mtlpm                 : 1;  /**< [ 18: 18](R/W) Malformed TLP mask. */
28011         uint32_t ecrcem                : 1;  /**< [ 19: 19](R/W) ECRC error mask. */
28012         uint32_t urem                  : 1;  /**< [ 20: 20](R/W) Unsupported request error mask. */
28013         uint32_t avm                   : 1;  /**< [ 21: 21](R/W) ACS violation mask. */
28014         uint32_t uciem                 : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error mask. */
28015         uint32_t reserved_23           : 1;
28016         uint32_t uatombm               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked mask. */
28017         uint32_t tpbem                 : 1;  /**< [ 25: 25](R/W) TLP prefix blocked error mask. */
28018         uint32_t reserved_26_31        : 6;
28019 #endif /* Word 0 - End */
28020     } cn;
28021 };
28022 typedef union bdk_pciercx_ucor_err_msk bdk_pciercx_ucor_err_msk_t;
28023 
28024 static inline uint64_t BDK_PCIERCX_UCOR_ERR_MSK(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UCOR_ERR_MSK(unsigned long a)28025 static inline uint64_t BDK_PCIERCX_UCOR_ERR_MSK(unsigned long a)
28026 {
28027     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28028         return 0x108ll + 0x100000000ll * ((a) & 0x3);
28029     __bdk_csr_fatal("PCIERCX_UCOR_ERR_MSK", 1, a, 0, 0, 0);
28030 }
28031 
28032 #define typedef_BDK_PCIERCX_UCOR_ERR_MSK(a) bdk_pciercx_ucor_err_msk_t
28033 #define bustype_BDK_PCIERCX_UCOR_ERR_MSK(a) BDK_CSR_TYPE_PCICONFIGRC
28034 #define basename_BDK_PCIERCX_UCOR_ERR_MSK(a) "PCIERCX_UCOR_ERR_MSK"
28035 #define busnum_BDK_PCIERCX_UCOR_ERR_MSK(a) (a)
28036 #define arguments_BDK_PCIERCX_UCOR_ERR_MSK(a) (a),-1,-1,-1
28037 
28038 /**
28039  * Register (PCICONFIGRC) pcierc#_ucor_err_sev
28040  *
28041  * PCIe RC Uncorrectable Error Severity Register
28042  */
28043 union bdk_pciercx_ucor_err_sev
28044 {
28045     uint32_t u;
28046     struct bdk_pciercx_ucor_err_sev_s
28047     {
28048 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28049         uint32_t reserved_26_31        : 6;
28050         uint32_t tpbes                 : 1;  /**< [ 25: 25](R/W) TLP prefix blocked error severity. */
28051         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
28052         uint32_t reserved_23           : 1;
28053         uint32_t ies                   : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error severity. */
28054         uint32_t avs                   : 1;  /**< [ 21: 21](R/W) AVCS violation severity. */
28055         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
28056         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
28057         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
28058         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
28059         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
28060         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
28061         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
28062         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
28063         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
28064         uint32_t reserved_6_11         : 6;
28065         uint32_t sdes                  : 1;  /**< [  5:  5](R/W) Surprise down error severity.  Writable when PCIERC_LINK_CAP[SDERC] is set.
28066                                                                  When PCIERC_LINK_CAP[SDERC] is clear, will always read as set. */
28067         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
28068         uint32_t reserved_0_3          : 4;
28069 #else /* Word 0 - Little Endian */
28070         uint32_t reserved_0_3          : 4;
28071         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
28072         uint32_t sdes                  : 1;  /**< [  5:  5](R/W) Surprise down error severity.  Writable when PCIERC_LINK_CAP[SDERC] is set.
28073                                                                  When PCIERC_LINK_CAP[SDERC] is clear, will always read as set. */
28074         uint32_t reserved_6_11         : 6;
28075         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
28076         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
28077         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
28078         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
28079         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
28080         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
28081         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
28082         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
28083         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
28084         uint32_t avs                   : 1;  /**< [ 21: 21](R/W) AVCS violation severity. */
28085         uint32_t ies                   : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error severity. */
28086         uint32_t reserved_23           : 1;
28087         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
28088         uint32_t tpbes                 : 1;  /**< [ 25: 25](R/W) TLP prefix blocked error severity. */
28089         uint32_t reserved_26_31        : 6;
28090 #endif /* Word 0 - End */
28091     } s;
28092     struct bdk_pciercx_ucor_err_sev_cn
28093     {
28094 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28095         uint32_t reserved_26_31        : 6;
28096         uint32_t tpbes                 : 1;  /**< [ 25: 25](R/W) TLP prefix blocked error severity. */
28097         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
28098         uint32_t reserved_23           : 1;
28099         uint32_t ies                   : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error severity. */
28100         uint32_t avs                   : 1;  /**< [ 21: 21](R/W) AVCS violation severity. */
28101         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
28102         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
28103         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
28104         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
28105         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
28106         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
28107         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
28108         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
28109         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
28110         uint32_t reserved_6_11         : 6;
28111         uint32_t sdes                  : 1;  /**< [  5:  5](R/W) Surprise down error severity.  Writable when PCIERC_LINK_CAP[SDERC] is set.
28112                                                                  When PCIERC_LINK_CAP[SDERC] is clear, will always read as set. */
28113         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
28114         uint32_t reserved_1_3          : 3;
28115         uint32_t reserved_0            : 1;
28116 #else /* Word 0 - Little Endian */
28117         uint32_t reserved_0            : 1;
28118         uint32_t reserved_1_3          : 3;
28119         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W) Data link protocol error severity. */
28120         uint32_t sdes                  : 1;  /**< [  5:  5](R/W) Surprise down error severity.  Writable when PCIERC_LINK_CAP[SDERC] is set.
28121                                                                  When PCIERC_LINK_CAP[SDERC] is clear, will always read as set. */
28122         uint32_t reserved_6_11         : 6;
28123         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W) Poisoned TLP severity. */
28124         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W) Flow control protocol error severity. */
28125         uint32_t cts                   : 1;  /**< [ 14: 14](R/W) Completion timeout severity. */
28126         uint32_t cas                   : 1;  /**< [ 15: 15](R/W) Completer abort severity. */
28127         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W) Unexpected completion severity. */
28128         uint32_t ros                   : 1;  /**< [ 17: 17](R/W) Receiver overflow severity. */
28129         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W) Malformed TLP severity. */
28130         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W) ECRC error severity. */
28131         uint32_t ures                  : 1;  /**< [ 20: 20](R/W) Unsupported request error severity. */
28132         uint32_t avs                   : 1;  /**< [ 21: 21](R/W) AVCS violation severity. */
28133         uint32_t ies                   : 1;  /**< [ 22: 22](R/W) Uncorrectable internal error severity. */
28134         uint32_t reserved_23           : 1;
28135         uint32_t uatombs               : 1;  /**< [ 24: 24](R/W) Unsupported AtomicOp egress blocked severity. */
28136         uint32_t tpbes                 : 1;  /**< [ 25: 25](R/W) TLP prefix blocked error severity. */
28137         uint32_t reserved_26_31        : 6;
28138 #endif /* Word 0 - End */
28139     } cn;
28140 };
28141 typedef union bdk_pciercx_ucor_err_sev bdk_pciercx_ucor_err_sev_t;
28142 
28143 static inline uint64_t BDK_PCIERCX_UCOR_ERR_SEV(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UCOR_ERR_SEV(unsigned long a)28144 static inline uint64_t BDK_PCIERCX_UCOR_ERR_SEV(unsigned long a)
28145 {
28146     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28147         return 0x10cll + 0x100000000ll * ((a) & 0x3);
28148     __bdk_csr_fatal("PCIERCX_UCOR_ERR_SEV", 1, a, 0, 0, 0);
28149 }
28150 
28151 #define typedef_BDK_PCIERCX_UCOR_ERR_SEV(a) bdk_pciercx_ucor_err_sev_t
28152 #define bustype_BDK_PCIERCX_UCOR_ERR_SEV(a) BDK_CSR_TYPE_PCICONFIGRC
28153 #define basename_BDK_PCIERCX_UCOR_ERR_SEV(a) "PCIERCX_UCOR_ERR_SEV"
28154 #define busnum_BDK_PCIERCX_UCOR_ERR_SEV(a) (a)
28155 #define arguments_BDK_PCIERCX_UCOR_ERR_SEV(a) (a),-1,-1,-1
28156 
28157 /**
28158  * Register (PCICONFIGRC) pcierc#_ucor_err_stat
28159  *
28160  * PCIe RC Uncorrectable Error Status Register
28161  */
28162 union bdk_pciercx_ucor_err_stat
28163 {
28164     uint32_t u;
28165     struct bdk_pciercx_ucor_err_stat_s
28166     {
28167 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28168         uint32_t reserved_26_31        : 6;
28169         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
28170         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
28171         uint32_t reserved_23           : 1;
28172         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
28173         uint32_t avs                   : 1;  /**< [ 21: 21](R/W1C) ACS violation status. */
28174         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
28175         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
28176         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
28177         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
28178         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status. */
28179         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
28180         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
28181         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
28182         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
28183         uint32_t reserved_6_11         : 6;
28184         uint32_t sdes                  : 1;  /**< [  5:  5](R/W1C/H) Surprise link down error status. */
28185         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
28186         uint32_t reserved_0_3          : 4;
28187 #else /* Word 0 - Little Endian */
28188         uint32_t reserved_0_3          : 4;
28189         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
28190         uint32_t sdes                  : 1;  /**< [  5:  5](R/W1C/H) Surprise link down error status. */
28191         uint32_t reserved_6_11         : 6;
28192         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
28193         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
28194         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
28195         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
28196         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status. */
28197         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
28198         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
28199         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
28200         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
28201         uint32_t avs                   : 1;  /**< [ 21: 21](R/W1C) ACS violation status. */
28202         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
28203         uint32_t reserved_23           : 1;
28204         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
28205         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
28206         uint32_t reserved_26_31        : 6;
28207 #endif /* Word 0 - End */
28208     } s;
28209     struct bdk_pciercx_ucor_err_stat_cn
28210     {
28211 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28212         uint32_t reserved_26_31        : 6;
28213         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
28214         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
28215         uint32_t reserved_23           : 1;
28216         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
28217         uint32_t avs                   : 1;  /**< [ 21: 21](R/W1C) ACS violation status. */
28218         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
28219         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
28220         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
28221         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
28222         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status. */
28223         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
28224         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
28225         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
28226         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
28227         uint32_t reserved_6_11         : 6;
28228         uint32_t sdes                  : 1;  /**< [  5:  5](R/W1C/H) Surprise link down error status. */
28229         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
28230         uint32_t reserved_1_3          : 3;
28231         uint32_t reserved_0            : 1;
28232 #else /* Word 0 - Little Endian */
28233         uint32_t reserved_0            : 1;
28234         uint32_t reserved_1_3          : 3;
28235         uint32_t dlpes                 : 1;  /**< [  4:  4](R/W1C/H) Data link protocol error status. */
28236         uint32_t sdes                  : 1;  /**< [  5:  5](R/W1C/H) Surprise link down error status. */
28237         uint32_t reserved_6_11         : 6;
28238         uint32_t ptlps                 : 1;  /**< [ 12: 12](R/W1C/H) Poisoned TLP status. */
28239         uint32_t fcpes                 : 1;  /**< [ 13: 13](R/W1C/H) Flow control protocol error status. */
28240         uint32_t cts                   : 1;  /**< [ 14: 14](R/W1C/H) Completion timeout status. */
28241         uint32_t cas                   : 1;  /**< [ 15: 15](R/W1C/H) Completer abort status. */
28242         uint32_t ucs                   : 1;  /**< [ 16: 16](R/W1C/H) Unexpected completion status. */
28243         uint32_t ros                   : 1;  /**< [ 17: 17](R/W1C/H) Receiver overflow status. */
28244         uint32_t mtlps                 : 1;  /**< [ 18: 18](R/W1C/H) Malformed TLP status. */
28245         uint32_t ecrces                : 1;  /**< [ 19: 19](R/W1C/H) ECRC error status. */
28246         uint32_t ures                  : 1;  /**< [ 20: 20](R/W1C/H) Unsupported request error status. */
28247         uint32_t avs                   : 1;  /**< [ 21: 21](R/W1C) ACS violation status. */
28248         uint32_t ucies                 : 1;  /**< [ 22: 22](R/W1C/H) Uncorrectable internal error status. */
28249         uint32_t reserved_23           : 1;
28250         uint32_t uatombs               : 1;  /**< [ 24: 24](RO) Unsupported AtomicOp egress blocked status. */
28251         uint32_t tpbes                 : 1;  /**< [ 25: 25](RO) Unsupported TLP prefix blocked error status. */
28252         uint32_t reserved_26_31        : 6;
28253 #endif /* Word 0 - End */
28254     } cn;
28255 };
28256 typedef union bdk_pciercx_ucor_err_stat bdk_pciercx_ucor_err_stat_t;
28257 
28258 static inline uint64_t BDK_PCIERCX_UCOR_ERR_STAT(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UCOR_ERR_STAT(unsigned long a)28259 static inline uint64_t BDK_PCIERCX_UCOR_ERR_STAT(unsigned long a)
28260 {
28261     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28262         return 0x104ll + 0x100000000ll * ((a) & 0x3);
28263     __bdk_csr_fatal("PCIERCX_UCOR_ERR_STAT", 1, a, 0, 0, 0);
28264 }
28265 
28266 #define typedef_BDK_PCIERCX_UCOR_ERR_STAT(a) bdk_pciercx_ucor_err_stat_t
28267 #define bustype_BDK_PCIERCX_UCOR_ERR_STAT(a) BDK_CSR_TYPE_PCICONFIGRC
28268 #define basename_BDK_PCIERCX_UCOR_ERR_STAT(a) "PCIERCX_UCOR_ERR_STAT"
28269 #define busnum_BDK_PCIERCX_UCOR_ERR_STAT(a) (a)
28270 #define arguments_BDK_PCIERCX_UCOR_ERR_STAT(a) (a),-1,-1,-1
28271 
28272 /**
28273  * Register (PCICONFIGRC) pcierc#_unused_cap0
28274  *
28275  * PCIe RC Unused Capability Registers
28276  */
28277 union bdk_pciercx_unused_cap0
28278 {
28279     uint32_t u;
28280     struct bdk_pciercx_unused_cap0_s
28281     {
28282 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28283         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28284                                                                  for software to add additional configuration capabilities.
28285                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28286 #else /* Word 0 - Little Endian */
28287         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28288                                                                  for software to add additional configuration capabilities.
28289                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28290 #endif /* Word 0 - End */
28291     } s;
28292     /* struct bdk_pciercx_unused_cap0_s cn; */
28293 };
28294 typedef union bdk_pciercx_unused_cap0 bdk_pciercx_unused_cap0_t;
28295 
28296 static inline uint64_t BDK_PCIERCX_UNUSED_CAP0(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP0(unsigned long a)28297 static inline uint64_t BDK_PCIERCX_UNUSED_CAP0(unsigned long a)
28298 {
28299     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28300         return 0xbcll + 0x100000000ll * ((a) & 0x3);
28301     __bdk_csr_fatal("PCIERCX_UNUSED_CAP0", 1, a, 0, 0, 0);
28302 }
28303 
28304 #define typedef_BDK_PCIERCX_UNUSED_CAP0(a) bdk_pciercx_unused_cap0_t
28305 #define bustype_BDK_PCIERCX_UNUSED_CAP0(a) BDK_CSR_TYPE_PCICONFIGRC
28306 #define basename_BDK_PCIERCX_UNUSED_CAP0(a) "PCIERCX_UNUSED_CAP0"
28307 #define busnum_BDK_PCIERCX_UNUSED_CAP0(a) (a)
28308 #define arguments_BDK_PCIERCX_UNUSED_CAP0(a) (a),-1,-1,-1
28309 
28310 /**
28311  * Register (PCICONFIGRC) pcierc#_unused_cap1
28312  *
28313  * PCIe RC Unused Capability Registers
28314  */
28315 union bdk_pciercx_unused_cap1
28316 {
28317     uint32_t u;
28318     struct bdk_pciercx_unused_cap1_s
28319     {
28320 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28321         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28322                                                                  for software to add additional configuration capabilities.
28323                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28324 #else /* Word 0 - Little Endian */
28325         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28326                                                                  for software to add additional configuration capabilities.
28327                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28328 #endif /* Word 0 - End */
28329     } s;
28330     /* struct bdk_pciercx_unused_cap1_s cn; */
28331 };
28332 typedef union bdk_pciercx_unused_cap1 bdk_pciercx_unused_cap1_t;
28333 
28334 static inline uint64_t BDK_PCIERCX_UNUSED_CAP1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP1(unsigned long a)28335 static inline uint64_t BDK_PCIERCX_UNUSED_CAP1(unsigned long a)
28336 {
28337     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28338         return 0xc0ll + 0x100000000ll * ((a) & 0x3);
28339     __bdk_csr_fatal("PCIERCX_UNUSED_CAP1", 1, a, 0, 0, 0);
28340 }
28341 
28342 #define typedef_BDK_PCIERCX_UNUSED_CAP1(a) bdk_pciercx_unused_cap1_t
28343 #define bustype_BDK_PCIERCX_UNUSED_CAP1(a) BDK_CSR_TYPE_PCICONFIGRC
28344 #define basename_BDK_PCIERCX_UNUSED_CAP1(a) "PCIERCX_UNUSED_CAP1"
28345 #define busnum_BDK_PCIERCX_UNUSED_CAP1(a) (a)
28346 #define arguments_BDK_PCIERCX_UNUSED_CAP1(a) (a),-1,-1,-1
28347 
28348 /**
28349  * Register (PCICONFIGRC) pcierc#_unused_cap10
28350  *
28351  * PCIe RC Unused Capability Registers
28352  */
28353 union bdk_pciercx_unused_cap10
28354 {
28355     uint32_t u;
28356     struct bdk_pciercx_unused_cap10_s
28357     {
28358 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28359         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28360                                                                  for software to add additional configuration capabilities.
28361                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28362 #else /* Word 0 - Little Endian */
28363         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28364                                                                  for software to add additional configuration capabilities.
28365                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28366 #endif /* Word 0 - End */
28367     } s;
28368     /* struct bdk_pciercx_unused_cap10_s cn; */
28369 };
28370 typedef union bdk_pciercx_unused_cap10 bdk_pciercx_unused_cap10_t;
28371 
28372 static inline uint64_t BDK_PCIERCX_UNUSED_CAP10(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP10(unsigned long a)28373 static inline uint64_t BDK_PCIERCX_UNUSED_CAP10(unsigned long a)
28374 {
28375     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28376         return 0xe4ll + 0x100000000ll * ((a) & 0x3);
28377     __bdk_csr_fatal("PCIERCX_UNUSED_CAP10", 1, a, 0, 0, 0);
28378 }
28379 
28380 #define typedef_BDK_PCIERCX_UNUSED_CAP10(a) bdk_pciercx_unused_cap10_t
28381 #define bustype_BDK_PCIERCX_UNUSED_CAP10(a) BDK_CSR_TYPE_PCICONFIGRC
28382 #define basename_BDK_PCIERCX_UNUSED_CAP10(a) "PCIERCX_UNUSED_CAP10"
28383 #define busnum_BDK_PCIERCX_UNUSED_CAP10(a) (a)
28384 #define arguments_BDK_PCIERCX_UNUSED_CAP10(a) (a),-1,-1,-1
28385 
28386 /**
28387  * Register (PCICONFIGRC) pcierc#_unused_cap11
28388  *
28389  * PCIe RC Unused Capability Registers
28390  */
28391 union bdk_pciercx_unused_cap11
28392 {
28393     uint32_t u;
28394     struct bdk_pciercx_unused_cap11_s
28395     {
28396 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28397         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28398                                                                  for software to add additional configuration capabilities.
28399                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28400 #else /* Word 0 - Little Endian */
28401         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28402                                                                  for software to add additional configuration capabilities.
28403                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28404 #endif /* Word 0 - End */
28405     } s;
28406     /* struct bdk_pciercx_unused_cap11_s cn; */
28407 };
28408 typedef union bdk_pciercx_unused_cap11 bdk_pciercx_unused_cap11_t;
28409 
28410 static inline uint64_t BDK_PCIERCX_UNUSED_CAP11(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP11(unsigned long a)28411 static inline uint64_t BDK_PCIERCX_UNUSED_CAP11(unsigned long a)
28412 {
28413     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28414         return 0xe8ll + 0x100000000ll * ((a) & 0x3);
28415     __bdk_csr_fatal("PCIERCX_UNUSED_CAP11", 1, a, 0, 0, 0);
28416 }
28417 
28418 #define typedef_BDK_PCIERCX_UNUSED_CAP11(a) bdk_pciercx_unused_cap11_t
28419 #define bustype_BDK_PCIERCX_UNUSED_CAP11(a) BDK_CSR_TYPE_PCICONFIGRC
28420 #define basename_BDK_PCIERCX_UNUSED_CAP11(a) "PCIERCX_UNUSED_CAP11"
28421 #define busnum_BDK_PCIERCX_UNUSED_CAP11(a) (a)
28422 #define arguments_BDK_PCIERCX_UNUSED_CAP11(a) (a),-1,-1,-1
28423 
28424 /**
28425  * Register (PCICONFIGRC) pcierc#_unused_cap12
28426  *
28427  * PCIe RC Unused Capability Registers
28428  */
28429 union bdk_pciercx_unused_cap12
28430 {
28431     uint32_t u;
28432     struct bdk_pciercx_unused_cap12_s
28433     {
28434 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28435         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28436                                                                  for software to add additional configuration capabilities.
28437                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28438 #else /* Word 0 - Little Endian */
28439         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28440                                                                  for software to add additional configuration capabilities.
28441                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28442 #endif /* Word 0 - End */
28443     } s;
28444     /* struct bdk_pciercx_unused_cap12_s cn; */
28445 };
28446 typedef union bdk_pciercx_unused_cap12 bdk_pciercx_unused_cap12_t;
28447 
28448 static inline uint64_t BDK_PCIERCX_UNUSED_CAP12(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP12(unsigned long a)28449 static inline uint64_t BDK_PCIERCX_UNUSED_CAP12(unsigned long a)
28450 {
28451     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28452         return 0xecll + 0x100000000ll * ((a) & 0x3);
28453     __bdk_csr_fatal("PCIERCX_UNUSED_CAP12", 1, a, 0, 0, 0);
28454 }
28455 
28456 #define typedef_BDK_PCIERCX_UNUSED_CAP12(a) bdk_pciercx_unused_cap12_t
28457 #define bustype_BDK_PCIERCX_UNUSED_CAP12(a) BDK_CSR_TYPE_PCICONFIGRC
28458 #define basename_BDK_PCIERCX_UNUSED_CAP12(a) "PCIERCX_UNUSED_CAP12"
28459 #define busnum_BDK_PCIERCX_UNUSED_CAP12(a) (a)
28460 #define arguments_BDK_PCIERCX_UNUSED_CAP12(a) (a),-1,-1,-1
28461 
28462 /**
28463  * Register (PCICONFIGRC) pcierc#_unused_cap13
28464  *
28465  * PCIe RC Unused Capability Registers
28466  */
28467 union bdk_pciercx_unused_cap13
28468 {
28469     uint32_t u;
28470     struct bdk_pciercx_unused_cap13_s
28471     {
28472 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28473         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28474                                                                  for software to add additional configuration capabilities.
28475                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28476 #else /* Word 0 - Little Endian */
28477         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28478                                                                  for software to add additional configuration capabilities.
28479                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28480 #endif /* Word 0 - End */
28481     } s;
28482     /* struct bdk_pciercx_unused_cap13_s cn; */
28483 };
28484 typedef union bdk_pciercx_unused_cap13 bdk_pciercx_unused_cap13_t;
28485 
28486 static inline uint64_t BDK_PCIERCX_UNUSED_CAP13(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP13(unsigned long a)28487 static inline uint64_t BDK_PCIERCX_UNUSED_CAP13(unsigned long a)
28488 {
28489     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28490         return 0xf0ll + 0x100000000ll * ((a) & 0x3);
28491     __bdk_csr_fatal("PCIERCX_UNUSED_CAP13", 1, a, 0, 0, 0);
28492 }
28493 
28494 #define typedef_BDK_PCIERCX_UNUSED_CAP13(a) bdk_pciercx_unused_cap13_t
28495 #define bustype_BDK_PCIERCX_UNUSED_CAP13(a) BDK_CSR_TYPE_PCICONFIGRC
28496 #define basename_BDK_PCIERCX_UNUSED_CAP13(a) "PCIERCX_UNUSED_CAP13"
28497 #define busnum_BDK_PCIERCX_UNUSED_CAP13(a) (a)
28498 #define arguments_BDK_PCIERCX_UNUSED_CAP13(a) (a),-1,-1,-1
28499 
28500 /**
28501  * Register (PCICONFIGRC) pcierc#_unused_cap14
28502  *
28503  * PCIe RC Unused Capability Registers
28504  */
28505 union bdk_pciercx_unused_cap14
28506 {
28507     uint32_t u;
28508     struct bdk_pciercx_unused_cap14_s
28509     {
28510 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28511         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28512                                                                  for software to add additional configuration capabilities.
28513                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28514 #else /* Word 0 - Little Endian */
28515         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28516                                                                  for software to add additional configuration capabilities.
28517                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28518 #endif /* Word 0 - End */
28519     } s;
28520     /* struct bdk_pciercx_unused_cap14_s cn; */
28521 };
28522 typedef union bdk_pciercx_unused_cap14 bdk_pciercx_unused_cap14_t;
28523 
28524 static inline uint64_t BDK_PCIERCX_UNUSED_CAP14(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP14(unsigned long a)28525 static inline uint64_t BDK_PCIERCX_UNUSED_CAP14(unsigned long a)
28526 {
28527     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28528         return 0xf4ll + 0x100000000ll * ((a) & 0x3);
28529     __bdk_csr_fatal("PCIERCX_UNUSED_CAP14", 1, a, 0, 0, 0);
28530 }
28531 
28532 #define typedef_BDK_PCIERCX_UNUSED_CAP14(a) bdk_pciercx_unused_cap14_t
28533 #define bustype_BDK_PCIERCX_UNUSED_CAP14(a) BDK_CSR_TYPE_PCICONFIGRC
28534 #define basename_BDK_PCIERCX_UNUSED_CAP14(a) "PCIERCX_UNUSED_CAP14"
28535 #define busnum_BDK_PCIERCX_UNUSED_CAP14(a) (a)
28536 #define arguments_BDK_PCIERCX_UNUSED_CAP14(a) (a),-1,-1,-1
28537 
28538 /**
28539  * Register (PCICONFIGRC) pcierc#_unused_cap15
28540  *
28541  * PCIe RC Unused Capability Registers
28542  */
28543 union bdk_pciercx_unused_cap15
28544 {
28545     uint32_t u;
28546     struct bdk_pciercx_unused_cap15_s
28547     {
28548 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28549         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28550                                                                  for software to add additional configuration capabilities.
28551                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28552 #else /* Word 0 - Little Endian */
28553         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28554                                                                  for software to add additional configuration capabilities.
28555                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28556 #endif /* Word 0 - End */
28557     } s;
28558     /* struct bdk_pciercx_unused_cap15_s cn; */
28559 };
28560 typedef union bdk_pciercx_unused_cap15 bdk_pciercx_unused_cap15_t;
28561 
28562 static inline uint64_t BDK_PCIERCX_UNUSED_CAP15(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP15(unsigned long a)28563 static inline uint64_t BDK_PCIERCX_UNUSED_CAP15(unsigned long a)
28564 {
28565     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28566         return 0xf8ll + 0x100000000ll * ((a) & 0x3);
28567     __bdk_csr_fatal("PCIERCX_UNUSED_CAP15", 1, a, 0, 0, 0);
28568 }
28569 
28570 #define typedef_BDK_PCIERCX_UNUSED_CAP15(a) bdk_pciercx_unused_cap15_t
28571 #define bustype_BDK_PCIERCX_UNUSED_CAP15(a) BDK_CSR_TYPE_PCICONFIGRC
28572 #define basename_BDK_PCIERCX_UNUSED_CAP15(a) "PCIERCX_UNUSED_CAP15"
28573 #define busnum_BDK_PCIERCX_UNUSED_CAP15(a) (a)
28574 #define arguments_BDK_PCIERCX_UNUSED_CAP15(a) (a),-1,-1,-1
28575 
28576 /**
28577  * Register (PCICONFIGRC) pcierc#_unused_cap16
28578  *
28579  * PCIe RC Unused Capability Registers
28580  */
28581 union bdk_pciercx_unused_cap16
28582 {
28583     uint32_t u;
28584     struct bdk_pciercx_unused_cap16_s
28585     {
28586 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28587         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28588                                                                  for software to add additional configuration capabilities.
28589                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28590 #else /* Word 0 - Little Endian */
28591         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28592                                                                  for software to add additional configuration capabilities.
28593                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28594 #endif /* Word 0 - End */
28595     } s;
28596     /* struct bdk_pciercx_unused_cap16_s cn; */
28597 };
28598 typedef union bdk_pciercx_unused_cap16 bdk_pciercx_unused_cap16_t;
28599 
28600 static inline uint64_t BDK_PCIERCX_UNUSED_CAP16(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP16(unsigned long a)28601 static inline uint64_t BDK_PCIERCX_UNUSED_CAP16(unsigned long a)
28602 {
28603     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28604         return 0xfcll + 0x100000000ll * ((a) & 0x3);
28605     __bdk_csr_fatal("PCIERCX_UNUSED_CAP16", 1, a, 0, 0, 0);
28606 }
28607 
28608 #define typedef_BDK_PCIERCX_UNUSED_CAP16(a) bdk_pciercx_unused_cap16_t
28609 #define bustype_BDK_PCIERCX_UNUSED_CAP16(a) BDK_CSR_TYPE_PCICONFIGRC
28610 #define basename_BDK_PCIERCX_UNUSED_CAP16(a) "PCIERCX_UNUSED_CAP16"
28611 #define busnum_BDK_PCIERCX_UNUSED_CAP16(a) (a)
28612 #define arguments_BDK_PCIERCX_UNUSED_CAP16(a) (a),-1,-1,-1
28613 
28614 /**
28615  * Register (PCICONFIGRC) pcierc#_unused_cap2
28616  *
28617  * PCIe RC Unused Capability Registers
28618  */
28619 union bdk_pciercx_unused_cap2
28620 {
28621     uint32_t u;
28622     struct bdk_pciercx_unused_cap2_s
28623     {
28624 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28625         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28626                                                                  for software to add additional configuration capabilities.
28627                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28628 #else /* Word 0 - Little Endian */
28629         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28630                                                                  for software to add additional configuration capabilities.
28631                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28632 #endif /* Word 0 - End */
28633     } s;
28634     /* struct bdk_pciercx_unused_cap2_s cn; */
28635 };
28636 typedef union bdk_pciercx_unused_cap2 bdk_pciercx_unused_cap2_t;
28637 
28638 static inline uint64_t BDK_PCIERCX_UNUSED_CAP2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP2(unsigned long a)28639 static inline uint64_t BDK_PCIERCX_UNUSED_CAP2(unsigned long a)
28640 {
28641     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28642         return 0xc4ll + 0x100000000ll * ((a) & 0x3);
28643     __bdk_csr_fatal("PCIERCX_UNUSED_CAP2", 1, a, 0, 0, 0);
28644 }
28645 
28646 #define typedef_BDK_PCIERCX_UNUSED_CAP2(a) bdk_pciercx_unused_cap2_t
28647 #define bustype_BDK_PCIERCX_UNUSED_CAP2(a) BDK_CSR_TYPE_PCICONFIGRC
28648 #define basename_BDK_PCIERCX_UNUSED_CAP2(a) "PCIERCX_UNUSED_CAP2"
28649 #define busnum_BDK_PCIERCX_UNUSED_CAP2(a) (a)
28650 #define arguments_BDK_PCIERCX_UNUSED_CAP2(a) (a),-1,-1,-1
28651 
28652 /**
28653  * Register (PCICONFIGRC) pcierc#_unused_cap3
28654  *
28655  * PCIe RC Unused Capability Registers
28656  */
28657 union bdk_pciercx_unused_cap3
28658 {
28659     uint32_t u;
28660     struct bdk_pciercx_unused_cap3_s
28661     {
28662 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28663         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28664                                                                  for software to add additional configuration capabilities.
28665                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28666 #else /* Word 0 - Little Endian */
28667         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28668                                                                  for software to add additional configuration capabilities.
28669                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28670 #endif /* Word 0 - End */
28671     } s;
28672     /* struct bdk_pciercx_unused_cap3_s cn; */
28673 };
28674 typedef union bdk_pciercx_unused_cap3 bdk_pciercx_unused_cap3_t;
28675 
28676 static inline uint64_t BDK_PCIERCX_UNUSED_CAP3(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP3(unsigned long a)28677 static inline uint64_t BDK_PCIERCX_UNUSED_CAP3(unsigned long a)
28678 {
28679     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28680         return 0xc8ll + 0x100000000ll * ((a) & 0x3);
28681     __bdk_csr_fatal("PCIERCX_UNUSED_CAP3", 1, a, 0, 0, 0);
28682 }
28683 
28684 #define typedef_BDK_PCIERCX_UNUSED_CAP3(a) bdk_pciercx_unused_cap3_t
28685 #define bustype_BDK_PCIERCX_UNUSED_CAP3(a) BDK_CSR_TYPE_PCICONFIGRC
28686 #define basename_BDK_PCIERCX_UNUSED_CAP3(a) "PCIERCX_UNUSED_CAP3"
28687 #define busnum_BDK_PCIERCX_UNUSED_CAP3(a) (a)
28688 #define arguments_BDK_PCIERCX_UNUSED_CAP3(a) (a),-1,-1,-1
28689 
28690 /**
28691  * Register (PCICONFIGRC) pcierc#_unused_cap4
28692  *
28693  * PCIe RC Unused Capability Registers
28694  */
28695 union bdk_pciercx_unused_cap4
28696 {
28697     uint32_t u;
28698     struct bdk_pciercx_unused_cap4_s
28699     {
28700 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28701         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28702                                                                  for software to add additional configuration capabilities.
28703                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28704 #else /* Word 0 - Little Endian */
28705         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28706                                                                  for software to add additional configuration capabilities.
28707                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28708 #endif /* Word 0 - End */
28709     } s;
28710     /* struct bdk_pciercx_unused_cap4_s cn; */
28711 };
28712 typedef union bdk_pciercx_unused_cap4 bdk_pciercx_unused_cap4_t;
28713 
28714 static inline uint64_t BDK_PCIERCX_UNUSED_CAP4(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP4(unsigned long a)28715 static inline uint64_t BDK_PCIERCX_UNUSED_CAP4(unsigned long a)
28716 {
28717     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28718         return 0xccll + 0x100000000ll * ((a) & 0x3);
28719     __bdk_csr_fatal("PCIERCX_UNUSED_CAP4", 1, a, 0, 0, 0);
28720 }
28721 
28722 #define typedef_BDK_PCIERCX_UNUSED_CAP4(a) bdk_pciercx_unused_cap4_t
28723 #define bustype_BDK_PCIERCX_UNUSED_CAP4(a) BDK_CSR_TYPE_PCICONFIGRC
28724 #define basename_BDK_PCIERCX_UNUSED_CAP4(a) "PCIERCX_UNUSED_CAP4"
28725 #define busnum_BDK_PCIERCX_UNUSED_CAP4(a) (a)
28726 #define arguments_BDK_PCIERCX_UNUSED_CAP4(a) (a),-1,-1,-1
28727 
28728 /**
28729  * Register (PCICONFIGRC) pcierc#_unused_cap7
28730  *
28731  * PCIe RC Unused Capability Registers
28732  */
28733 union bdk_pciercx_unused_cap7
28734 {
28735     uint32_t u;
28736     struct bdk_pciercx_unused_cap7_s
28737     {
28738 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28739         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28740                                                                  for software to add additional configuration capabilities.
28741                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28742 #else /* Word 0 - Little Endian */
28743         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28744                                                                  for software to add additional configuration capabilities.
28745                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28746 #endif /* Word 0 - End */
28747     } s;
28748     /* struct bdk_pciercx_unused_cap7_s cn; */
28749 };
28750 typedef union bdk_pciercx_unused_cap7 bdk_pciercx_unused_cap7_t;
28751 
28752 static inline uint64_t BDK_PCIERCX_UNUSED_CAP7(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP7(unsigned long a)28753 static inline uint64_t BDK_PCIERCX_UNUSED_CAP7(unsigned long a)
28754 {
28755     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28756         return 0xd8ll + 0x100000000ll * ((a) & 0x3);
28757     __bdk_csr_fatal("PCIERCX_UNUSED_CAP7", 1, a, 0, 0, 0);
28758 }
28759 
28760 #define typedef_BDK_PCIERCX_UNUSED_CAP7(a) bdk_pciercx_unused_cap7_t
28761 #define bustype_BDK_PCIERCX_UNUSED_CAP7(a) BDK_CSR_TYPE_PCICONFIGRC
28762 #define basename_BDK_PCIERCX_UNUSED_CAP7(a) "PCIERCX_UNUSED_CAP7"
28763 #define busnum_BDK_PCIERCX_UNUSED_CAP7(a) (a)
28764 #define arguments_BDK_PCIERCX_UNUSED_CAP7(a) (a),-1,-1,-1
28765 
28766 /**
28767  * Register (PCICONFIGRC) pcierc#_unused_cap8
28768  *
28769  * PCIe RC Unused Capability Registers
28770  */
28771 union bdk_pciercx_unused_cap8
28772 {
28773     uint32_t u;
28774     struct bdk_pciercx_unused_cap8_s
28775     {
28776 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28777         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28778                                                                  for software to add additional configuration capabilities.
28779                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28780 #else /* Word 0 - Little Endian */
28781         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28782                                                                  for software to add additional configuration capabilities.
28783                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28784 #endif /* Word 0 - End */
28785     } s;
28786     /* struct bdk_pciercx_unused_cap8_s cn; */
28787 };
28788 typedef union bdk_pciercx_unused_cap8 bdk_pciercx_unused_cap8_t;
28789 
28790 static inline uint64_t BDK_PCIERCX_UNUSED_CAP8(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP8(unsigned long a)28791 static inline uint64_t BDK_PCIERCX_UNUSED_CAP8(unsigned long a)
28792 {
28793     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28794         return 0xdcll + 0x100000000ll * ((a) & 0x3);
28795     __bdk_csr_fatal("PCIERCX_UNUSED_CAP8", 1, a, 0, 0, 0);
28796 }
28797 
28798 #define typedef_BDK_PCIERCX_UNUSED_CAP8(a) bdk_pciercx_unused_cap8_t
28799 #define bustype_BDK_PCIERCX_UNUSED_CAP8(a) BDK_CSR_TYPE_PCICONFIGRC
28800 #define basename_BDK_PCIERCX_UNUSED_CAP8(a) "PCIERCX_UNUSED_CAP8"
28801 #define busnum_BDK_PCIERCX_UNUSED_CAP8(a) (a)
28802 #define arguments_BDK_PCIERCX_UNUSED_CAP8(a) (a),-1,-1,-1
28803 
28804 /**
28805  * Register (PCICONFIGRC) pcierc#_unused_cap9
28806  *
28807  * PCIe RC Unused Capability Registers
28808  */
28809 union bdk_pciercx_unused_cap9
28810 {
28811     uint32_t u;
28812     struct bdk_pciercx_unused_cap9_s
28813     {
28814 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28815         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28816                                                                  for software to add additional configuration capabilities.
28817                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28818 #else /* Word 0 - Little Endian */
28819         uint32_t sw_hdr                : 32; /**< [ 31:  0](RO/WRSL) Software headers. This configuration area is opaque to PCIERC hardware. It is available
28820                                                                  for software to add additional configuration capabilities.
28821                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
28822 #endif /* Word 0 - End */
28823     } s;
28824     /* struct bdk_pciercx_unused_cap9_s cn; */
28825 };
28826 typedef union bdk_pciercx_unused_cap9 bdk_pciercx_unused_cap9_t;
28827 
28828 static inline uint64_t BDK_PCIERCX_UNUSED_CAP9(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UNUSED_CAP9(unsigned long a)28829 static inline uint64_t BDK_PCIERCX_UNUSED_CAP9(unsigned long a)
28830 {
28831     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28832         return 0xe0ll + 0x100000000ll * ((a) & 0x3);
28833     __bdk_csr_fatal("PCIERCX_UNUSED_CAP9", 1, a, 0, 0, 0);
28834 }
28835 
28836 #define typedef_BDK_PCIERCX_UNUSED_CAP9(a) bdk_pciercx_unused_cap9_t
28837 #define bustype_BDK_PCIERCX_UNUSED_CAP9(a) BDK_CSR_TYPE_PCICONFIGRC
28838 #define basename_BDK_PCIERCX_UNUSED_CAP9(a) "PCIERCX_UNUSED_CAP9"
28839 #define busnum_BDK_PCIERCX_UNUSED_CAP9(a) (a)
28840 #define arguments_BDK_PCIERCX_UNUSED_CAP9(a) (a),-1,-1,-1
28841 
28842 /**
28843  * Register (PCICONFIGRC) pcierc#_upconfig
28844  *
28845  * PCIe RC UpConfigure Multi-lane Control Register
28846  */
28847 union bdk_pciercx_upconfig
28848 {
28849     uint32_t u;
28850     struct bdk_pciercx_upconfig_s
28851     {
28852 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28853         uint32_t reserved_8_31         : 24;
28854         uint32_t upc_supp              : 1;  /**< [  7:  7](R/W) Upconfigure support.
28855                                                                  The core sends this value to the link upconfigure capability in TS2 ordered
28856                                                                  sets in Configuration.Complete state. */
28857         uint32_t dir_lnk_wdth_chg      : 1;  /**< [  6:  6](R/W/H) Directed link width change.
28858                                                                  The core always moves to configuration state through recovery state
28859                                                                  when this bit is set.
28860 
28861                                                                  If PCIERC_RAS_EINJ_CTL6PE[LTSSM_VAR] is set and PCIERC_LINK_CTL2[HASD]
28862                                                                  is zero, the core starts upconfigure or autonomous width
28863                                                                  downsizing (to the [TRGT_LNK_WDTH] value) in the configuration
28864                                                                  state.
28865 
28866                                                                  If [TRGT_LNK_WDTH] is 0x0, the core does not start upconfigure or autonomous
28867                                                                  width downsizing in the configuration state.
28868 
28869                                                                  The core self-clears this field when the core accepts this
28870                                                                  request. */
28871         uint32_t trgt_lnk_wdth         : 6;  /**< [  5:  0](R/W/H) Target link width.
28872                                                                  0x0  = Core does not start upconfigure or autonomous width downsizing in configuration
28873                                                                  state.
28874                                                                  0x1  = x1.
28875                                                                  0x2  = x2.
28876                                                                  0x4  = x4.
28877                                                                  0x8  = x8.
28878                                                                  0x10 = x16.
28879                                                                  0x20 = x32 (Not supported). */
28880 #else /* Word 0 - Little Endian */
28881         uint32_t trgt_lnk_wdth         : 6;  /**< [  5:  0](R/W/H) Target link width.
28882                                                                  0x0  = Core does not start upconfigure or autonomous width downsizing in configuration
28883                                                                  state.
28884                                                                  0x1  = x1.
28885                                                                  0x2  = x2.
28886                                                                  0x4  = x4.
28887                                                                  0x8  = x8.
28888                                                                  0x10 = x16.
28889                                                                  0x20 = x32 (Not supported). */
28890         uint32_t dir_lnk_wdth_chg      : 1;  /**< [  6:  6](R/W/H) Directed link width change.
28891                                                                  The core always moves to configuration state through recovery state
28892                                                                  when this bit is set.
28893 
28894                                                                  If PCIERC_RAS_EINJ_CTL6PE[LTSSM_VAR] is set and PCIERC_LINK_CTL2[HASD]
28895                                                                  is zero, the core starts upconfigure or autonomous width
28896                                                                  downsizing (to the [TRGT_LNK_WDTH] value) in the configuration
28897                                                                  state.
28898 
28899                                                                  If [TRGT_LNK_WDTH] is 0x0, the core does not start upconfigure or autonomous
28900                                                                  width downsizing in the configuration state.
28901 
28902                                                                  The core self-clears this field when the core accepts this
28903                                                                  request. */
28904         uint32_t upc_supp              : 1;  /**< [  7:  7](R/W) Upconfigure support.
28905                                                                  The core sends this value to the link upconfigure capability in TS2 ordered
28906                                                                  sets in Configuration.Complete state. */
28907         uint32_t reserved_8_31         : 24;
28908 #endif /* Word 0 - End */
28909     } s;
28910     /* struct bdk_pciercx_upconfig_s cn; */
28911 };
28912 typedef union bdk_pciercx_upconfig bdk_pciercx_upconfig_t;
28913 
28914 static inline uint64_t BDK_PCIERCX_UPCONFIG(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_UPCONFIG(unsigned long a)28915 static inline uint64_t BDK_PCIERCX_UPCONFIG(unsigned long a)
28916 {
28917     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28918         return 0x8c0ll + 0x100000000ll * ((a) & 0x3);
28919     __bdk_csr_fatal("PCIERCX_UPCONFIG", 1, a, 0, 0, 0);
28920 }
28921 
28922 #define typedef_BDK_PCIERCX_UPCONFIG(a) bdk_pciercx_upconfig_t
28923 #define bustype_BDK_PCIERCX_UPCONFIG(a) BDK_CSR_TYPE_PCICONFIGRC
28924 #define basename_BDK_PCIERCX_UPCONFIG(a) "PCIERCX_UPCONFIG"
28925 #define busnum_BDK_PCIERCX_UPCONFIG(a) (a)
28926 #define arguments_BDK_PCIERCX_UPCONFIG(a) (a),-1,-1,-1
28927 
28928 /**
28929  * Register (PCICONFIGRC) pcierc#_ver_num
28930  *
28931  * PCIe RC Controller IIP Release Version Number Register
28932  */
28933 union bdk_pciercx_ver_num
28934 {
28935     uint32_t u;
28936     struct bdk_pciercx_ver_num_s
28937     {
28938 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28939         uint32_t vn                    : 32; /**< [ 31:  0](RO) Version number. Convert hex characters to ASCII to interpret. */
28940 #else /* Word 0 - Little Endian */
28941         uint32_t vn                    : 32; /**< [ 31:  0](RO) Version number. Convert hex characters to ASCII to interpret. */
28942 #endif /* Word 0 - End */
28943     } s;
28944     /* struct bdk_pciercx_ver_num_s cn; */
28945 };
28946 typedef union bdk_pciercx_ver_num bdk_pciercx_ver_num_t;
28947 
28948 static inline uint64_t BDK_PCIERCX_VER_NUM(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_VER_NUM(unsigned long a)28949 static inline uint64_t BDK_PCIERCX_VER_NUM(unsigned long a)
28950 {
28951     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28952         return 0x8f8ll + 0x100000000ll * ((a) & 0x3);
28953     __bdk_csr_fatal("PCIERCX_VER_NUM", 1, a, 0, 0, 0);
28954 }
28955 
28956 #define typedef_BDK_PCIERCX_VER_NUM(a) bdk_pciercx_ver_num_t
28957 #define bustype_BDK_PCIERCX_VER_NUM(a) BDK_CSR_TYPE_PCICONFIGRC
28958 #define basename_BDK_PCIERCX_VER_NUM(a) "PCIERCX_VER_NUM"
28959 #define busnum_BDK_PCIERCX_VER_NUM(a) (a)
28960 #define arguments_BDK_PCIERCX_VER_NUM(a) (a),-1,-1,-1
28961 
28962 /**
28963  * Register (PCICONFIGRC) pcierc#_ver_type
28964  *
28965  * PCIe RC Contorller IIP Release Version Type Register
28966  */
28967 union bdk_pciercx_ver_type
28968 {
28969     uint32_t u;
28970     struct bdk_pciercx_ver_type_s
28971     {
28972 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
28973         uint32_t vt                    : 32; /**< [ 31:  0](RO) Version type. Convert hex characters to ASCII to interpret. */
28974 #else /* Word 0 - Little Endian */
28975         uint32_t vt                    : 32; /**< [ 31:  0](RO) Version type. Convert hex characters to ASCII to interpret. */
28976 #endif /* Word 0 - End */
28977     } s;
28978     /* struct bdk_pciercx_ver_type_s cn; */
28979 };
28980 typedef union bdk_pciercx_ver_type bdk_pciercx_ver_type_t;
28981 
28982 static inline uint64_t BDK_PCIERCX_VER_TYPE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_VER_TYPE(unsigned long a)28983 static inline uint64_t BDK_PCIERCX_VER_TYPE(unsigned long a)
28984 {
28985     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
28986         return 0x8fcll + 0x100000000ll * ((a) & 0x3);
28987     __bdk_csr_fatal("PCIERCX_VER_TYPE", 1, a, 0, 0, 0);
28988 }
28989 
28990 #define typedef_BDK_PCIERCX_VER_TYPE(a) bdk_pciercx_ver_type_t
28991 #define bustype_BDK_PCIERCX_VER_TYPE(a) BDK_CSR_TYPE_PCICONFIGRC
28992 #define basename_BDK_PCIERCX_VER_TYPE(a) "PCIERCX_VER_TYPE"
28993 #define busnum_BDK_PCIERCX_VER_TYPE(a) (a)
28994 #define arguments_BDK_PCIERCX_VER_TYPE(a) (a),-1,-1,-1
28995 
28996 /**
28997  * Register (PCICONFIGRC) pcierc#_vpd_base
28998  *
28999  * PCIe RC PCI Express VPD Control and Capabilities Register
29000  * Internal:
29001  * All 32 bits are writable through PEM()_CFG_WR, so that software may replace VPD
29002  * capability with another desired capablility as a PCIERC_UNUSED_CAP5, (e.g. Enhanced
29003  * Allocation) if desired.
29004  */
29005 union bdk_pciercx_vpd_base
29006 {
29007     uint32_t u;
29008     struct bdk_pciercx_vpd_base_s
29009     {
29010 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
29011         uint32_t flag                  : 1;  /**< [ 31: 31](R/W) VPD flag. */
29012         uint32_t addr                  : 15; /**< [ 30: 16](R/W) VPD address. */
29013         uint32_t nco                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability offset. End of list.
29014                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
29015         uint32_t pcieec                : 8;  /**< [  7:  0](RO) PCI Express extended capability.
29016                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
29017 #else /* Word 0 - Little Endian */
29018         uint32_t pcieec                : 8;  /**< [  7:  0](RO) PCI Express extended capability.
29019                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
29020         uint32_t nco                   : 8;  /**< [ 15:  8](RO/WRSL) Next capability offset. End of list.
29021                                                                  Writable through PEM()_CFG_WR. However, the application must not change this field. */
29022         uint32_t addr                  : 15; /**< [ 30: 16](R/W) VPD address. */
29023         uint32_t flag                  : 1;  /**< [ 31: 31](R/W) VPD flag. */
29024 #endif /* Word 0 - End */
29025     } s;
29026     /* struct bdk_pciercx_vpd_base_s cn; */
29027 };
29028 typedef union bdk_pciercx_vpd_base bdk_pciercx_vpd_base_t;
29029 
29030 static inline uint64_t BDK_PCIERCX_VPD_BASE(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_VPD_BASE(unsigned long a)29031 static inline uint64_t BDK_PCIERCX_VPD_BASE(unsigned long a)
29032 {
29033     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
29034         return 0xd0ll + 0x100000000ll * ((a) & 0x3);
29035     __bdk_csr_fatal("PCIERCX_VPD_BASE", 1, a, 0, 0, 0);
29036 }
29037 
29038 #define typedef_BDK_PCIERCX_VPD_BASE(a) bdk_pciercx_vpd_base_t
29039 #define bustype_BDK_PCIERCX_VPD_BASE(a) BDK_CSR_TYPE_PCICONFIGRC
29040 #define basename_BDK_PCIERCX_VPD_BASE(a) "PCIERCX_VPD_BASE"
29041 #define busnum_BDK_PCIERCX_VPD_BASE(a) (a)
29042 #define arguments_BDK_PCIERCX_VPD_BASE(a) (a),-1,-1,-1
29043 
29044 /**
29045  * Register (PCICONFIGRC) pcierc#_vpd_data
29046  *
29047  * PCIe RC PCI Express VPD Data Register
29048  * Internal:
29049  * All 32 bits are writable through PEM()_CFG_WR, so that software may replace VPD
29050  * capability with another desired capablility as a PCIERC_UNUSED_CAP6, (e.g. Enhanced
29051  * Allocation) if desired.
29052  */
29053 union bdk_pciercx_vpd_data
29054 {
29055     uint32_t u;
29056     struct bdk_pciercx_vpd_data_s
29057     {
29058 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
29059         uint32_t data                  : 32; /**< [ 31:  0](R/W) VPD data. */
29060 #else /* Word 0 - Little Endian */
29061         uint32_t data                  : 32; /**< [ 31:  0](R/W) VPD data. */
29062 #endif /* Word 0 - End */
29063     } s;
29064     /* struct bdk_pciercx_vpd_data_s cn; */
29065 };
29066 typedef union bdk_pciercx_vpd_data bdk_pciercx_vpd_data_t;
29067 
29068 static inline uint64_t BDK_PCIERCX_VPD_DATA(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_VPD_DATA(unsigned long a)29069 static inline uint64_t BDK_PCIERCX_VPD_DATA(unsigned long a)
29070 {
29071     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
29072         return 0xd4ll + 0x100000000ll * ((a) & 0x3);
29073     __bdk_csr_fatal("PCIERCX_VPD_DATA", 1, a, 0, 0, 0);
29074 }
29075 
29076 #define typedef_BDK_PCIERCX_VPD_DATA(a) bdk_pciercx_vpd_data_t
29077 #define bustype_BDK_PCIERCX_VPD_DATA(a) BDK_CSR_TYPE_PCICONFIGRC
29078 #define basename_BDK_PCIERCX_VPD_DATA(a) "PCIERCX_VPD_DATA"
29079 #define busnum_BDK_PCIERCX_VPD_DATA(a) (a)
29080 #define arguments_BDK_PCIERCX_VPD_DATA(a) (a),-1,-1,-1
29081 
29082 /**
29083  * Register (PCICONFIGRC) pcierc#_xmit_arb1
29084  *
29085  * PCIe RC VC Transmit Arbitration Register 1
29086  */
29087 union bdk_pciercx_xmit_arb1
29088 {
29089     uint32_t u;
29090     struct bdk_pciercx_xmit_arb1_s
29091     {
29092 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
29093         uint32_t wrr_vc3               : 8;  /**< [ 31: 24](RO) WRR weight for VC3. */
29094         uint32_t wrr_vc2               : 8;  /**< [ 23: 16](RO) WRR weight for VC2. */
29095         uint32_t wrr_vc1               : 8;  /**< [ 15:  8](RO) WRR weight for VC1. */
29096         uint32_t wrr_vc0               : 8;  /**< [  7:  0](RO) WRR weight for VC0. */
29097 #else /* Word 0 - Little Endian */
29098         uint32_t wrr_vc0               : 8;  /**< [  7:  0](RO) WRR weight for VC0. */
29099         uint32_t wrr_vc1               : 8;  /**< [ 15:  8](RO) WRR weight for VC1. */
29100         uint32_t wrr_vc2               : 8;  /**< [ 23: 16](RO) WRR weight for VC2. */
29101         uint32_t wrr_vc3               : 8;  /**< [ 31: 24](RO) WRR weight for VC3. */
29102 #endif /* Word 0 - End */
29103     } s;
29104     /* struct bdk_pciercx_xmit_arb1_s cn; */
29105 };
29106 typedef union bdk_pciercx_xmit_arb1 bdk_pciercx_xmit_arb1_t;
29107 
29108 static inline uint64_t BDK_PCIERCX_XMIT_ARB1(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_XMIT_ARB1(unsigned long a)29109 static inline uint64_t BDK_PCIERCX_XMIT_ARB1(unsigned long a)
29110 {
29111     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
29112         return 0x740ll + 0x100000000ll * ((a) & 0x3);
29113     __bdk_csr_fatal("PCIERCX_XMIT_ARB1", 1, a, 0, 0, 0);
29114 }
29115 
29116 #define typedef_BDK_PCIERCX_XMIT_ARB1(a) bdk_pciercx_xmit_arb1_t
29117 #define bustype_BDK_PCIERCX_XMIT_ARB1(a) BDK_CSR_TYPE_PCICONFIGRC
29118 #define basename_BDK_PCIERCX_XMIT_ARB1(a) "PCIERCX_XMIT_ARB1"
29119 #define busnum_BDK_PCIERCX_XMIT_ARB1(a) (a)
29120 #define arguments_BDK_PCIERCX_XMIT_ARB1(a) (a),-1,-1,-1
29121 
29122 /**
29123  * Register (PCICONFIGRC) pcierc#_xmit_arb2
29124  *
29125  * PCIe RC VC Transmit Arbitration Register 2
29126  */
29127 union bdk_pciercx_xmit_arb2
29128 {
29129     uint32_t u;
29130     struct bdk_pciercx_xmit_arb2_s
29131     {
29132 #if __BYTE_ORDER == __BIG_ENDIAN /* Word 0 - Big Endian */
29133         uint32_t wrr_vc7               : 8;  /**< [ 31: 24](RO) WRR weight for VC7. */
29134         uint32_t wrr_vc6               : 8;  /**< [ 23: 16](RO) WRR weight for VC6. */
29135         uint32_t wrr_vc5               : 8;  /**< [ 15:  8](RO) WRR weight for VC5. */
29136         uint32_t wrr_vc4               : 8;  /**< [  7:  0](RO) WRR weight for VC4. */
29137 #else /* Word 0 - Little Endian */
29138         uint32_t wrr_vc4               : 8;  /**< [  7:  0](RO) WRR weight for VC4. */
29139         uint32_t wrr_vc5               : 8;  /**< [ 15:  8](RO) WRR weight for VC5. */
29140         uint32_t wrr_vc6               : 8;  /**< [ 23: 16](RO) WRR weight for VC6. */
29141         uint32_t wrr_vc7               : 8;  /**< [ 31: 24](RO) WRR weight for VC7. */
29142 #endif /* Word 0 - End */
29143     } s;
29144     /* struct bdk_pciercx_xmit_arb2_s cn; */
29145 };
29146 typedef union bdk_pciercx_xmit_arb2 bdk_pciercx_xmit_arb2_t;
29147 
29148 static inline uint64_t BDK_PCIERCX_XMIT_ARB2(unsigned long a) __attribute__ ((pure, always_inline));
BDK_PCIERCX_XMIT_ARB2(unsigned long a)29149 static inline uint64_t BDK_PCIERCX_XMIT_ARB2(unsigned long a)
29150 {
29151     if (CAVIUM_IS_MODEL(CAVIUM_CN9XXX) && (a<=3))
29152         return 0x744ll + 0x100000000ll * ((a) & 0x3);
29153     __bdk_csr_fatal("PCIERCX_XMIT_ARB2", 1, a, 0, 0, 0);
29154 }
29155 
29156 #define typedef_BDK_PCIERCX_XMIT_ARB2(a) bdk_pciercx_xmit_arb2_t
29157 #define bustype_BDK_PCIERCX_XMIT_ARB2(a) BDK_CSR_TYPE_PCICONFIGRC
29158 #define basename_BDK_PCIERCX_XMIT_ARB2(a) "PCIERCX_XMIT_ARB2"
29159 #define busnum_BDK_PCIERCX_XMIT_ARB2(a) (a)
29160 #define arguments_BDK_PCIERCX_XMIT_ARB2(a) (a),-1,-1,-1
29161 
29162 #endif /* __BDK_CSRS_PCIERC_H__ */
29163