cvmx-pemx-defs.h revision 302408
1/***********************license start***************
2 * Copyright (c) 2003-2012  Cavium Inc. (support@cavium.com). All rights
3 * reserved.
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 *   * Redistributions of source code must retain the above copyright
11 *     notice, this list of conditions and the following disclaimer.
12 *
13 *   * Redistributions in binary form must reproduce the above
14 *     copyright notice, this list of conditions and the following
15 *     disclaimer in the documentation and/or other materials provided
16 *     with the distribution.
17
18 *   * Neither the name of Cavium Inc. nor the names of
19 *     its contributors may be used to endorse or promote products
20 *     derived from this software without specific prior written
21 *     permission.
22
23 * This Software, including technical data, may be subject to U.S. export  control
24 * laws, including the U.S. Export Administration Act and its  associated
25 * regulations, and may be subject to export or import  regulations in other
26 * countries.
27
28 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29 * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31 * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32 * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33 * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34 * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35 * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36 * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE  RISK ARISING OUT OF USE OR
37 * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38 ***********************license end**************************************/
39
40
41/**
42 * cvmx-pemx-defs.h
43 *
44 * Configuration and status register (CSR) type definitions for
45 * Octeon pemx.
46 *
47 * This file is auto generated. Do not edit.
48 *
49 * <hr>$Revision$<hr>
50 *
51 */
52#ifndef __CVMX_PEMX_DEFS_H__
53#define __CVMX_PEMX_DEFS_H__
54
55#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56static inline uint64_t CVMX_PEMX_BAR1_INDEXX(unsigned long offset, unsigned long block_id)
57{
58	if (!(
59	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && (((offset <= 15)) && ((block_id <= 1)))) ||
60	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 15)) && ((block_id <= 1)))) ||
61	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset <= 15)) && ((block_id <= 1)))) ||
62	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && (((offset <= 15)) && ((block_id <= 1)))) ||
63	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && (((offset <= 15)) && ((block_id <= 1))))))
64		cvmx_warn("CVMX_PEMX_BAR1_INDEXX(%lu,%lu) is invalid on this chip\n", offset, block_id);
65	return CVMX_ADD_IO_SEG(0x00011800C00000A8ull) + (((offset) & 15) + ((block_id) & 1) * 0x200000ull) * 8;
66}
67#else
68#define CVMX_PEMX_BAR1_INDEXX(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C00000A8ull) + (((offset) & 15) + ((block_id) & 1) * 0x200000ull) * 8)
69#endif
70#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
71static inline uint64_t CVMX_PEMX_BAR2_MASK(unsigned long block_id)
72{
73	if (!(
74	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
75	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
76	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
77	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
78		cvmx_warn("CVMX_PEMX_BAR2_MASK(%lu) is invalid on this chip\n", block_id);
79	return CVMX_ADD_IO_SEG(0x00011800C0000130ull) + ((block_id) & 1) * 0x1000000ull;
80}
81#else
82#define CVMX_PEMX_BAR2_MASK(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000130ull) + ((block_id) & 1) * 0x1000000ull)
83#endif
84#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
85static inline uint64_t CVMX_PEMX_BAR_CTL(unsigned long block_id)
86{
87	if (!(
88	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
89	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
90	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
91	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
92	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
93		cvmx_warn("CVMX_PEMX_BAR_CTL(%lu) is invalid on this chip\n", block_id);
94	return CVMX_ADD_IO_SEG(0x00011800C0000128ull) + ((block_id) & 1) * 0x1000000ull;
95}
96#else
97#define CVMX_PEMX_BAR_CTL(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000128ull) + ((block_id) & 1) * 0x1000000ull)
98#endif
99#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
100static inline uint64_t CVMX_PEMX_BIST_STATUS(unsigned long block_id)
101{
102	if (!(
103	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
104	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
105	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
106	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
107	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
108		cvmx_warn("CVMX_PEMX_BIST_STATUS(%lu) is invalid on this chip\n", block_id);
109	return CVMX_ADD_IO_SEG(0x00011800C0000018ull) + ((block_id) & 1) * 0x1000000ull;
110}
111#else
112#define CVMX_PEMX_BIST_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000018ull) + ((block_id) & 1) * 0x1000000ull)
113#endif
114#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
115static inline uint64_t CVMX_PEMX_BIST_STATUS2(unsigned long block_id)
116{
117	if (!(
118	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
119	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
120	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
121	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
122	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
123		cvmx_warn("CVMX_PEMX_BIST_STATUS2(%lu) is invalid on this chip\n", block_id);
124	return CVMX_ADD_IO_SEG(0x00011800C0000420ull) + ((block_id) & 1) * 0x1000000ull;
125}
126#else
127#define CVMX_PEMX_BIST_STATUS2(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000420ull) + ((block_id) & 1) * 0x1000000ull)
128#endif
129#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
130static inline uint64_t CVMX_PEMX_CFG_RD(unsigned long block_id)
131{
132	if (!(
133	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
134	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
135	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
136	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
137	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
138		cvmx_warn("CVMX_PEMX_CFG_RD(%lu) is invalid on this chip\n", block_id);
139	return CVMX_ADD_IO_SEG(0x00011800C0000030ull) + ((block_id) & 1) * 0x1000000ull;
140}
141#else
142#define CVMX_PEMX_CFG_RD(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000030ull) + ((block_id) & 1) * 0x1000000ull)
143#endif
144#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
145static inline uint64_t CVMX_PEMX_CFG_WR(unsigned long block_id)
146{
147	if (!(
148	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
149	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
150	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
151	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
152	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
153		cvmx_warn("CVMX_PEMX_CFG_WR(%lu) is invalid on this chip\n", block_id);
154	return CVMX_ADD_IO_SEG(0x00011800C0000028ull) + ((block_id) & 1) * 0x1000000ull;
155}
156#else
157#define CVMX_PEMX_CFG_WR(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000028ull) + ((block_id) & 1) * 0x1000000ull)
158#endif
159#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
160static inline uint64_t CVMX_PEMX_CPL_LUT_VALID(unsigned long block_id)
161{
162	if (!(
163	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
164	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
165	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
166	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
167	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
168		cvmx_warn("CVMX_PEMX_CPL_LUT_VALID(%lu) is invalid on this chip\n", block_id);
169	return CVMX_ADD_IO_SEG(0x00011800C0000098ull) + ((block_id) & 1) * 0x1000000ull;
170}
171#else
172#define CVMX_PEMX_CPL_LUT_VALID(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000098ull) + ((block_id) & 1) * 0x1000000ull)
173#endif
174#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
175static inline uint64_t CVMX_PEMX_CTL_STATUS(unsigned long block_id)
176{
177	if (!(
178	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
179	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
180	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
181	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
182	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
183		cvmx_warn("CVMX_PEMX_CTL_STATUS(%lu) is invalid on this chip\n", block_id);
184	return CVMX_ADD_IO_SEG(0x00011800C0000000ull) + ((block_id) & 1) * 0x1000000ull;
185}
186#else
187#define CVMX_PEMX_CTL_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000000ull) + ((block_id) & 1) * 0x1000000ull)
188#endif
189#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
190static inline uint64_t CVMX_PEMX_DBG_INFO(unsigned long block_id)
191{
192	if (!(
193	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
194	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
195	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
196	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
197	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
198		cvmx_warn("CVMX_PEMX_DBG_INFO(%lu) is invalid on this chip\n", block_id);
199	return CVMX_ADD_IO_SEG(0x00011800C0000008ull) + ((block_id) & 1) * 0x1000000ull;
200}
201#else
202#define CVMX_PEMX_DBG_INFO(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000008ull) + ((block_id) & 1) * 0x1000000ull)
203#endif
204#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
205static inline uint64_t CVMX_PEMX_DBG_INFO_EN(unsigned long block_id)
206{
207	if (!(
208	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
209	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
210	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
211	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
212	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
213		cvmx_warn("CVMX_PEMX_DBG_INFO_EN(%lu) is invalid on this chip\n", block_id);
214	return CVMX_ADD_IO_SEG(0x00011800C00000A0ull) + ((block_id) & 1) * 0x1000000ull;
215}
216#else
217#define CVMX_PEMX_DBG_INFO_EN(block_id) (CVMX_ADD_IO_SEG(0x00011800C00000A0ull) + ((block_id) & 1) * 0x1000000ull)
218#endif
219#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
220static inline uint64_t CVMX_PEMX_DIAG_STATUS(unsigned long block_id)
221{
222	if (!(
223	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
224	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
225	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
226	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
227	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
228		cvmx_warn("CVMX_PEMX_DIAG_STATUS(%lu) is invalid on this chip\n", block_id);
229	return CVMX_ADD_IO_SEG(0x00011800C0000020ull) + ((block_id) & 1) * 0x1000000ull;
230}
231#else
232#define CVMX_PEMX_DIAG_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000020ull) + ((block_id) & 1) * 0x1000000ull)
233#endif
234#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
235static inline uint64_t CVMX_PEMX_INB_READ_CREDITS(unsigned long block_id)
236{
237	if (!(
238	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
239	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
240	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
241	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
242		cvmx_warn("CVMX_PEMX_INB_READ_CREDITS(%lu) is invalid on this chip\n", block_id);
243	return CVMX_ADD_IO_SEG(0x00011800C0000138ull) + ((block_id) & 1) * 0x1000000ull;
244}
245#else
246#define CVMX_PEMX_INB_READ_CREDITS(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000138ull) + ((block_id) & 1) * 0x1000000ull)
247#endif
248#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
249static inline uint64_t CVMX_PEMX_INT_ENB(unsigned long block_id)
250{
251	if (!(
252	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
253	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
254	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
255	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
256	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
257		cvmx_warn("CVMX_PEMX_INT_ENB(%lu) is invalid on this chip\n", block_id);
258	return CVMX_ADD_IO_SEG(0x00011800C0000410ull) + ((block_id) & 1) * 0x1000000ull;
259}
260#else
261#define CVMX_PEMX_INT_ENB(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000410ull) + ((block_id) & 1) * 0x1000000ull)
262#endif
263#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
264static inline uint64_t CVMX_PEMX_INT_ENB_INT(unsigned long block_id)
265{
266	if (!(
267	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
268	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
269	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
270	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
271	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
272		cvmx_warn("CVMX_PEMX_INT_ENB_INT(%lu) is invalid on this chip\n", block_id);
273	return CVMX_ADD_IO_SEG(0x00011800C0000418ull) + ((block_id) & 1) * 0x1000000ull;
274}
275#else
276#define CVMX_PEMX_INT_ENB_INT(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000418ull) + ((block_id) & 1) * 0x1000000ull)
277#endif
278#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
279static inline uint64_t CVMX_PEMX_INT_SUM(unsigned long block_id)
280{
281	if (!(
282	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
283	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
284	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
285	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
286	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
287		cvmx_warn("CVMX_PEMX_INT_SUM(%lu) is invalid on this chip\n", block_id);
288	return CVMX_ADD_IO_SEG(0x00011800C0000408ull) + ((block_id) & 1) * 0x1000000ull;
289}
290#else
291#define CVMX_PEMX_INT_SUM(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000408ull) + ((block_id) & 1) * 0x1000000ull)
292#endif
293#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
294static inline uint64_t CVMX_PEMX_P2N_BAR0_START(unsigned long block_id)
295{
296	if (!(
297	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
298	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
299	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
300	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
301	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
302		cvmx_warn("CVMX_PEMX_P2N_BAR0_START(%lu) is invalid on this chip\n", block_id);
303	return CVMX_ADD_IO_SEG(0x00011800C0000080ull) + ((block_id) & 1) * 0x1000000ull;
304}
305#else
306#define CVMX_PEMX_P2N_BAR0_START(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000080ull) + ((block_id) & 1) * 0x1000000ull)
307#endif
308#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
309static inline uint64_t CVMX_PEMX_P2N_BAR1_START(unsigned long block_id)
310{
311	if (!(
312	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
313	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
314	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
315	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
316	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
317		cvmx_warn("CVMX_PEMX_P2N_BAR1_START(%lu) is invalid on this chip\n", block_id);
318	return CVMX_ADD_IO_SEG(0x00011800C0000088ull) + ((block_id) & 1) * 0x1000000ull;
319}
320#else
321#define CVMX_PEMX_P2N_BAR1_START(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000088ull) + ((block_id) & 1) * 0x1000000ull)
322#endif
323#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
324static inline uint64_t CVMX_PEMX_P2N_BAR2_START(unsigned long block_id)
325{
326	if (!(
327	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
328	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
329	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
330	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
331	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
332		cvmx_warn("CVMX_PEMX_P2N_BAR2_START(%lu) is invalid on this chip\n", block_id);
333	return CVMX_ADD_IO_SEG(0x00011800C0000090ull) + ((block_id) & 1) * 0x1000000ull;
334}
335#else
336#define CVMX_PEMX_P2N_BAR2_START(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000090ull) + ((block_id) & 1) * 0x1000000ull)
337#endif
338#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
339static inline uint64_t CVMX_PEMX_P2P_BARX_END(unsigned long offset, unsigned long block_id)
340{
341	if (!(
342	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
343	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
344	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && (((offset <= 3)) && ((block_id <= 1))))))
345		cvmx_warn("CVMX_PEMX_P2P_BARX_END(%lu,%lu) is invalid on this chip\n", offset, block_id);
346	return CVMX_ADD_IO_SEG(0x00011800C0000048ull) + (((offset) & 3) + ((block_id) & 1) * 0x100000ull) * 16;
347}
348#else
349#define CVMX_PEMX_P2P_BARX_END(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C0000048ull) + (((offset) & 3) + ((block_id) & 1) * 0x100000ull) * 16)
350#endif
351#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
352static inline uint64_t CVMX_PEMX_P2P_BARX_START(unsigned long offset, unsigned long block_id)
353{
354	if (!(
355	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
356	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset <= 3)) && ((block_id <= 1)))) ||
357	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && (((offset <= 3)) && ((block_id <= 1))))))
358		cvmx_warn("CVMX_PEMX_P2P_BARX_START(%lu,%lu) is invalid on this chip\n", offset, block_id);
359	return CVMX_ADD_IO_SEG(0x00011800C0000040ull) + (((offset) & 3) + ((block_id) & 1) * 0x100000ull) * 16;
360}
361#else
362#define CVMX_PEMX_P2P_BARX_START(offset, block_id) (CVMX_ADD_IO_SEG(0x00011800C0000040ull) + (((offset) & 3) + ((block_id) & 1) * 0x100000ull) * 16)
363#endif
364#if CVMX_ENABLE_CSR_ADDRESS_CHECKING
365static inline uint64_t CVMX_PEMX_TLP_CREDITS(unsigned long block_id)
366{
367	if (!(
368	      (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((block_id <= 1))) ||
369	      (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((block_id <= 1))) ||
370	      (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((block_id <= 1))) ||
371	      (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id <= 1))) ||
372	      (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((block_id <= 1)))))
373		cvmx_warn("CVMX_PEMX_TLP_CREDITS(%lu) is invalid on this chip\n", block_id);
374	return CVMX_ADD_IO_SEG(0x00011800C0000038ull) + ((block_id) & 1) * 0x1000000ull;
375}
376#else
377#define CVMX_PEMX_TLP_CREDITS(block_id) (CVMX_ADD_IO_SEG(0x00011800C0000038ull) + ((block_id) & 1) * 0x1000000ull)
378#endif
379
380/**
381 * cvmx_pem#_bar1_index#
382 *
383 * PEM_BAR1_INDEXX = PEM BAR1 IndexX Register
384 *
385 * Contains address index and control bits for access to memory ranges of BAR-1. Index is build from supplied address [25:22].
386 */
387union cvmx_pemx_bar1_indexx {
388	uint64_t u64;
389	struct cvmx_pemx_bar1_indexx_s {
390#ifdef __BIG_ENDIAN_BITFIELD
391	uint64_t reserved_20_63               : 44;
392	uint64_t addr_idx                     : 16; /**< Address bits [37:22] sent to L2C */
393	uint64_t ca                           : 1;  /**< Set '1' when access is not to be cached in L2. */
394	uint64_t end_swp                      : 2;  /**< Endian Swap Mode */
395	uint64_t addr_v                       : 1;  /**< Set '1' when the selected address range is valid. */
396#else
397	uint64_t addr_v                       : 1;
398	uint64_t end_swp                      : 2;
399	uint64_t ca                           : 1;
400	uint64_t addr_idx                     : 16;
401	uint64_t reserved_20_63               : 44;
402#endif
403	} s;
404	struct cvmx_pemx_bar1_indexx_s        cn61xx;
405	struct cvmx_pemx_bar1_indexx_s        cn63xx;
406	struct cvmx_pemx_bar1_indexx_s        cn63xxp1;
407	struct cvmx_pemx_bar1_indexx_s        cn66xx;
408	struct cvmx_pemx_bar1_indexx_s        cn68xx;
409	struct cvmx_pemx_bar1_indexx_s        cn68xxp1;
410	struct cvmx_pemx_bar1_indexx_s        cnf71xx;
411};
412typedef union cvmx_pemx_bar1_indexx cvmx_pemx_bar1_indexx_t;
413
414/**
415 * cvmx_pem#_bar2_mask
416 *
417 * PEM_BAR2_MASK = PEM BAR2 MASK
418 *
419 * The mask pattern that is ANDED with the address from PCIe core for BAR2 hits.
420 */
421union cvmx_pemx_bar2_mask {
422	uint64_t u64;
423	struct cvmx_pemx_bar2_mask_s {
424#ifdef __BIG_ENDIAN_BITFIELD
425	uint64_t reserved_38_63               : 26;
426	uint64_t mask                         : 35; /**< The value to be ANDED with the address sent to
427                                                         the Octeon memory. */
428	uint64_t reserved_0_2                 : 3;
429#else
430	uint64_t reserved_0_2                 : 3;
431	uint64_t mask                         : 35;
432	uint64_t reserved_38_63               : 26;
433#endif
434	} s;
435	struct cvmx_pemx_bar2_mask_s          cn61xx;
436	struct cvmx_pemx_bar2_mask_s          cn66xx;
437	struct cvmx_pemx_bar2_mask_s          cn68xx;
438	struct cvmx_pemx_bar2_mask_s          cn68xxp1;
439	struct cvmx_pemx_bar2_mask_s          cnf71xx;
440};
441typedef union cvmx_pemx_bar2_mask cvmx_pemx_bar2_mask_t;
442
443/**
444 * cvmx_pem#_bar_ctl
445 *
446 * PEM_BAR_CTL = PEM BAR Control
447 *
448 * Contains control for BAR accesses.
449 */
450union cvmx_pemx_bar_ctl {
451	uint64_t u64;
452	struct cvmx_pemx_bar_ctl_s {
453#ifdef __BIG_ENDIAN_BITFIELD
454	uint64_t reserved_7_63                : 57;
455	uint64_t bar1_siz                     : 3;  /**< Pcie-Port0, Bar1 Size. 1 == 64MB, 2 == 128MB,
456                                                         3 == 256MB, 4 == 512MB, 5 == 1024MB, 6 == 2048MB,
457                                                         0 and 7 are reserved. */
458	uint64_t bar2_enb                     : 1;  /**< When set '1' BAR2 is enable and will respond when
459                                                         clear '0' BAR2 access will cause UR responses. */
460	uint64_t bar2_esx                     : 2;  /**< Value will be XORed with pci-address[39:38] to
461                                                         determine the endian swap mode. */
462	uint64_t bar2_cax                     : 1;  /**< Value will be XORed with pcie-address[40] to
463                                                         determine the L2 cache attribute.
464                                                         Not cached in L2 if XOR result is 1 */
465#else
466	uint64_t bar2_cax                     : 1;
467	uint64_t bar2_esx                     : 2;
468	uint64_t bar2_enb                     : 1;
469	uint64_t bar1_siz                     : 3;
470	uint64_t reserved_7_63                : 57;
471#endif
472	} s;
473	struct cvmx_pemx_bar_ctl_s            cn61xx;
474	struct cvmx_pemx_bar_ctl_s            cn63xx;
475	struct cvmx_pemx_bar_ctl_s            cn63xxp1;
476	struct cvmx_pemx_bar_ctl_s            cn66xx;
477	struct cvmx_pemx_bar_ctl_s            cn68xx;
478	struct cvmx_pemx_bar_ctl_s            cn68xxp1;
479	struct cvmx_pemx_bar_ctl_s            cnf71xx;
480};
481typedef union cvmx_pemx_bar_ctl cvmx_pemx_bar_ctl_t;
482
483/**
484 * cvmx_pem#_bist_status
485 *
486 * PEM_BIST_STATUS = PEM Bist Status
487 *
488 * Contains the diffrent interrupt summary bits of the PEM.
489 */
490union cvmx_pemx_bist_status {
491	uint64_t u64;
492	struct cvmx_pemx_bist_status_s {
493#ifdef __BIG_ENDIAN_BITFIELD
494	uint64_t reserved_8_63                : 56;
495	uint64_t retry                        : 1;  /**< Retry Buffer. */
496	uint64_t rqdata0                      : 1;  /**< Rx Queue Data Memory0. */
497	uint64_t rqdata1                      : 1;  /**< Rx Queue Data Memory1. */
498	uint64_t rqdata2                      : 1;  /**< Rx Queue Data Memory2. */
499	uint64_t rqdata3                      : 1;  /**< Rx Queue Data Memory3. */
500	uint64_t rqhdr1                       : 1;  /**< Rx Queue Header1. */
501	uint64_t rqhdr0                       : 1;  /**< Rx Queue Header0. */
502	uint64_t sot                          : 1;  /**< SOT Buffer. */
503#else
504	uint64_t sot                          : 1;
505	uint64_t rqhdr0                       : 1;
506	uint64_t rqhdr1                       : 1;
507	uint64_t rqdata3                      : 1;
508	uint64_t rqdata2                      : 1;
509	uint64_t rqdata1                      : 1;
510	uint64_t rqdata0                      : 1;
511	uint64_t retry                        : 1;
512	uint64_t reserved_8_63                : 56;
513#endif
514	} s;
515	struct cvmx_pemx_bist_status_s        cn61xx;
516	struct cvmx_pemx_bist_status_s        cn63xx;
517	struct cvmx_pemx_bist_status_s        cn63xxp1;
518	struct cvmx_pemx_bist_status_s        cn66xx;
519	struct cvmx_pemx_bist_status_s        cn68xx;
520	struct cvmx_pemx_bist_status_s        cn68xxp1;
521	struct cvmx_pemx_bist_status_s        cnf71xx;
522};
523typedef union cvmx_pemx_bist_status cvmx_pemx_bist_status_t;
524
525/**
526 * cvmx_pem#_bist_status2
527 *
528 * PEM(0..1)_BIST_STATUS2 = PEM BIST Status Register
529 *
530 * Results from BIST runs of PEM's memories.
531 */
532union cvmx_pemx_bist_status2 {
533	uint64_t u64;
534	struct cvmx_pemx_bist_status2_s {
535#ifdef __BIG_ENDIAN_BITFIELD
536	uint64_t reserved_10_63               : 54;
537	uint64_t e2p_cpl                      : 1;  /**< BIST Status for the e2p_cpl_fifo */
538	uint64_t e2p_n                        : 1;  /**< BIST Status for the e2p_n_fifo */
539	uint64_t e2p_p                        : 1;  /**< BIST Status for the e2p_p_fifo */
540	uint64_t peai_p2e                     : 1;  /**< BIST Status for the peai__pesc_fifo */
541	uint64_t pef_tpf1                     : 1;  /**< BIST Status for the pef_tlp_p_fifo1 */
542	uint64_t pef_tpf0                     : 1;  /**< BIST Status for the pef_tlp_p_fifo0 */
543	uint64_t pef_tnf                      : 1;  /**< BIST Status for the pef_tlp_n_fifo */
544	uint64_t pef_tcf1                     : 1;  /**< BIST Status for the pef_tlp_cpl_fifo1 */
545	uint64_t pef_tc0                      : 1;  /**< BIST Status for the pef_tlp_cpl_fifo0 */
546	uint64_t ppf                          : 1;  /**< BIST Status for the ppf_fifo */
547#else
548	uint64_t ppf                          : 1;
549	uint64_t pef_tc0                      : 1;
550	uint64_t pef_tcf1                     : 1;
551	uint64_t pef_tnf                      : 1;
552	uint64_t pef_tpf0                     : 1;
553	uint64_t pef_tpf1                     : 1;
554	uint64_t peai_p2e                     : 1;
555	uint64_t e2p_p                        : 1;
556	uint64_t e2p_n                        : 1;
557	uint64_t e2p_cpl                      : 1;
558	uint64_t reserved_10_63               : 54;
559#endif
560	} s;
561	struct cvmx_pemx_bist_status2_s       cn61xx;
562	struct cvmx_pemx_bist_status2_s       cn63xx;
563	struct cvmx_pemx_bist_status2_s       cn63xxp1;
564	struct cvmx_pemx_bist_status2_s       cn66xx;
565	struct cvmx_pemx_bist_status2_s       cn68xx;
566	struct cvmx_pemx_bist_status2_s       cn68xxp1;
567	struct cvmx_pemx_bist_status2_s       cnf71xx;
568};
569typedef union cvmx_pemx_bist_status2 cvmx_pemx_bist_status2_t;
570
571/**
572 * cvmx_pem#_cfg_rd
573 *
574 * PEM_CFG_RD = PEM Configuration Read
575 *
576 * Allows read access to the configuration in the PCIe Core.
577 */
578union cvmx_pemx_cfg_rd {
579	uint64_t u64;
580	struct cvmx_pemx_cfg_rd_s {
581#ifdef __BIG_ENDIAN_BITFIELD
582	uint64_t data                         : 32; /**< Data. */
583	uint64_t addr                         : 32; /**< Address to read. A write to this register
584                                                         starts a read operation. */
585#else
586	uint64_t addr                         : 32;
587	uint64_t data                         : 32;
588#endif
589	} s;
590	struct cvmx_pemx_cfg_rd_s             cn61xx;
591	struct cvmx_pemx_cfg_rd_s             cn63xx;
592	struct cvmx_pemx_cfg_rd_s             cn63xxp1;
593	struct cvmx_pemx_cfg_rd_s             cn66xx;
594	struct cvmx_pemx_cfg_rd_s             cn68xx;
595	struct cvmx_pemx_cfg_rd_s             cn68xxp1;
596	struct cvmx_pemx_cfg_rd_s             cnf71xx;
597};
598typedef union cvmx_pemx_cfg_rd cvmx_pemx_cfg_rd_t;
599
600/**
601 * cvmx_pem#_cfg_wr
602 *
603 * PEM_CFG_WR = PEM Configuration Write
604 *
605 * Allows write access to the configuration in the PCIe Core.
606 */
607union cvmx_pemx_cfg_wr {
608	uint64_t u64;
609	struct cvmx_pemx_cfg_wr_s {
610#ifdef __BIG_ENDIAN_BITFIELD
611	uint64_t data                         : 32; /**< Data to write. A write to this register starts
612                                                         a write operation. */
613	uint64_t addr                         : 32; /**< Address to write. A write to this register starts
614                                                         a write operation. */
615#else
616	uint64_t addr                         : 32;
617	uint64_t data                         : 32;
618#endif
619	} s;
620	struct cvmx_pemx_cfg_wr_s             cn61xx;
621	struct cvmx_pemx_cfg_wr_s             cn63xx;
622	struct cvmx_pemx_cfg_wr_s             cn63xxp1;
623	struct cvmx_pemx_cfg_wr_s             cn66xx;
624	struct cvmx_pemx_cfg_wr_s             cn68xx;
625	struct cvmx_pemx_cfg_wr_s             cn68xxp1;
626	struct cvmx_pemx_cfg_wr_s             cnf71xx;
627};
628typedef union cvmx_pemx_cfg_wr cvmx_pemx_cfg_wr_t;
629
630/**
631 * cvmx_pem#_cpl_lut_valid
632 *
633 * PEM_CPL_LUT_VALID = PEM Cmpletion Lookup Table Valid
634 *
635 * Bit set for outstanding tag read.
636 */
637union cvmx_pemx_cpl_lut_valid {
638	uint64_t u64;
639	struct cvmx_pemx_cpl_lut_valid_s {
640#ifdef __BIG_ENDIAN_BITFIELD
641	uint64_t reserved_32_63               : 32;
642	uint64_t tag                          : 32; /**< Bit vector set cooresponds to an outstanding tag
643                                                         expecting a completion. */
644#else
645	uint64_t tag                          : 32;
646	uint64_t reserved_32_63               : 32;
647#endif
648	} s;
649	struct cvmx_pemx_cpl_lut_valid_s      cn61xx;
650	struct cvmx_pemx_cpl_lut_valid_s      cn63xx;
651	struct cvmx_pemx_cpl_lut_valid_s      cn63xxp1;
652	struct cvmx_pemx_cpl_lut_valid_s      cn66xx;
653	struct cvmx_pemx_cpl_lut_valid_s      cn68xx;
654	struct cvmx_pemx_cpl_lut_valid_s      cn68xxp1;
655	struct cvmx_pemx_cpl_lut_valid_s      cnf71xx;
656};
657typedef union cvmx_pemx_cpl_lut_valid cvmx_pemx_cpl_lut_valid_t;
658
659/**
660 * cvmx_pem#_ctl_status
661 *
662 * NOTE: Logic Analyzer is enabled with LA_EN for the specified PCS lane only. PKT_SZ is effective only when LA_EN=1
663 * For normal operation(sgmii or 1000Base-X), this bit must be 0.
664 * See pcsx.csr for xaui logic analyzer mode.
665 * For full description see document at .../rtl/pcs/readme_logic_analyzer.txt
666 *
667 *
668 *                   PEM_CTL_STATUS = PEM Control Status
669 *
670 *  General control and status of the PEM.
671 */
672union cvmx_pemx_ctl_status {
673	uint64_t u64;
674	struct cvmx_pemx_ctl_status_s {
675#ifdef __BIG_ENDIAN_BITFIELD
676	uint64_t reserved_48_63               : 16;
677	uint64_t auto_sd                      : 1;  /**< Link Hardware Autonomous Speed Disable. */
678	uint64_t dnum                         : 5;  /**< Primary bus device number. */
679	uint64_t pbus                         : 8;  /**< Primary bus number. */
680	uint64_t reserved_32_33               : 2;
681	uint64_t cfg_rtry                     : 16; /**< The time x 0x10000 in core clocks to wait for a
682                                                         CPL to a CFG RD that does not carry a Retry Status.
683                                                         Until such time that the timeout occurs and Retry
684                                                         Status is received for a CFG RD, the Read CFG Read
685                                                         will be resent. A value of 0 disables retries and
686                                                         treats a CPL Retry as a CPL UR.
687                                                         When enabled only one CFG RD may be issued until
688                                                         either successful completion or CPL UR. */
689	uint64_t reserved_12_15               : 4;
690	uint64_t pm_xtoff                     : 1;  /**< When WRITTEN with a '1' a single cycle pulse is
691                                                         to the PCIe core pm_xmt_turnoff port. RC mode. */
692	uint64_t pm_xpme                      : 1;  /**< When WRITTEN with a '1' a single cycle pulse is
693                                                         to the PCIe core pm_xmt_pme port. EP mode. */
694	uint64_t ob_p_cmd                     : 1;  /**< When WRITTEN with a '1' a single cycle pulse is
695                                                         to the PCIe core outband_pwrup_cmd port. EP mode. */
696	uint64_t reserved_7_8                 : 2;
697	uint64_t nf_ecrc                      : 1;  /**< Do not forward peer-to-peer ECRC TLPs. */
698	uint64_t dly_one                      : 1;  /**< When set the output client state machines will
699                                                         wait one cycle before starting a new TLP out. */
700	uint64_t lnk_enb                      : 1;  /**< When set '1' the link is enabled when '0' the
701                                                         link is disabled. This bit only is active when in
702                                                         RC mode. */
703	uint64_t ro_ctlp                      : 1;  /**< When set '1' C-TLPs that have the RO bit set will
704                                                         not wait for P-TLPs that normaly would be sent
705                                                         first. */
706	uint64_t fast_lm                      : 1;  /**< When '1' forces fast link mode. */
707	uint64_t inv_ecrc                     : 1;  /**< When '1' causes the LSB of the ECRC to be inverted. */
708	uint64_t inv_lcrc                     : 1;  /**< When '1' causes the LSB of the LCRC to be inverted. */
709#else
710	uint64_t inv_lcrc                     : 1;
711	uint64_t inv_ecrc                     : 1;
712	uint64_t fast_lm                      : 1;
713	uint64_t ro_ctlp                      : 1;
714	uint64_t lnk_enb                      : 1;
715	uint64_t dly_one                      : 1;
716	uint64_t nf_ecrc                      : 1;
717	uint64_t reserved_7_8                 : 2;
718	uint64_t ob_p_cmd                     : 1;
719	uint64_t pm_xpme                      : 1;
720	uint64_t pm_xtoff                     : 1;
721	uint64_t reserved_12_15               : 4;
722	uint64_t cfg_rtry                     : 16;
723	uint64_t reserved_32_33               : 2;
724	uint64_t pbus                         : 8;
725	uint64_t dnum                         : 5;
726	uint64_t auto_sd                      : 1;
727	uint64_t reserved_48_63               : 16;
728#endif
729	} s;
730	struct cvmx_pemx_ctl_status_s         cn61xx;
731	struct cvmx_pemx_ctl_status_s         cn63xx;
732	struct cvmx_pemx_ctl_status_s         cn63xxp1;
733	struct cvmx_pemx_ctl_status_s         cn66xx;
734	struct cvmx_pemx_ctl_status_s         cn68xx;
735	struct cvmx_pemx_ctl_status_s         cn68xxp1;
736	struct cvmx_pemx_ctl_status_s         cnf71xx;
737};
738typedef union cvmx_pemx_ctl_status cvmx_pemx_ctl_status_t;
739
740/**
741 * cvmx_pem#_dbg_info
742 *
743 * PEM(0..1)_DBG_INFO = PEM Debug Information
744 *
745 * General debug info.
746 */
747union cvmx_pemx_dbg_info {
748	uint64_t u64;
749	struct cvmx_pemx_dbg_info_s {
750#ifdef __BIG_ENDIAN_BITFIELD
751	uint64_t reserved_31_63               : 33;
752	uint64_t ecrc_e                       : 1;  /**< Received a ECRC error.
753                                                         radm_ecrc_err */
754	uint64_t rawwpp                       : 1;  /**< Received a write with poisoned payload
755                                                         radm_rcvd_wreq_poisoned */
756	uint64_t racpp                        : 1;  /**< Received a completion with poisoned payload
757                                                         radm_rcvd_cpl_poisoned */
758	uint64_t ramtlp                       : 1;  /**< Received a malformed TLP
759                                                         radm_mlf_tlp_err */
760	uint64_t rarwdns                      : 1;  /**< Recieved a request which device does not support
761                                                         radm_rcvd_ur_req */
762	uint64_t caar                         : 1;  /**< Completer aborted a request
763                                                         radm_rcvd_ca_req
764                                                         This bit will never be set because Octeon does
765                                                         not generate Completer Aborts. */
766	uint64_t racca                        : 1;  /**< Received a completion with CA status
767                                                         radm_rcvd_cpl_ca */
768	uint64_t racur                        : 1;  /**< Received a completion with UR status
769                                                         radm_rcvd_cpl_ur */
770	uint64_t rauc                         : 1;  /**< Received an unexpected completion
771                                                         radm_unexp_cpl_err */
772	uint64_t rqo                          : 1;  /**< Receive queue overflow. Normally happens only when
773                                                         flow control advertisements are ignored
774                                                         radm_qoverflow */
775	uint64_t fcuv                         : 1;  /**< Flow Control Update Violation (opt. checks)
776                                                         int_xadm_fc_prot_err */
777	uint64_t rpe                          : 1;  /**< When the PHY reports 8B/10B decode error
778                                                         (RxStatus = 3b100) or disparity error
779                                                         (RxStatus = 3b111), the signal rmlh_rcvd_err will
780                                                         be asserted.
781                                                         rmlh_rcvd_err */
782	uint64_t fcpvwt                       : 1;  /**< Flow Control Protocol Violation (Watchdog Timer)
783                                                         rtlh_fc_prot_err */
784	uint64_t dpeoosd                      : 1;  /**< DLLP protocol error (out of sequence DLLP)
785                                                         rdlh_prot_err */
786	uint64_t rtwdle                       : 1;  /**< Received TLP with DataLink Layer Error
787                                                         rdlh_bad_tlp_err */
788	uint64_t rdwdle                       : 1;  /**< Received DLLP with DataLink Layer Error
789                                                         rdlh_bad_dllp_err */
790	uint64_t mre                          : 1;  /**< Max Retries Exceeded
791                                                         xdlh_replay_num_rlover_err */
792	uint64_t rte                          : 1;  /**< Replay Timer Expired
793                                                         xdlh_replay_timeout_err
794                                                         This bit is set when the REPLAY_TIMER expires in
795                                                         the PCIE core. The probability of this bit being
796                                                         set will increase with the traffic load. */
797	uint64_t acto                         : 1;  /**< A Completion Timeout Occured
798                                                         pedc_radm_cpl_timeout */
799	uint64_t rvdm                         : 1;  /**< Received Vendor-Defined Message
800                                                         pedc_radm_vendor_msg */
801	uint64_t rumep                        : 1;  /**< Received Unlock Message (EP Mode Only)
802                                                         pedc_radm_msg_unlock */
803	uint64_t rptamrc                      : 1;  /**< Received PME Turnoff Acknowledge Message
804                                                         (RC Mode only)
805                                                         pedc_radm_pm_to_ack */
806	uint64_t rpmerc                       : 1;  /**< Received PME Message (RC Mode only)
807                                                         pedc_radm_pm_pme */
808	uint64_t rfemrc                       : 1;  /**< Received Fatal Error Message (RC Mode only)
809                                                         pedc_radm_fatal_err
810                                                         Bit set when a message with ERR_FATAL is set. */
811	uint64_t rnfemrc                      : 1;  /**< Received Non-Fatal Error Message (RC Mode only)
812                                                         pedc_radm_nonfatal_err */
813	uint64_t rcemrc                       : 1;  /**< Received Correctable Error Message (RC Mode only)
814                                                         pedc_radm_correctable_err */
815	uint64_t rpoison                      : 1;  /**< Received Poisoned TLP
816                                                         pedc__radm_trgt1_poisoned & pedc__radm_trgt1_hv */
817	uint64_t recrce                       : 1;  /**< Received ECRC Error
818                                                         pedc_radm_trgt1_ecrc_err & pedc__radm_trgt1_eot */
819	uint64_t rtlplle                      : 1;  /**< Received TLP has link layer error
820                                                         pedc_radm_trgt1_dllp_abort & pedc__radm_trgt1_eot */
821	uint64_t rtlpmal                      : 1;  /**< Received TLP is malformed or a message.
822                                                         pedc_radm_trgt1_tlp_abort & pedc__radm_trgt1_eot
823                                                         If the core receives a MSG (or Vendor Message)
824                                                         this bit will be set. */
825	uint64_t spoison                      : 1;  /**< Poisoned TLP sent
826                                                         peai__client0_tlp_ep & peai__client0_tlp_hv */
827#else
828	uint64_t spoison                      : 1;
829	uint64_t rtlpmal                      : 1;
830	uint64_t rtlplle                      : 1;
831	uint64_t recrce                       : 1;
832	uint64_t rpoison                      : 1;
833	uint64_t rcemrc                       : 1;
834	uint64_t rnfemrc                      : 1;
835	uint64_t rfemrc                       : 1;
836	uint64_t rpmerc                       : 1;
837	uint64_t rptamrc                      : 1;
838	uint64_t rumep                        : 1;
839	uint64_t rvdm                         : 1;
840	uint64_t acto                         : 1;
841	uint64_t rte                          : 1;
842	uint64_t mre                          : 1;
843	uint64_t rdwdle                       : 1;
844	uint64_t rtwdle                       : 1;
845	uint64_t dpeoosd                      : 1;
846	uint64_t fcpvwt                       : 1;
847	uint64_t rpe                          : 1;
848	uint64_t fcuv                         : 1;
849	uint64_t rqo                          : 1;
850	uint64_t rauc                         : 1;
851	uint64_t racur                        : 1;
852	uint64_t racca                        : 1;
853	uint64_t caar                         : 1;
854	uint64_t rarwdns                      : 1;
855	uint64_t ramtlp                       : 1;
856	uint64_t racpp                        : 1;
857	uint64_t rawwpp                       : 1;
858	uint64_t ecrc_e                       : 1;
859	uint64_t reserved_31_63               : 33;
860#endif
861	} s;
862	struct cvmx_pemx_dbg_info_s           cn61xx;
863	struct cvmx_pemx_dbg_info_s           cn63xx;
864	struct cvmx_pemx_dbg_info_s           cn63xxp1;
865	struct cvmx_pemx_dbg_info_s           cn66xx;
866	struct cvmx_pemx_dbg_info_s           cn68xx;
867	struct cvmx_pemx_dbg_info_s           cn68xxp1;
868	struct cvmx_pemx_dbg_info_s           cnf71xx;
869};
870typedef union cvmx_pemx_dbg_info cvmx_pemx_dbg_info_t;
871
872/**
873 * cvmx_pem#_dbg_info_en
874 *
875 * PEM(0..1)_DBG_INFO_EN = PEM Debug Information Enable
876 *
877 * Allows PEM_DBG_INFO to generate interrupts when cooresponding enable bit is set.
878 */
879union cvmx_pemx_dbg_info_en {
880	uint64_t u64;
881	struct cvmx_pemx_dbg_info_en_s {
882#ifdef __BIG_ENDIAN_BITFIELD
883	uint64_t reserved_31_63               : 33;
884	uint64_t ecrc_e                       : 1;  /**< Allows PEM_DBG_INFO[30] to generate an interrupt. */
885	uint64_t rawwpp                       : 1;  /**< Allows PEM_DBG_INFO[29] to generate an interrupt. */
886	uint64_t racpp                        : 1;  /**< Allows PEM_DBG_INFO[28] to generate an interrupt. */
887	uint64_t ramtlp                       : 1;  /**< Allows PEM_DBG_INFO[27] to generate an interrupt. */
888	uint64_t rarwdns                      : 1;  /**< Allows PEM_DBG_INFO[26] to generate an interrupt. */
889	uint64_t caar                         : 1;  /**< Allows PEM_DBG_INFO[25] to generate an interrupt. */
890	uint64_t racca                        : 1;  /**< Allows PEM_DBG_INFO[24] to generate an interrupt. */
891	uint64_t racur                        : 1;  /**< Allows PEM_DBG_INFO[23] to generate an interrupt. */
892	uint64_t rauc                         : 1;  /**< Allows PEM_DBG_INFO[22] to generate an interrupt. */
893	uint64_t rqo                          : 1;  /**< Allows PEM_DBG_INFO[21] to generate an interrupt. */
894	uint64_t fcuv                         : 1;  /**< Allows PEM_DBG_INFO[20] to generate an interrupt. */
895	uint64_t rpe                          : 1;  /**< Allows PEM_DBG_INFO[19] to generate an interrupt. */
896	uint64_t fcpvwt                       : 1;  /**< Allows PEM_DBG_INFO[18] to generate an interrupt. */
897	uint64_t dpeoosd                      : 1;  /**< Allows PEM_DBG_INFO[17] to generate an interrupt. */
898	uint64_t rtwdle                       : 1;  /**< Allows PEM_DBG_INFO[16] to generate an interrupt. */
899	uint64_t rdwdle                       : 1;  /**< Allows PEM_DBG_INFO[15] to generate an interrupt. */
900	uint64_t mre                          : 1;  /**< Allows PEM_DBG_INFO[14] to generate an interrupt. */
901	uint64_t rte                          : 1;  /**< Allows PEM_DBG_INFO[13] to generate an interrupt. */
902	uint64_t acto                         : 1;  /**< Allows PEM_DBG_INFO[12] to generate an interrupt. */
903	uint64_t rvdm                         : 1;  /**< Allows PEM_DBG_INFO[11] to generate an interrupt. */
904	uint64_t rumep                        : 1;  /**< Allows PEM_DBG_INFO[10] to generate an interrupt. */
905	uint64_t rptamrc                      : 1;  /**< Allows PEM_DBG_INFO[9] to generate an interrupt. */
906	uint64_t rpmerc                       : 1;  /**< Allows PEM_DBG_INFO[8] to generate an interrupt. */
907	uint64_t rfemrc                       : 1;  /**< Allows PEM_DBG_INFO[7] to generate an interrupt. */
908	uint64_t rnfemrc                      : 1;  /**< Allows PEM_DBG_INFO[6] to generate an interrupt. */
909	uint64_t rcemrc                       : 1;  /**< Allows PEM_DBG_INFO[5] to generate an interrupt. */
910	uint64_t rpoison                      : 1;  /**< Allows PEM_DBG_INFO[4] to generate an interrupt. */
911	uint64_t recrce                       : 1;  /**< Allows PEM_DBG_INFO[3] to generate an interrupt. */
912	uint64_t rtlplle                      : 1;  /**< Allows PEM_DBG_INFO[2] to generate an interrupt. */
913	uint64_t rtlpmal                      : 1;  /**< Allows PEM_DBG_INFO[1] to generate an interrupt. */
914	uint64_t spoison                      : 1;  /**< Allows PEM_DBG_INFO[0] to generate an interrupt. */
915#else
916	uint64_t spoison                      : 1;
917	uint64_t rtlpmal                      : 1;
918	uint64_t rtlplle                      : 1;
919	uint64_t recrce                       : 1;
920	uint64_t rpoison                      : 1;
921	uint64_t rcemrc                       : 1;
922	uint64_t rnfemrc                      : 1;
923	uint64_t rfemrc                       : 1;
924	uint64_t rpmerc                       : 1;
925	uint64_t rptamrc                      : 1;
926	uint64_t rumep                        : 1;
927	uint64_t rvdm                         : 1;
928	uint64_t acto                         : 1;
929	uint64_t rte                          : 1;
930	uint64_t mre                          : 1;
931	uint64_t rdwdle                       : 1;
932	uint64_t rtwdle                       : 1;
933	uint64_t dpeoosd                      : 1;
934	uint64_t fcpvwt                       : 1;
935	uint64_t rpe                          : 1;
936	uint64_t fcuv                         : 1;
937	uint64_t rqo                          : 1;
938	uint64_t rauc                         : 1;
939	uint64_t racur                        : 1;
940	uint64_t racca                        : 1;
941	uint64_t caar                         : 1;
942	uint64_t rarwdns                      : 1;
943	uint64_t ramtlp                       : 1;
944	uint64_t racpp                        : 1;
945	uint64_t rawwpp                       : 1;
946	uint64_t ecrc_e                       : 1;
947	uint64_t reserved_31_63               : 33;
948#endif
949	} s;
950	struct cvmx_pemx_dbg_info_en_s        cn61xx;
951	struct cvmx_pemx_dbg_info_en_s        cn63xx;
952	struct cvmx_pemx_dbg_info_en_s        cn63xxp1;
953	struct cvmx_pemx_dbg_info_en_s        cn66xx;
954	struct cvmx_pemx_dbg_info_en_s        cn68xx;
955	struct cvmx_pemx_dbg_info_en_s        cn68xxp1;
956	struct cvmx_pemx_dbg_info_en_s        cnf71xx;
957};
958typedef union cvmx_pemx_dbg_info_en cvmx_pemx_dbg_info_en_t;
959
960/**
961 * cvmx_pem#_diag_status
962 *
963 * PEM_DIAG_STATUS = PEM Diagnostic Status
964 *
965 * Selection control for the cores diagnostic bus.
966 */
967union cvmx_pemx_diag_status {
968	uint64_t u64;
969	struct cvmx_pemx_diag_status_s {
970#ifdef __BIG_ENDIAN_BITFIELD
971	uint64_t reserved_4_63                : 60;
972	uint64_t pm_dst                       : 1;  /**< Current power management DSTATE. */
973	uint64_t pm_stat                      : 1;  /**< Power Management Status. */
974	uint64_t pm_en                        : 1;  /**< Power Management Event Enable. */
975	uint64_t aux_en                       : 1;  /**< Auxilary Power Enable. */
976#else
977	uint64_t aux_en                       : 1;
978	uint64_t pm_en                        : 1;
979	uint64_t pm_stat                      : 1;
980	uint64_t pm_dst                       : 1;
981	uint64_t reserved_4_63                : 60;
982#endif
983	} s;
984	struct cvmx_pemx_diag_status_s        cn61xx;
985	struct cvmx_pemx_diag_status_s        cn63xx;
986	struct cvmx_pemx_diag_status_s        cn63xxp1;
987	struct cvmx_pemx_diag_status_s        cn66xx;
988	struct cvmx_pemx_diag_status_s        cn68xx;
989	struct cvmx_pemx_diag_status_s        cn68xxp1;
990	struct cvmx_pemx_diag_status_s        cnf71xx;
991};
992typedef union cvmx_pemx_diag_status cvmx_pemx_diag_status_t;
993
994/**
995 * cvmx_pem#_inb_read_credits
996 *
997 * PEM_INB_READ_CREDITS
998 *
999 * The number of in flight reads from PCIe core to SLI
1000 */
1001union cvmx_pemx_inb_read_credits {
1002	uint64_t u64;
1003	struct cvmx_pemx_inb_read_credits_s {
1004#ifdef __BIG_ENDIAN_BITFIELD
1005	uint64_t reserved_6_63                : 58;
1006	uint64_t num                          : 6;  /**< The number of reads that may be in flight from
1007                                                         the PCIe core to the SLI. Min number is 2 max
1008                                                         number is 32. */
1009#else
1010	uint64_t num                          : 6;
1011	uint64_t reserved_6_63                : 58;
1012#endif
1013	} s;
1014	struct cvmx_pemx_inb_read_credits_s   cn61xx;
1015	struct cvmx_pemx_inb_read_credits_s   cn66xx;
1016	struct cvmx_pemx_inb_read_credits_s   cn68xx;
1017	struct cvmx_pemx_inb_read_credits_s   cnf71xx;
1018};
1019typedef union cvmx_pemx_inb_read_credits cvmx_pemx_inb_read_credits_t;
1020
1021/**
1022 * cvmx_pem#_int_enb
1023 *
1024 * PEM(0..1)_INT_ENB = PEM Interrupt Enable
1025 *
1026 * Enables interrupt conditions for the PEM to generate an RSL interrupt.
1027 */
1028union cvmx_pemx_int_enb {
1029	uint64_t u64;
1030	struct cvmx_pemx_int_enb_s {
1031#ifdef __BIG_ENDIAN_BITFIELD
1032	uint64_t reserved_14_63               : 50;
1033	uint64_t crs_dr                       : 1;  /**< Enables PEM_INT_SUM[13] to generate an
1034                                                         interrupt to the MIO. */
1035	uint64_t crs_er                       : 1;  /**< Enables PEM_INT_SUM[12] to generate an
1036                                                         interrupt to the MIO. */
1037	uint64_t rdlk                         : 1;  /**< Enables PEM_INT_SUM[11] to generate an
1038                                                         interrupt to the MIO. */
1039	uint64_t exc                          : 1;  /**< Enables PEM_INT_SUM[10] to generate an
1040                                                         interrupt to the MIO. */
1041	uint64_t un_bx                        : 1;  /**< Enables PEM_INT_SUM[9] to generate an
1042                                                         interrupt to the MIO. */
1043	uint64_t un_b2                        : 1;  /**< Enables PEM_INT_SUM[8] to generate an
1044                                                         interrupt to the MIO. */
1045	uint64_t un_b1                        : 1;  /**< Enables PEM_INT_SUM[7] to generate an
1046                                                         interrupt to the MIO. */
1047	uint64_t up_bx                        : 1;  /**< Enables PEM_INT_SUM[6] to generate an
1048                                                         interrupt to the MIO. */
1049	uint64_t up_b2                        : 1;  /**< Enables PEM_INT_SUM[5] to generate an
1050                                                         interrupt to the MIO. */
1051	uint64_t up_b1                        : 1;  /**< Enables PEM_INT_SUM[4] to generate an
1052                                                         interrupt to the MIO. */
1053	uint64_t pmem                         : 1;  /**< Enables PEM_INT_SUM[3] to generate an
1054                                                         interrupt to the MIO. */
1055	uint64_t pmei                         : 1;  /**< Enables PEM_INT_SUM[2] to generate an
1056                                                         interrupt to the MIO. */
1057	uint64_t se                           : 1;  /**< Enables PEM_INT_SUM[1] to generate an
1058                                                         interrupt to the MIO. */
1059	uint64_t aeri                         : 1;  /**< Enables PEM_INT_SUM[0] to generate an
1060                                                         interrupt to the MIO. */
1061#else
1062	uint64_t aeri                         : 1;
1063	uint64_t se                           : 1;
1064	uint64_t pmei                         : 1;
1065	uint64_t pmem                         : 1;
1066	uint64_t up_b1                        : 1;
1067	uint64_t up_b2                        : 1;
1068	uint64_t up_bx                        : 1;
1069	uint64_t un_b1                        : 1;
1070	uint64_t un_b2                        : 1;
1071	uint64_t un_bx                        : 1;
1072	uint64_t exc                          : 1;
1073	uint64_t rdlk                         : 1;
1074	uint64_t crs_er                       : 1;
1075	uint64_t crs_dr                       : 1;
1076	uint64_t reserved_14_63               : 50;
1077#endif
1078	} s;
1079	struct cvmx_pemx_int_enb_s            cn61xx;
1080	struct cvmx_pemx_int_enb_s            cn63xx;
1081	struct cvmx_pemx_int_enb_s            cn63xxp1;
1082	struct cvmx_pemx_int_enb_s            cn66xx;
1083	struct cvmx_pemx_int_enb_s            cn68xx;
1084	struct cvmx_pemx_int_enb_s            cn68xxp1;
1085	struct cvmx_pemx_int_enb_s            cnf71xx;
1086};
1087typedef union cvmx_pemx_int_enb cvmx_pemx_int_enb_t;
1088
1089/**
1090 * cvmx_pem#_int_enb_int
1091 *
1092 * PEM(0..1)_INT_ENB_INT = PEM Interrupt Enable
1093 *
1094 * Enables interrupt conditions for the PEM to generate an RSL interrupt.
1095 */
1096union cvmx_pemx_int_enb_int {
1097	uint64_t u64;
1098	struct cvmx_pemx_int_enb_int_s {
1099#ifdef __BIG_ENDIAN_BITFIELD
1100	uint64_t reserved_14_63               : 50;
1101	uint64_t crs_dr                       : 1;  /**< Enables PEM_INT_SUM[13] to generate an
1102                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1103	uint64_t crs_er                       : 1;  /**< Enables PEM_INT_SUM[12] to generate an
1104                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1105	uint64_t rdlk                         : 1;  /**< Enables PEM_INT_SUM[11] to generate an
1106                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1107	uint64_t exc                          : 1;  /**< Enables PEM_INT_SUM[10] to generate an
1108                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1109	uint64_t un_bx                        : 1;  /**< Enables PEM_INT_SUM[9] to generate an
1110                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1111	uint64_t un_b2                        : 1;  /**< Enables PEM_INT_SUM[8] to generate an
1112                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1113	uint64_t un_b1                        : 1;  /**< Enables PEM_INT_SUM[7] to generate an
1114                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1115	uint64_t up_bx                        : 1;  /**< Enables PEM_INT_SUM[6] to generate an
1116                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1117	uint64_t up_b2                        : 1;  /**< Enables PEM_INT_SUM[5] to generate an
1118                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1119	uint64_t up_b1                        : 1;  /**< Enables PEM_INT_SUM[4] to generate an
1120                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1121	uint64_t pmem                         : 1;  /**< Enables PEM_INT_SUM[3] to generate an
1122                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1123	uint64_t pmei                         : 1;  /**< Enables PEM_INT_SUM[2] to generate an
1124                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1125	uint64_t se                           : 1;  /**< Enables PEM_INT_SUM[1] to generate an
1126                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1127	uint64_t aeri                         : 1;  /**< Enables PEM_INT_SUM[0] to generate an
1128                                                         interrupt to the SLI as SLI_INT_SUM[MAC#_INT]. */
1129#else
1130	uint64_t aeri                         : 1;
1131	uint64_t se                           : 1;
1132	uint64_t pmei                         : 1;
1133	uint64_t pmem                         : 1;
1134	uint64_t up_b1                        : 1;
1135	uint64_t up_b2                        : 1;
1136	uint64_t up_bx                        : 1;
1137	uint64_t un_b1                        : 1;
1138	uint64_t un_b2                        : 1;
1139	uint64_t un_bx                        : 1;
1140	uint64_t exc                          : 1;
1141	uint64_t rdlk                         : 1;
1142	uint64_t crs_er                       : 1;
1143	uint64_t crs_dr                       : 1;
1144	uint64_t reserved_14_63               : 50;
1145#endif
1146	} s;
1147	struct cvmx_pemx_int_enb_int_s        cn61xx;
1148	struct cvmx_pemx_int_enb_int_s        cn63xx;
1149	struct cvmx_pemx_int_enb_int_s        cn63xxp1;
1150	struct cvmx_pemx_int_enb_int_s        cn66xx;
1151	struct cvmx_pemx_int_enb_int_s        cn68xx;
1152	struct cvmx_pemx_int_enb_int_s        cn68xxp1;
1153	struct cvmx_pemx_int_enb_int_s        cnf71xx;
1154};
1155typedef union cvmx_pemx_int_enb_int cvmx_pemx_int_enb_int_t;
1156
1157/**
1158 * cvmx_pem#_int_sum
1159 *
1160 * Below are in pesc_csr
1161 *
1162 *                  PEM(0..1)_INT_SUM = PEM Interrupt Summary
1163 *
1164 * Interrupt conditions for the PEM.
1165 */
1166union cvmx_pemx_int_sum {
1167	uint64_t u64;
1168	struct cvmx_pemx_int_sum_s {
1169#ifdef __BIG_ENDIAN_BITFIELD
1170	uint64_t reserved_14_63               : 50;
1171	uint64_t crs_dr                       : 1;  /**< Had a CRS Timeout when Retries were disabled. */
1172	uint64_t crs_er                       : 1;  /**< Had a CRS Timeout when Retries were enabled. */
1173	uint64_t rdlk                         : 1;  /**< Received Read Lock TLP. */
1174	uint64_t exc                          : 1;  /**< Set when the PEM_DBG_INFO register has a bit
1175                                                         set and its cooresponding PEM_DBG_INFO_EN bit
1176                                                         is set. */
1177	uint64_t un_bx                        : 1;  /**< Received N-TLP for an unknown Bar. */
1178	uint64_t un_b2                        : 1;  /**< Received N-TLP for Bar2 when bar2 is disabled. */
1179	uint64_t un_b1                        : 1;  /**< Received N-TLP for Bar1 when bar1 index valid
1180                                                         is not set. */
1181	uint64_t up_bx                        : 1;  /**< Received P-TLP for an unknown Bar. */
1182	uint64_t up_b2                        : 1;  /**< Received P-TLP for Bar2 when bar2 is disabeld. */
1183	uint64_t up_b1                        : 1;  /**< Received P-TLP for Bar1 when bar1 index valid
1184                                                         is not set. */
1185	uint64_t pmem                         : 1;  /**< Recived PME MSG.
1186                                                         (radm_pm_pme) */
1187	uint64_t pmei                         : 1;  /**< PME Interrupt.
1188                                                         (cfg_pme_int) */
1189	uint64_t se                           : 1;  /**< System Error, RC Mode Only.
1190                                                         (cfg_sys_err_rc) */
1191	uint64_t aeri                         : 1;  /**< Advanced Error Reporting Interrupt, RC Mode Only.
1192                                                         (cfg_aer_rc_err_int). */
1193#else
1194	uint64_t aeri                         : 1;
1195	uint64_t se                           : 1;
1196	uint64_t pmei                         : 1;
1197	uint64_t pmem                         : 1;
1198	uint64_t up_b1                        : 1;
1199	uint64_t up_b2                        : 1;
1200	uint64_t up_bx                        : 1;
1201	uint64_t un_b1                        : 1;
1202	uint64_t un_b2                        : 1;
1203	uint64_t un_bx                        : 1;
1204	uint64_t exc                          : 1;
1205	uint64_t rdlk                         : 1;
1206	uint64_t crs_er                       : 1;
1207	uint64_t crs_dr                       : 1;
1208	uint64_t reserved_14_63               : 50;
1209#endif
1210	} s;
1211	struct cvmx_pemx_int_sum_s            cn61xx;
1212	struct cvmx_pemx_int_sum_s            cn63xx;
1213	struct cvmx_pemx_int_sum_s            cn63xxp1;
1214	struct cvmx_pemx_int_sum_s            cn66xx;
1215	struct cvmx_pemx_int_sum_s            cn68xx;
1216	struct cvmx_pemx_int_sum_s            cn68xxp1;
1217	struct cvmx_pemx_int_sum_s            cnf71xx;
1218};
1219typedef union cvmx_pemx_int_sum cvmx_pemx_int_sum_t;
1220
1221/**
1222 * cvmx_pem#_p2n_bar0_start
1223 *
1224 * PEM_P2N_BAR0_START = PEM PCIe to Npei BAR0 Start
1225 *
1226 * The starting address for addresses to forwarded to the SLI in RC Mode.
1227 */
1228union cvmx_pemx_p2n_bar0_start {
1229	uint64_t u64;
1230	struct cvmx_pemx_p2n_bar0_start_s {
1231#ifdef __BIG_ENDIAN_BITFIELD
1232	uint64_t addr                         : 50; /**< The starting address of the 16KB address space that
1233                                                         is the BAR0 address space. */
1234	uint64_t reserved_0_13                : 14;
1235#else
1236	uint64_t reserved_0_13                : 14;
1237	uint64_t addr                         : 50;
1238#endif
1239	} s;
1240	struct cvmx_pemx_p2n_bar0_start_s     cn61xx;
1241	struct cvmx_pemx_p2n_bar0_start_s     cn63xx;
1242	struct cvmx_pemx_p2n_bar0_start_s     cn63xxp1;
1243	struct cvmx_pemx_p2n_bar0_start_s     cn66xx;
1244	struct cvmx_pemx_p2n_bar0_start_s     cn68xx;
1245	struct cvmx_pemx_p2n_bar0_start_s     cn68xxp1;
1246	struct cvmx_pemx_p2n_bar0_start_s     cnf71xx;
1247};
1248typedef union cvmx_pemx_p2n_bar0_start cvmx_pemx_p2n_bar0_start_t;
1249
1250/**
1251 * cvmx_pem#_p2n_bar1_start
1252 *
1253 * PEM_P2N_BAR1_START = PEM PCIe to Npei BAR1 Start
1254 *
1255 * The starting address for addresses to forwarded to the SLI in RC Mode.
1256 */
1257union cvmx_pemx_p2n_bar1_start {
1258	uint64_t u64;
1259	struct cvmx_pemx_p2n_bar1_start_s {
1260#ifdef __BIG_ENDIAN_BITFIELD
1261	uint64_t addr                         : 38; /**< The starting address of the 64KB address space
1262                                                         that is the BAR1 address space. */
1263	uint64_t reserved_0_25                : 26;
1264#else
1265	uint64_t reserved_0_25                : 26;
1266	uint64_t addr                         : 38;
1267#endif
1268	} s;
1269	struct cvmx_pemx_p2n_bar1_start_s     cn61xx;
1270	struct cvmx_pemx_p2n_bar1_start_s     cn63xx;
1271	struct cvmx_pemx_p2n_bar1_start_s     cn63xxp1;
1272	struct cvmx_pemx_p2n_bar1_start_s     cn66xx;
1273	struct cvmx_pemx_p2n_bar1_start_s     cn68xx;
1274	struct cvmx_pemx_p2n_bar1_start_s     cn68xxp1;
1275	struct cvmx_pemx_p2n_bar1_start_s     cnf71xx;
1276};
1277typedef union cvmx_pemx_p2n_bar1_start cvmx_pemx_p2n_bar1_start_t;
1278
1279/**
1280 * cvmx_pem#_p2n_bar2_start
1281 *
1282 * PEM_P2N_BAR2_START = PEM PCIe to Npei BAR2 Start
1283 *
1284 * The starting address for addresses to forwarded to the SLI in RC Mode.
1285 */
1286union cvmx_pemx_p2n_bar2_start {
1287	uint64_t u64;
1288	struct cvmx_pemx_p2n_bar2_start_s {
1289#ifdef __BIG_ENDIAN_BITFIELD
1290	uint64_t addr                         : 23; /**< The starting address of the 2^41 address space
1291                                                         that is the BAR2 address space. */
1292	uint64_t reserved_0_40                : 41;
1293#else
1294	uint64_t reserved_0_40                : 41;
1295	uint64_t addr                         : 23;
1296#endif
1297	} s;
1298	struct cvmx_pemx_p2n_bar2_start_s     cn61xx;
1299	struct cvmx_pemx_p2n_bar2_start_s     cn63xx;
1300	struct cvmx_pemx_p2n_bar2_start_s     cn63xxp1;
1301	struct cvmx_pemx_p2n_bar2_start_s     cn66xx;
1302	struct cvmx_pemx_p2n_bar2_start_s     cn68xx;
1303	struct cvmx_pemx_p2n_bar2_start_s     cn68xxp1;
1304	struct cvmx_pemx_p2n_bar2_start_s     cnf71xx;
1305};
1306typedef union cvmx_pemx_p2n_bar2_start cvmx_pemx_p2n_bar2_start_t;
1307
1308/**
1309 * cvmx_pem#_p2p_bar#_end
1310 *
1311 * PEM_P2P_BAR#_END = PEM Peer-To-Peer BAR0 End
1312 *
1313 * The ending address for addresses to forwarded to the PCIe peer port.
1314 */
1315union cvmx_pemx_p2p_barx_end {
1316	uint64_t u64;
1317	struct cvmx_pemx_p2p_barx_end_s {
1318#ifdef __BIG_ENDIAN_BITFIELD
1319	uint64_t addr                         : 52; /**< The ending address of the address window created
1320                                                         this field and the PEM_P2P_BAR0_START[63:12]
1321                                                         field. The full 64-bits of address are created by:
1322                                                         [ADDR[63:12], 12'b0]. */
1323	uint64_t reserved_0_11                : 12;
1324#else
1325	uint64_t reserved_0_11                : 12;
1326	uint64_t addr                         : 52;
1327#endif
1328	} s;
1329	struct cvmx_pemx_p2p_barx_end_s       cn63xx;
1330	struct cvmx_pemx_p2p_barx_end_s       cn63xxp1;
1331	struct cvmx_pemx_p2p_barx_end_s       cn66xx;
1332	struct cvmx_pemx_p2p_barx_end_s       cn68xx;
1333	struct cvmx_pemx_p2p_barx_end_s       cn68xxp1;
1334};
1335typedef union cvmx_pemx_p2p_barx_end cvmx_pemx_p2p_barx_end_t;
1336
1337/**
1338 * cvmx_pem#_p2p_bar#_start
1339 *
1340 * PEM_P2P_BAR#_START = PEM Peer-To-Peer BAR0 Start
1341 *
1342 * The starting address and enable for addresses to forwarded to the PCIe peer port.
1343 */
1344union cvmx_pemx_p2p_barx_start {
1345	uint64_t u64;
1346	struct cvmx_pemx_p2p_barx_start_s {
1347#ifdef __BIG_ENDIAN_BITFIELD
1348	uint64_t addr                         : 52; /**< The starting address of the address window created
1349                                                         by this field and the PEM_P2P_BAR0_END[63:12]
1350                                                         field. The full 64-bits of address are created by:
1351                                                         [ADDR[63:12], 12'b0]. */
1352	uint64_t reserved_0_11                : 12;
1353#else
1354	uint64_t reserved_0_11                : 12;
1355	uint64_t addr                         : 52;
1356#endif
1357	} s;
1358	struct cvmx_pemx_p2p_barx_start_s     cn63xx;
1359	struct cvmx_pemx_p2p_barx_start_s     cn63xxp1;
1360	struct cvmx_pemx_p2p_barx_start_s     cn66xx;
1361	struct cvmx_pemx_p2p_barx_start_s     cn68xx;
1362	struct cvmx_pemx_p2p_barx_start_s     cn68xxp1;
1363};
1364typedef union cvmx_pemx_p2p_barx_start cvmx_pemx_p2p_barx_start_t;
1365
1366/**
1367 * cvmx_pem#_tlp_credits
1368 *
1369 * PEM_TLP_CREDITS = PEM TLP Credits
1370 *
1371 * Specifies the number of credits the PEM for use in moving TLPs. When this register is written the credit values are
1372 * reset to the register value. A write to this register should take place BEFORE traffic flow starts.
1373 */
1374union cvmx_pemx_tlp_credits {
1375	uint64_t u64;
1376	struct cvmx_pemx_tlp_credits_s {
1377#ifdef __BIG_ENDIAN_BITFIELD
1378	uint64_t reserved_56_63               : 8;
1379	uint64_t peai_ppf                     : 8;  /**< TLP credits for Completion TLPs in the Peer.
1380                                                         The value in this register should not be changed.
1381                                                         Values other than 0x80 can lead to unpredictable
1382                                                         behavior */
1383	uint64_t pem_cpl                      : 8;  /**< TLP credits for Completion TLPs in the Peer.
1384                                                         Legal values are 0x24 to 0x80. */
1385	uint64_t pem_np                       : 8;  /**< TLP credits for Non-Posted TLPs in the Peer.
1386                                                         Legal values are 0x4 to 0x10. */
1387	uint64_t pem_p                        : 8;  /**< TLP credits for Posted TLPs in the Peer.
1388                                                         Legal values are 0x24 to 0x80. */
1389	uint64_t sli_cpl                      : 8;  /**< TLP credits for Completion TLPs in the SLI.
1390                                                         Legal values are 0x24 to 0x80. */
1391	uint64_t sli_np                       : 8;  /**< TLP credits for Non-Posted TLPs in the SLI.
1392                                                         Legal values are 0x4 to 0x10. */
1393	uint64_t sli_p                        : 8;  /**< TLP credits for Posted TLPs in the SLI.
1394                                                         Legal values are 0x24 to 0x80. */
1395#else
1396	uint64_t sli_p                        : 8;
1397	uint64_t sli_np                       : 8;
1398	uint64_t sli_cpl                      : 8;
1399	uint64_t pem_p                        : 8;
1400	uint64_t pem_np                       : 8;
1401	uint64_t pem_cpl                      : 8;
1402	uint64_t peai_ppf                     : 8;
1403	uint64_t reserved_56_63               : 8;
1404#endif
1405	} s;
1406	struct cvmx_pemx_tlp_credits_cn61xx {
1407#ifdef __BIG_ENDIAN_BITFIELD
1408	uint64_t reserved_56_63               : 8;
1409	uint64_t peai_ppf                     : 8;  /**< TLP credits for Completion TLPs in the Peer.
1410                                                         The value in this register should not be changed.
1411                                                         Values other than 0x80 can lead to unpredictable
1412                                                         behavior */
1413	uint64_t reserved_24_47               : 24;
1414	uint64_t sli_cpl                      : 8;  /**< TLP credits for Completion TLPs in the SLI.
1415                                                         Legal values are 0x24 to 0x80. */
1416	uint64_t sli_np                       : 8;  /**< TLP credits for Non-Posted TLPs in the SLI.
1417                                                         Legal values are 0x4 to 0x10. */
1418	uint64_t sli_p                        : 8;  /**< TLP credits for Posted TLPs in the SLI.
1419                                                         Legal values are 0x24 to 0x80. */
1420#else
1421	uint64_t sli_p                        : 8;
1422	uint64_t sli_np                       : 8;
1423	uint64_t sli_cpl                      : 8;
1424	uint64_t reserved_24_47               : 24;
1425	uint64_t peai_ppf                     : 8;
1426	uint64_t reserved_56_63               : 8;
1427#endif
1428	} cn61xx;
1429	struct cvmx_pemx_tlp_credits_s        cn63xx;
1430	struct cvmx_pemx_tlp_credits_s        cn63xxp1;
1431	struct cvmx_pemx_tlp_credits_s        cn66xx;
1432	struct cvmx_pemx_tlp_credits_s        cn68xx;
1433	struct cvmx_pemx_tlp_credits_s        cn68xxp1;
1434	struct cvmx_pemx_tlp_credits_cn61xx   cnf71xx;
1435};
1436typedef union cvmx_pemx_tlp_credits cvmx_pemx_tlp_credits_t;
1437
1438#endif
1439