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