]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/contrib/octeon-sdk/cvmx-pcmx-defs.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / contrib / octeon-sdk / cvmx-pcmx-defs.h
1 /***********************license start***************
2  * Copyright (c) 2003-2010  Cavium Networks (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 Networks 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  NETWORKS 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-pcmx-defs.h
43  *
44  * Configuration and status register (CSR) type definitions for
45  * Octeon pcmx.
46  *
47  * This file is auto generated. Do not edit.
48  *
49  * <hr>$Revision$<hr>
50  *
51  */
52 #ifndef __CVMX_PCMX_TYPEDEFS_H__
53 #define __CVMX_PCMX_TYPEDEFS_H__
54
55 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56 static inline uint64_t CVMX_PCMX_DMA_CFG(unsigned long offset)
57 {
58         if (!(
59               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
60               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
61               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
62                 cvmx_warn("CVMX_PCMX_DMA_CFG(%lu) is invalid on this chip\n", offset);
63         return CVMX_ADD_IO_SEG(0x0001070000010018ull) + ((offset) & 3) * 16384;
64 }
65 #else
66 #define CVMX_PCMX_DMA_CFG(offset) (CVMX_ADD_IO_SEG(0x0001070000010018ull) + ((offset) & 3) * 16384)
67 #endif
68 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
69 static inline uint64_t CVMX_PCMX_INT_ENA(unsigned long offset)
70 {
71         if (!(
72               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
73               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
74               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
75                 cvmx_warn("CVMX_PCMX_INT_ENA(%lu) is invalid on this chip\n", offset);
76         return CVMX_ADD_IO_SEG(0x0001070000010020ull) + ((offset) & 3) * 16384;
77 }
78 #else
79 #define CVMX_PCMX_INT_ENA(offset) (CVMX_ADD_IO_SEG(0x0001070000010020ull) + ((offset) & 3) * 16384)
80 #endif
81 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
82 static inline uint64_t CVMX_PCMX_INT_SUM(unsigned long offset)
83 {
84         if (!(
85               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
86               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
87               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
88                 cvmx_warn("CVMX_PCMX_INT_SUM(%lu) is invalid on this chip\n", offset);
89         return CVMX_ADD_IO_SEG(0x0001070000010028ull) + ((offset) & 3) * 16384;
90 }
91 #else
92 #define CVMX_PCMX_INT_SUM(offset) (CVMX_ADD_IO_SEG(0x0001070000010028ull) + ((offset) & 3) * 16384)
93 #endif
94 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
95 static inline uint64_t CVMX_PCMX_RXADDR(unsigned long offset)
96 {
97         if (!(
98               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
99               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
100               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
101                 cvmx_warn("CVMX_PCMX_RXADDR(%lu) is invalid on this chip\n", offset);
102         return CVMX_ADD_IO_SEG(0x0001070000010068ull) + ((offset) & 3) * 16384;
103 }
104 #else
105 #define CVMX_PCMX_RXADDR(offset) (CVMX_ADD_IO_SEG(0x0001070000010068ull) + ((offset) & 3) * 16384)
106 #endif
107 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
108 static inline uint64_t CVMX_PCMX_RXCNT(unsigned long offset)
109 {
110         if (!(
111               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
112               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
113               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
114                 cvmx_warn("CVMX_PCMX_RXCNT(%lu) is invalid on this chip\n", offset);
115         return CVMX_ADD_IO_SEG(0x0001070000010060ull) + ((offset) & 3) * 16384;
116 }
117 #else
118 #define CVMX_PCMX_RXCNT(offset) (CVMX_ADD_IO_SEG(0x0001070000010060ull) + ((offset) & 3) * 16384)
119 #endif
120 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
121 static inline uint64_t CVMX_PCMX_RXMSK0(unsigned long offset)
122 {
123         if (!(
124               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
125               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
126               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
127                 cvmx_warn("CVMX_PCMX_RXMSK0(%lu) is invalid on this chip\n", offset);
128         return CVMX_ADD_IO_SEG(0x00010700000100C0ull) + ((offset) & 3) * 16384;
129 }
130 #else
131 #define CVMX_PCMX_RXMSK0(offset) (CVMX_ADD_IO_SEG(0x00010700000100C0ull) + ((offset) & 3) * 16384)
132 #endif
133 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
134 static inline uint64_t CVMX_PCMX_RXMSK1(unsigned long offset)
135 {
136         if (!(
137               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
138               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
139               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
140                 cvmx_warn("CVMX_PCMX_RXMSK1(%lu) is invalid on this chip\n", offset);
141         return CVMX_ADD_IO_SEG(0x00010700000100C8ull) + ((offset) & 3) * 16384;
142 }
143 #else
144 #define CVMX_PCMX_RXMSK1(offset) (CVMX_ADD_IO_SEG(0x00010700000100C8ull) + ((offset) & 3) * 16384)
145 #endif
146 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
147 static inline uint64_t CVMX_PCMX_RXMSK2(unsigned long offset)
148 {
149         if (!(
150               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
151               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
152               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
153                 cvmx_warn("CVMX_PCMX_RXMSK2(%lu) is invalid on this chip\n", offset);
154         return CVMX_ADD_IO_SEG(0x00010700000100D0ull) + ((offset) & 3) * 16384;
155 }
156 #else
157 #define CVMX_PCMX_RXMSK2(offset) (CVMX_ADD_IO_SEG(0x00010700000100D0ull) + ((offset) & 3) * 16384)
158 #endif
159 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
160 static inline uint64_t CVMX_PCMX_RXMSK3(unsigned long offset)
161 {
162         if (!(
163               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
164               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
165               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
166                 cvmx_warn("CVMX_PCMX_RXMSK3(%lu) is invalid on this chip\n", offset);
167         return CVMX_ADD_IO_SEG(0x00010700000100D8ull) + ((offset) & 3) * 16384;
168 }
169 #else
170 #define CVMX_PCMX_RXMSK3(offset) (CVMX_ADD_IO_SEG(0x00010700000100D8ull) + ((offset) & 3) * 16384)
171 #endif
172 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
173 static inline uint64_t CVMX_PCMX_RXMSK4(unsigned long offset)
174 {
175         if (!(
176               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
177               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
178               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
179                 cvmx_warn("CVMX_PCMX_RXMSK4(%lu) is invalid on this chip\n", offset);
180         return CVMX_ADD_IO_SEG(0x00010700000100E0ull) + ((offset) & 3) * 16384;
181 }
182 #else
183 #define CVMX_PCMX_RXMSK4(offset) (CVMX_ADD_IO_SEG(0x00010700000100E0ull) + ((offset) & 3) * 16384)
184 #endif
185 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
186 static inline uint64_t CVMX_PCMX_RXMSK5(unsigned long offset)
187 {
188         if (!(
189               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
190               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
191               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
192                 cvmx_warn("CVMX_PCMX_RXMSK5(%lu) is invalid on this chip\n", offset);
193         return CVMX_ADD_IO_SEG(0x00010700000100E8ull) + ((offset) & 3) * 16384;
194 }
195 #else
196 #define CVMX_PCMX_RXMSK5(offset) (CVMX_ADD_IO_SEG(0x00010700000100E8ull) + ((offset) & 3) * 16384)
197 #endif
198 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
199 static inline uint64_t CVMX_PCMX_RXMSK6(unsigned long offset)
200 {
201         if (!(
202               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
203               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
204               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
205                 cvmx_warn("CVMX_PCMX_RXMSK6(%lu) is invalid on this chip\n", offset);
206         return CVMX_ADD_IO_SEG(0x00010700000100F0ull) + ((offset) & 3) * 16384;
207 }
208 #else
209 #define CVMX_PCMX_RXMSK6(offset) (CVMX_ADD_IO_SEG(0x00010700000100F0ull) + ((offset) & 3) * 16384)
210 #endif
211 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
212 static inline uint64_t CVMX_PCMX_RXMSK7(unsigned long offset)
213 {
214         if (!(
215               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
216               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
217               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
218                 cvmx_warn("CVMX_PCMX_RXMSK7(%lu) is invalid on this chip\n", offset);
219         return CVMX_ADD_IO_SEG(0x00010700000100F8ull) + ((offset) & 3) * 16384;
220 }
221 #else
222 #define CVMX_PCMX_RXMSK7(offset) (CVMX_ADD_IO_SEG(0x00010700000100F8ull) + ((offset) & 3) * 16384)
223 #endif
224 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
225 static inline uint64_t CVMX_PCMX_RXSTART(unsigned long offset)
226 {
227         if (!(
228               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
229               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
230               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
231                 cvmx_warn("CVMX_PCMX_RXSTART(%lu) is invalid on this chip\n", offset);
232         return CVMX_ADD_IO_SEG(0x0001070000010058ull) + ((offset) & 3) * 16384;
233 }
234 #else
235 #define CVMX_PCMX_RXSTART(offset) (CVMX_ADD_IO_SEG(0x0001070000010058ull) + ((offset) & 3) * 16384)
236 #endif
237 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
238 static inline uint64_t CVMX_PCMX_TDM_CFG(unsigned long offset)
239 {
240         if (!(
241               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
242               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
243               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
244                 cvmx_warn("CVMX_PCMX_TDM_CFG(%lu) is invalid on this chip\n", offset);
245         return CVMX_ADD_IO_SEG(0x0001070000010010ull) + ((offset) & 3) * 16384;
246 }
247 #else
248 #define CVMX_PCMX_TDM_CFG(offset) (CVMX_ADD_IO_SEG(0x0001070000010010ull) + ((offset) & 3) * 16384)
249 #endif
250 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
251 static inline uint64_t CVMX_PCMX_TDM_DBG(unsigned long offset)
252 {
253         if (!(
254               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
255               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
256               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
257                 cvmx_warn("CVMX_PCMX_TDM_DBG(%lu) is invalid on this chip\n", offset);
258         return CVMX_ADD_IO_SEG(0x0001070000010030ull) + ((offset) & 3) * 16384;
259 }
260 #else
261 #define CVMX_PCMX_TDM_DBG(offset) (CVMX_ADD_IO_SEG(0x0001070000010030ull) + ((offset) & 3) * 16384)
262 #endif
263 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
264 static inline uint64_t CVMX_PCMX_TXADDR(unsigned long offset)
265 {
266         if (!(
267               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
268               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
269               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
270                 cvmx_warn("CVMX_PCMX_TXADDR(%lu) is invalid on this chip\n", offset);
271         return CVMX_ADD_IO_SEG(0x0001070000010050ull) + ((offset) & 3) * 16384;
272 }
273 #else
274 #define CVMX_PCMX_TXADDR(offset) (CVMX_ADD_IO_SEG(0x0001070000010050ull) + ((offset) & 3) * 16384)
275 #endif
276 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
277 static inline uint64_t CVMX_PCMX_TXCNT(unsigned long offset)
278 {
279         if (!(
280               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
281               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
282               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
283                 cvmx_warn("CVMX_PCMX_TXCNT(%lu) is invalid on this chip\n", offset);
284         return CVMX_ADD_IO_SEG(0x0001070000010048ull) + ((offset) & 3) * 16384;
285 }
286 #else
287 #define CVMX_PCMX_TXCNT(offset) (CVMX_ADD_IO_SEG(0x0001070000010048ull) + ((offset) & 3) * 16384)
288 #endif
289 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
290 static inline uint64_t CVMX_PCMX_TXMSK0(unsigned long offset)
291 {
292         if (!(
293               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
294               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
295               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
296                 cvmx_warn("CVMX_PCMX_TXMSK0(%lu) is invalid on this chip\n", offset);
297         return CVMX_ADD_IO_SEG(0x0001070000010080ull) + ((offset) & 3) * 16384;
298 }
299 #else
300 #define CVMX_PCMX_TXMSK0(offset) (CVMX_ADD_IO_SEG(0x0001070000010080ull) + ((offset) & 3) * 16384)
301 #endif
302 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
303 static inline uint64_t CVMX_PCMX_TXMSK1(unsigned long offset)
304 {
305         if (!(
306               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
307               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
308               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
309                 cvmx_warn("CVMX_PCMX_TXMSK1(%lu) is invalid on this chip\n", offset);
310         return CVMX_ADD_IO_SEG(0x0001070000010088ull) + ((offset) & 3) * 16384;
311 }
312 #else
313 #define CVMX_PCMX_TXMSK1(offset) (CVMX_ADD_IO_SEG(0x0001070000010088ull) + ((offset) & 3) * 16384)
314 #endif
315 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
316 static inline uint64_t CVMX_PCMX_TXMSK2(unsigned long offset)
317 {
318         if (!(
319               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
320               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
321               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
322                 cvmx_warn("CVMX_PCMX_TXMSK2(%lu) is invalid on this chip\n", offset);
323         return CVMX_ADD_IO_SEG(0x0001070000010090ull) + ((offset) & 3) * 16384;
324 }
325 #else
326 #define CVMX_PCMX_TXMSK2(offset) (CVMX_ADD_IO_SEG(0x0001070000010090ull) + ((offset) & 3) * 16384)
327 #endif
328 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
329 static inline uint64_t CVMX_PCMX_TXMSK3(unsigned long offset)
330 {
331         if (!(
332               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
333               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
334               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
335                 cvmx_warn("CVMX_PCMX_TXMSK3(%lu) is invalid on this chip\n", offset);
336         return CVMX_ADD_IO_SEG(0x0001070000010098ull) + ((offset) & 3) * 16384;
337 }
338 #else
339 #define CVMX_PCMX_TXMSK3(offset) (CVMX_ADD_IO_SEG(0x0001070000010098ull) + ((offset) & 3) * 16384)
340 #endif
341 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
342 static inline uint64_t CVMX_PCMX_TXMSK4(unsigned long offset)
343 {
344         if (!(
345               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
346               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
347               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
348                 cvmx_warn("CVMX_PCMX_TXMSK4(%lu) is invalid on this chip\n", offset);
349         return CVMX_ADD_IO_SEG(0x00010700000100A0ull) + ((offset) & 3) * 16384;
350 }
351 #else
352 #define CVMX_PCMX_TXMSK4(offset) (CVMX_ADD_IO_SEG(0x00010700000100A0ull) + ((offset) & 3) * 16384)
353 #endif
354 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
355 static inline uint64_t CVMX_PCMX_TXMSK5(unsigned long offset)
356 {
357         if (!(
358               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
359               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
360               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
361                 cvmx_warn("CVMX_PCMX_TXMSK5(%lu) is invalid on this chip\n", offset);
362         return CVMX_ADD_IO_SEG(0x00010700000100A8ull) + ((offset) & 3) * 16384;
363 }
364 #else
365 #define CVMX_PCMX_TXMSK5(offset) (CVMX_ADD_IO_SEG(0x00010700000100A8ull) + ((offset) & 3) * 16384)
366 #endif
367 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
368 static inline uint64_t CVMX_PCMX_TXMSK6(unsigned long offset)
369 {
370         if (!(
371               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
372               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
373               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
374                 cvmx_warn("CVMX_PCMX_TXMSK6(%lu) is invalid on this chip\n", offset);
375         return CVMX_ADD_IO_SEG(0x00010700000100B0ull) + ((offset) & 3) * 16384;
376 }
377 #else
378 #define CVMX_PCMX_TXMSK6(offset) (CVMX_ADD_IO_SEG(0x00010700000100B0ull) + ((offset) & 3) * 16384)
379 #endif
380 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
381 static inline uint64_t CVMX_PCMX_TXMSK7(unsigned long offset)
382 {
383         if (!(
384               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
385               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
386               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
387                 cvmx_warn("CVMX_PCMX_TXMSK7(%lu) is invalid on this chip\n", offset);
388         return CVMX_ADD_IO_SEG(0x00010700000100B8ull) + ((offset) & 3) * 16384;
389 }
390 #else
391 #define CVMX_PCMX_TXMSK7(offset) (CVMX_ADD_IO_SEG(0x00010700000100B8ull) + ((offset) & 3) * 16384)
392 #endif
393 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
394 static inline uint64_t CVMX_PCMX_TXSTART(unsigned long offset)
395 {
396         if (!(
397               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 3))) ||
398               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 3))) ||
399               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 3)))))
400                 cvmx_warn("CVMX_PCMX_TXSTART(%lu) is invalid on this chip\n", offset);
401         return CVMX_ADD_IO_SEG(0x0001070000010040ull) + ((offset) & 3) * 16384;
402 }
403 #else
404 #define CVMX_PCMX_TXSTART(offset) (CVMX_ADD_IO_SEG(0x0001070000010040ull) + ((offset) & 3) * 16384)
405 #endif
406
407 /**
408  * cvmx_pcm#_dma_cfg
409  */
410 union cvmx_pcmx_dma_cfg
411 {
412         uint64_t u64;
413         struct cvmx_pcmx_dma_cfg_s
414         {
415 #if __BYTE_ORDER == __BIG_ENDIAN
416         uint64_t rdpend                       : 1;  /**< If 0, no L2C read responses pending
417                                                             1, L2C read responses are outstanding
418                                                          NOTE: When restarting after stopping a running TDM
419                                                          engine, software must wait for RDPEND to read 0
420                                                          before writing PCMn_TDM_CFG[ENABLE] to a 1 */
421         uint64_t reserved_54_62               : 9;
422         uint64_t rxslots                      : 10; /**< Number of 8-bit slots to receive per frame
423                                                          (number of slots in a receive superframe) */
424         uint64_t reserved_42_43               : 2;
425         uint64_t txslots                      : 10; /**< Number of 8-bit slots to transmit per frame
426                                                          (number of slots in a transmit superframe) */
427         uint64_t reserved_30_31               : 2;
428         uint64_t rxst                         : 10; /**< Number of frame writes for interrupt */
429         uint64_t reserved_19_19               : 1;
430         uint64_t useldt                       : 1;  /**< If 0, use LDI command to read from L2C
431                                                          1, use LDT command to read from L2C */
432         uint64_t txrd                         : 10; /**< Number of frame reads for interrupt */
433         uint64_t fetchsiz                     : 4;  /**< FETCHSIZ+1 timeslots are read when threshold is
434                                                          reached. */
435         uint64_t thresh                       : 4;  /**< If number of bytes remaining in the DMA fifo is <=
436                                                          THRESH, initiate a fetch of timeslot data from the
437                                                          transmit memory region.
438                                                          NOTE: there are only 16B of buffer for each engine
439                                                          so the seetings for FETCHSIZ and THRESH must be
440                                                          such that the buffer will not be overrun:
441
442                                                          THRESH + min(FETCHSIZ + 1,TXSLOTS) MUST BE <= 16 */
443 #else
444         uint64_t thresh                       : 4;
445         uint64_t fetchsiz                     : 4;
446         uint64_t txrd                         : 10;
447         uint64_t useldt                       : 1;
448         uint64_t reserved_19_19               : 1;
449         uint64_t rxst                         : 10;
450         uint64_t reserved_30_31               : 2;
451         uint64_t txslots                      : 10;
452         uint64_t reserved_42_43               : 2;
453         uint64_t rxslots                      : 10;
454         uint64_t reserved_54_62               : 9;
455         uint64_t rdpend                       : 1;
456 #endif
457         } s;
458         struct cvmx_pcmx_dma_cfg_s            cn30xx;
459         struct cvmx_pcmx_dma_cfg_s            cn31xx;
460         struct cvmx_pcmx_dma_cfg_s            cn50xx;
461 };
462 typedef union cvmx_pcmx_dma_cfg cvmx_pcmx_dma_cfg_t;
463
464 /**
465  * cvmx_pcm#_int_ena
466  */
467 union cvmx_pcmx_int_ena
468 {
469         uint64_t u64;
470         struct cvmx_pcmx_int_ena_s
471         {
472 #if __BYTE_ORDER == __BIG_ENDIAN
473         uint64_t reserved_8_63                : 56;
474         uint64_t rxovf                        : 1;  /**< Enable interrupt if RX byte overflows */
475         uint64_t txempty                      : 1;  /**< Enable interrupt on TX byte empty */
476         uint64_t txrd                         : 1;  /**< Enable DMA engine frame read interrupts */
477         uint64_t txwrap                       : 1;  /**< Enable TX region wrap interrupts */
478         uint64_t rxst                         : 1;  /**< Enable DMA engine frame store interrupts */
479         uint64_t rxwrap                       : 1;  /**< Enable RX region wrap interrupts */
480         uint64_t fsyncextra                   : 1;  /**< Enable FSYNC extra interrupts
481                                                          NOTE: FSYNCEXTRA errors are defined as an FSYNC
482                                                          found in the "wrong" spot of a frame given the
483                                                          programming of PCMn_CLK_CFG[NUMSLOTS] and
484                                                          PCMn_CLK_CFG[EXTRABIT]. */
485         uint64_t fsyncmissed                  : 1;  /**< Enable FSYNC missed interrupts
486                                                          NOTE: FSYNCMISSED errors are defined as an FSYNC
487                                                          missing from the correct spot in a frame given
488                                                          the programming of PCMn_CLK_CFG[NUMSLOTS] and
489                                                          PCMn_CLK_CFG[EXTRABIT]. */
490 #else
491         uint64_t fsyncmissed                  : 1;
492         uint64_t fsyncextra                   : 1;
493         uint64_t rxwrap                       : 1;
494         uint64_t rxst                         : 1;
495         uint64_t txwrap                       : 1;
496         uint64_t txrd                         : 1;
497         uint64_t txempty                      : 1;
498         uint64_t rxovf                        : 1;
499         uint64_t reserved_8_63                : 56;
500 #endif
501         } s;
502         struct cvmx_pcmx_int_ena_s            cn30xx;
503         struct cvmx_pcmx_int_ena_s            cn31xx;
504         struct cvmx_pcmx_int_ena_s            cn50xx;
505 };
506 typedef union cvmx_pcmx_int_ena cvmx_pcmx_int_ena_t;
507
508 /**
509  * cvmx_pcm#_int_sum
510  */
511 union cvmx_pcmx_int_sum
512 {
513         uint64_t u64;
514         struct cvmx_pcmx_int_sum_s
515         {
516 #if __BYTE_ORDER == __BIG_ENDIAN
517         uint64_t reserved_8_63                : 56;
518         uint64_t rxovf                        : 1;  /**< RX byte overflowed */
519         uint64_t txempty                      : 1;  /**< TX byte was empty when sampled */
520         uint64_t txrd                         : 1;  /**< DMA engine frame read interrupt occurred */
521         uint64_t txwrap                       : 1;  /**< TX region wrap interrupt occurred */
522         uint64_t rxst                         : 1;  /**< DMA engine frame store interrupt occurred */
523         uint64_t rxwrap                       : 1;  /**< RX region wrap interrupt occurred */
524         uint64_t fsyncextra                   : 1;  /**< FSYNC extra interrupt occurred */
525         uint64_t fsyncmissed                  : 1;  /**< FSYNC missed interrupt occurred */
526 #else
527         uint64_t fsyncmissed                  : 1;
528         uint64_t fsyncextra                   : 1;
529         uint64_t rxwrap                       : 1;
530         uint64_t rxst                         : 1;
531         uint64_t txwrap                       : 1;
532         uint64_t txrd                         : 1;
533         uint64_t txempty                      : 1;
534         uint64_t rxovf                        : 1;
535         uint64_t reserved_8_63                : 56;
536 #endif
537         } s;
538         struct cvmx_pcmx_int_sum_s            cn30xx;
539         struct cvmx_pcmx_int_sum_s            cn31xx;
540         struct cvmx_pcmx_int_sum_s            cn50xx;
541 };
542 typedef union cvmx_pcmx_int_sum cvmx_pcmx_int_sum_t;
543
544 /**
545  * cvmx_pcm#_rxaddr
546  */
547 union cvmx_pcmx_rxaddr
548 {
549         uint64_t u64;
550         struct cvmx_pcmx_rxaddr_s
551         {
552 #if __BYTE_ORDER == __BIG_ENDIAN
553         uint64_t reserved_36_63               : 28;
554         uint64_t addr                         : 36; /**< Address of the next write to the receive memory
555                                                          region */
556 #else
557         uint64_t addr                         : 36;
558         uint64_t reserved_36_63               : 28;
559 #endif
560         } s;
561         struct cvmx_pcmx_rxaddr_s             cn30xx;
562         struct cvmx_pcmx_rxaddr_s             cn31xx;
563         struct cvmx_pcmx_rxaddr_s             cn50xx;
564 };
565 typedef union cvmx_pcmx_rxaddr cvmx_pcmx_rxaddr_t;
566
567 /**
568  * cvmx_pcm#_rxcnt
569  */
570 union cvmx_pcmx_rxcnt
571 {
572         uint64_t u64;
573         struct cvmx_pcmx_rxcnt_s
574         {
575 #if __BYTE_ORDER == __BIG_ENDIAN
576         uint64_t reserved_16_63               : 48;
577         uint64_t cnt                          : 16; /**< Number of superframes in receive memory region */
578 #else
579         uint64_t cnt                          : 16;
580         uint64_t reserved_16_63               : 48;
581 #endif
582         } s;
583         struct cvmx_pcmx_rxcnt_s              cn30xx;
584         struct cvmx_pcmx_rxcnt_s              cn31xx;
585         struct cvmx_pcmx_rxcnt_s              cn50xx;
586 };
587 typedef union cvmx_pcmx_rxcnt cvmx_pcmx_rxcnt_t;
588
589 /**
590  * cvmx_pcm#_rxmsk0
591  */
592 union cvmx_pcmx_rxmsk0
593 {
594         uint64_t u64;
595         struct cvmx_pcmx_rxmsk0_s
596         {
597 #if __BYTE_ORDER == __BIG_ENDIAN
598         uint64_t mask                         : 64; /**< Receive mask bits for slots 63 to 0
599                                                          (1 means transmit, 0 means don't transmit) */
600 #else
601         uint64_t mask                         : 64;
602 #endif
603         } s;
604         struct cvmx_pcmx_rxmsk0_s             cn30xx;
605         struct cvmx_pcmx_rxmsk0_s             cn31xx;
606         struct cvmx_pcmx_rxmsk0_s             cn50xx;
607 };
608 typedef union cvmx_pcmx_rxmsk0 cvmx_pcmx_rxmsk0_t;
609
610 /**
611  * cvmx_pcm#_rxmsk1
612  */
613 union cvmx_pcmx_rxmsk1
614 {
615         uint64_t u64;
616         struct cvmx_pcmx_rxmsk1_s
617         {
618 #if __BYTE_ORDER == __BIG_ENDIAN
619         uint64_t mask                         : 64; /**< Receive mask bits for slots 127 to 64
620                                                          (1 means transmit, 0 means don't transmit) */
621 #else
622         uint64_t mask                         : 64;
623 #endif
624         } s;
625         struct cvmx_pcmx_rxmsk1_s             cn30xx;
626         struct cvmx_pcmx_rxmsk1_s             cn31xx;
627         struct cvmx_pcmx_rxmsk1_s             cn50xx;
628 };
629 typedef union cvmx_pcmx_rxmsk1 cvmx_pcmx_rxmsk1_t;
630
631 /**
632  * cvmx_pcm#_rxmsk2
633  */
634 union cvmx_pcmx_rxmsk2
635 {
636         uint64_t u64;
637         struct cvmx_pcmx_rxmsk2_s
638         {
639 #if __BYTE_ORDER == __BIG_ENDIAN
640         uint64_t mask                         : 64; /**< Receive mask bits for slots 191 to 128
641                                                          (1 means transmit, 0 means don't transmit) */
642 #else
643         uint64_t mask                         : 64;
644 #endif
645         } s;
646         struct cvmx_pcmx_rxmsk2_s             cn30xx;
647         struct cvmx_pcmx_rxmsk2_s             cn31xx;
648         struct cvmx_pcmx_rxmsk2_s             cn50xx;
649 };
650 typedef union cvmx_pcmx_rxmsk2 cvmx_pcmx_rxmsk2_t;
651
652 /**
653  * cvmx_pcm#_rxmsk3
654  */
655 union cvmx_pcmx_rxmsk3
656 {
657         uint64_t u64;
658         struct cvmx_pcmx_rxmsk3_s
659         {
660 #if __BYTE_ORDER == __BIG_ENDIAN
661         uint64_t mask                         : 64; /**< Receive mask bits for slots 255 to 192
662                                                          (1 means transmit, 0 means don't transmit) */
663 #else
664         uint64_t mask                         : 64;
665 #endif
666         } s;
667         struct cvmx_pcmx_rxmsk3_s             cn30xx;
668         struct cvmx_pcmx_rxmsk3_s             cn31xx;
669         struct cvmx_pcmx_rxmsk3_s             cn50xx;
670 };
671 typedef union cvmx_pcmx_rxmsk3 cvmx_pcmx_rxmsk3_t;
672
673 /**
674  * cvmx_pcm#_rxmsk4
675  */
676 union cvmx_pcmx_rxmsk4
677 {
678         uint64_t u64;
679         struct cvmx_pcmx_rxmsk4_s
680         {
681 #if __BYTE_ORDER == __BIG_ENDIAN
682         uint64_t mask                         : 64; /**< Receive mask bits for slots 319 to 256
683                                                          (1 means transmit, 0 means don't transmit) */
684 #else
685         uint64_t mask                         : 64;
686 #endif
687         } s;
688         struct cvmx_pcmx_rxmsk4_s             cn30xx;
689         struct cvmx_pcmx_rxmsk4_s             cn31xx;
690         struct cvmx_pcmx_rxmsk4_s             cn50xx;
691 };
692 typedef union cvmx_pcmx_rxmsk4 cvmx_pcmx_rxmsk4_t;
693
694 /**
695  * cvmx_pcm#_rxmsk5
696  */
697 union cvmx_pcmx_rxmsk5
698 {
699         uint64_t u64;
700         struct cvmx_pcmx_rxmsk5_s
701         {
702 #if __BYTE_ORDER == __BIG_ENDIAN
703         uint64_t mask                         : 64; /**< Receive mask bits for slots 383 to 320
704                                                          (1 means transmit, 0 means don't transmit) */
705 #else
706         uint64_t mask                         : 64;
707 #endif
708         } s;
709         struct cvmx_pcmx_rxmsk5_s             cn30xx;
710         struct cvmx_pcmx_rxmsk5_s             cn31xx;
711         struct cvmx_pcmx_rxmsk5_s             cn50xx;
712 };
713 typedef union cvmx_pcmx_rxmsk5 cvmx_pcmx_rxmsk5_t;
714
715 /**
716  * cvmx_pcm#_rxmsk6
717  */
718 union cvmx_pcmx_rxmsk6
719 {
720         uint64_t u64;
721         struct cvmx_pcmx_rxmsk6_s
722         {
723 #if __BYTE_ORDER == __BIG_ENDIAN
724         uint64_t mask                         : 64; /**< Receive mask bits for slots 447 to 384
725                                                          (1 means transmit, 0 means don't transmit) */
726 #else
727         uint64_t mask                         : 64;
728 #endif
729         } s;
730         struct cvmx_pcmx_rxmsk6_s             cn30xx;
731         struct cvmx_pcmx_rxmsk6_s             cn31xx;
732         struct cvmx_pcmx_rxmsk6_s             cn50xx;
733 };
734 typedef union cvmx_pcmx_rxmsk6 cvmx_pcmx_rxmsk6_t;
735
736 /**
737  * cvmx_pcm#_rxmsk7
738  */
739 union cvmx_pcmx_rxmsk7
740 {
741         uint64_t u64;
742         struct cvmx_pcmx_rxmsk7_s
743         {
744 #if __BYTE_ORDER == __BIG_ENDIAN
745         uint64_t mask                         : 64; /**< Receive mask bits for slots 511 to 448
746                                                          (1 means transmit, 0 means don't transmit) */
747 #else
748         uint64_t mask                         : 64;
749 #endif
750         } s;
751         struct cvmx_pcmx_rxmsk7_s             cn30xx;
752         struct cvmx_pcmx_rxmsk7_s             cn31xx;
753         struct cvmx_pcmx_rxmsk7_s             cn50xx;
754 };
755 typedef union cvmx_pcmx_rxmsk7 cvmx_pcmx_rxmsk7_t;
756
757 /**
758  * cvmx_pcm#_rxstart
759  */
760 union cvmx_pcmx_rxstart
761 {
762         uint64_t u64;
763         struct cvmx_pcmx_rxstart_s
764         {
765 #if __BYTE_ORDER == __BIG_ENDIAN
766         uint64_t reserved_36_63               : 28;
767         uint64_t addr                         : 33; /**< Starting address for the receive memory region */
768         uint64_t reserved_0_2                 : 3;
769 #else
770         uint64_t reserved_0_2                 : 3;
771         uint64_t addr                         : 33;
772         uint64_t reserved_36_63               : 28;
773 #endif
774         } s;
775         struct cvmx_pcmx_rxstart_s            cn30xx;
776         struct cvmx_pcmx_rxstart_s            cn31xx;
777         struct cvmx_pcmx_rxstart_s            cn50xx;
778 };
779 typedef union cvmx_pcmx_rxstart cvmx_pcmx_rxstart_t;
780
781 /**
782  * cvmx_pcm#_tdm_cfg
783  */
784 union cvmx_pcmx_tdm_cfg
785 {
786         uint64_t u64;
787         struct cvmx_pcmx_tdm_cfg_s
788         {
789 #if __BYTE_ORDER == __BIG_ENDIAN
790         uint64_t drvtim                       : 16; /**< Number of ECLKs from start of bit time to stop
791                                                          driving last bit of timeslot (if not driving next
792                                                          timeslot) */
793         uint64_t samppt                       : 16; /**< Number of ECLKs from start of bit time to sample
794                                                          data bit. */
795         uint64_t reserved_3_31                : 29;
796         uint64_t lsbfirst                     : 1;  /**< If 0, shift/receive MSB first
797                                                          1, shift/receive LSB first */
798         uint64_t useclk1                      : 1;  /**< If 0, this PCM is based on BCLK/FSYNC0
799                                                          1, this PCM is based on BCLK/FSYNC1 */
800         uint64_t enable                       : 1;  /**< If 1, PCM is enabled, otherwise pins are GPIOs
801                                                          NOTE: when TDM is disabled by detection of an
802                                                          FSYNC error all transmission and reception is
803                                                          halted.  In addition, PCMn_TX/RXADDR are updated
804                                                          to point to the position at which the error was
805                                                          detected. */
806 #else
807         uint64_t enable                       : 1;
808         uint64_t useclk1                      : 1;
809         uint64_t lsbfirst                     : 1;
810         uint64_t reserved_3_31                : 29;
811         uint64_t samppt                       : 16;
812         uint64_t drvtim                       : 16;
813 #endif
814         } s;
815         struct cvmx_pcmx_tdm_cfg_s            cn30xx;
816         struct cvmx_pcmx_tdm_cfg_s            cn31xx;
817         struct cvmx_pcmx_tdm_cfg_s            cn50xx;
818 };
819 typedef union cvmx_pcmx_tdm_cfg cvmx_pcmx_tdm_cfg_t;
820
821 /**
822  * cvmx_pcm#_tdm_dbg
823  */
824 union cvmx_pcmx_tdm_dbg
825 {
826         uint64_t u64;
827         struct cvmx_pcmx_tdm_dbg_s
828         {
829 #if __BYTE_ORDER == __BIG_ENDIAN
830         uint64_t debuginfo                    : 64; /**< Miscellaneous debug information */
831 #else
832         uint64_t debuginfo                    : 64;
833 #endif
834         } s;
835         struct cvmx_pcmx_tdm_dbg_s            cn30xx;
836         struct cvmx_pcmx_tdm_dbg_s            cn31xx;
837         struct cvmx_pcmx_tdm_dbg_s            cn50xx;
838 };
839 typedef union cvmx_pcmx_tdm_dbg cvmx_pcmx_tdm_dbg_t;
840
841 /**
842  * cvmx_pcm#_txaddr
843  */
844 union cvmx_pcmx_txaddr
845 {
846         uint64_t u64;
847         struct cvmx_pcmx_txaddr_s
848         {
849 #if __BYTE_ORDER == __BIG_ENDIAN
850         uint64_t reserved_36_63               : 28;
851         uint64_t addr                         : 33; /**< Address of the next read from the transmit memory
852                                                          region */
853         uint64_t fram                         : 3;  /**< Frame offset
854                                                          NOTE: this is used to extract the correct byte from
855                                                          each 64b word read from the transmit memory region */
856 #else
857         uint64_t fram                         : 3;
858         uint64_t addr                         : 33;
859         uint64_t reserved_36_63               : 28;
860 #endif
861         } s;
862         struct cvmx_pcmx_txaddr_s             cn30xx;
863         struct cvmx_pcmx_txaddr_s             cn31xx;
864         struct cvmx_pcmx_txaddr_s             cn50xx;
865 };
866 typedef union cvmx_pcmx_txaddr cvmx_pcmx_txaddr_t;
867
868 /**
869  * cvmx_pcm#_txcnt
870  */
871 union cvmx_pcmx_txcnt
872 {
873         uint64_t u64;
874         struct cvmx_pcmx_txcnt_s
875         {
876 #if __BYTE_ORDER == __BIG_ENDIAN
877         uint64_t reserved_16_63               : 48;
878         uint64_t cnt                          : 16; /**< Number of superframes in transmit memory region */
879 #else
880         uint64_t cnt                          : 16;
881         uint64_t reserved_16_63               : 48;
882 #endif
883         } s;
884         struct cvmx_pcmx_txcnt_s              cn30xx;
885         struct cvmx_pcmx_txcnt_s              cn31xx;
886         struct cvmx_pcmx_txcnt_s              cn50xx;
887 };
888 typedef union cvmx_pcmx_txcnt cvmx_pcmx_txcnt_t;
889
890 /**
891  * cvmx_pcm#_txmsk0
892  */
893 union cvmx_pcmx_txmsk0
894 {
895         uint64_t u64;
896         struct cvmx_pcmx_txmsk0_s
897         {
898 #if __BYTE_ORDER == __BIG_ENDIAN
899         uint64_t mask                         : 64; /**< Transmit mask bits for slots 63 to 0
900                                                          (1 means transmit, 0 means don't transmit) */
901 #else
902         uint64_t mask                         : 64;
903 #endif
904         } s;
905         struct cvmx_pcmx_txmsk0_s             cn30xx;
906         struct cvmx_pcmx_txmsk0_s             cn31xx;
907         struct cvmx_pcmx_txmsk0_s             cn50xx;
908 };
909 typedef union cvmx_pcmx_txmsk0 cvmx_pcmx_txmsk0_t;
910
911 /**
912  * cvmx_pcm#_txmsk1
913  */
914 union cvmx_pcmx_txmsk1
915 {
916         uint64_t u64;
917         struct cvmx_pcmx_txmsk1_s
918         {
919 #if __BYTE_ORDER == __BIG_ENDIAN
920         uint64_t mask                         : 64; /**< Transmit mask bits for slots 127 to 64
921                                                          (1 means transmit, 0 means don't transmit) */
922 #else
923         uint64_t mask                         : 64;
924 #endif
925         } s;
926         struct cvmx_pcmx_txmsk1_s             cn30xx;
927         struct cvmx_pcmx_txmsk1_s             cn31xx;
928         struct cvmx_pcmx_txmsk1_s             cn50xx;
929 };
930 typedef union cvmx_pcmx_txmsk1 cvmx_pcmx_txmsk1_t;
931
932 /**
933  * cvmx_pcm#_txmsk2
934  */
935 union cvmx_pcmx_txmsk2
936 {
937         uint64_t u64;
938         struct cvmx_pcmx_txmsk2_s
939         {
940 #if __BYTE_ORDER == __BIG_ENDIAN
941         uint64_t mask                         : 64; /**< Transmit mask bits for slots 191 to 128
942                                                          (1 means transmit, 0 means don't transmit) */
943 #else
944         uint64_t mask                         : 64;
945 #endif
946         } s;
947         struct cvmx_pcmx_txmsk2_s             cn30xx;
948         struct cvmx_pcmx_txmsk2_s             cn31xx;
949         struct cvmx_pcmx_txmsk2_s             cn50xx;
950 };
951 typedef union cvmx_pcmx_txmsk2 cvmx_pcmx_txmsk2_t;
952
953 /**
954  * cvmx_pcm#_txmsk3
955  */
956 union cvmx_pcmx_txmsk3
957 {
958         uint64_t u64;
959         struct cvmx_pcmx_txmsk3_s
960         {
961 #if __BYTE_ORDER == __BIG_ENDIAN
962         uint64_t mask                         : 64; /**< Transmit mask bits for slots 255 to 192
963                                                          (1 means transmit, 0 means don't transmit) */
964 #else
965         uint64_t mask                         : 64;
966 #endif
967         } s;
968         struct cvmx_pcmx_txmsk3_s             cn30xx;
969         struct cvmx_pcmx_txmsk3_s             cn31xx;
970         struct cvmx_pcmx_txmsk3_s             cn50xx;
971 };
972 typedef union cvmx_pcmx_txmsk3 cvmx_pcmx_txmsk3_t;
973
974 /**
975  * cvmx_pcm#_txmsk4
976  */
977 union cvmx_pcmx_txmsk4
978 {
979         uint64_t u64;
980         struct cvmx_pcmx_txmsk4_s
981         {
982 #if __BYTE_ORDER == __BIG_ENDIAN
983         uint64_t mask                         : 64; /**< Transmit mask bits for slots 319 to 256
984                                                          (1 means transmit, 0 means don't transmit) */
985 #else
986         uint64_t mask                         : 64;
987 #endif
988         } s;
989         struct cvmx_pcmx_txmsk4_s             cn30xx;
990         struct cvmx_pcmx_txmsk4_s             cn31xx;
991         struct cvmx_pcmx_txmsk4_s             cn50xx;
992 };
993 typedef union cvmx_pcmx_txmsk4 cvmx_pcmx_txmsk4_t;
994
995 /**
996  * cvmx_pcm#_txmsk5
997  */
998 union cvmx_pcmx_txmsk5
999 {
1000         uint64_t u64;
1001         struct cvmx_pcmx_txmsk5_s
1002         {
1003 #if __BYTE_ORDER == __BIG_ENDIAN
1004         uint64_t mask                         : 64; /**< Transmit mask bits for slots 383 to 320
1005                                                          (1 means transmit, 0 means don't transmit) */
1006 #else
1007         uint64_t mask                         : 64;
1008 #endif
1009         } s;
1010         struct cvmx_pcmx_txmsk5_s             cn30xx;
1011         struct cvmx_pcmx_txmsk5_s             cn31xx;
1012         struct cvmx_pcmx_txmsk5_s             cn50xx;
1013 };
1014 typedef union cvmx_pcmx_txmsk5 cvmx_pcmx_txmsk5_t;
1015
1016 /**
1017  * cvmx_pcm#_txmsk6
1018  */
1019 union cvmx_pcmx_txmsk6
1020 {
1021         uint64_t u64;
1022         struct cvmx_pcmx_txmsk6_s
1023         {
1024 #if __BYTE_ORDER == __BIG_ENDIAN
1025         uint64_t mask                         : 64; /**< Transmit mask bits for slots 447 to 384
1026                                                          (1 means transmit, 0 means don't transmit) */
1027 #else
1028         uint64_t mask                         : 64;
1029 #endif
1030         } s;
1031         struct cvmx_pcmx_txmsk6_s             cn30xx;
1032         struct cvmx_pcmx_txmsk6_s             cn31xx;
1033         struct cvmx_pcmx_txmsk6_s             cn50xx;
1034 };
1035 typedef union cvmx_pcmx_txmsk6 cvmx_pcmx_txmsk6_t;
1036
1037 /**
1038  * cvmx_pcm#_txmsk7
1039  */
1040 union cvmx_pcmx_txmsk7
1041 {
1042         uint64_t u64;
1043         struct cvmx_pcmx_txmsk7_s
1044         {
1045 #if __BYTE_ORDER == __BIG_ENDIAN
1046         uint64_t mask                         : 64; /**< Transmit mask bits for slots 511 to 448
1047                                                          (1 means transmit, 0 means don't transmit) */
1048 #else
1049         uint64_t mask                         : 64;
1050 #endif
1051         } s;
1052         struct cvmx_pcmx_txmsk7_s             cn30xx;
1053         struct cvmx_pcmx_txmsk7_s             cn31xx;
1054         struct cvmx_pcmx_txmsk7_s             cn50xx;
1055 };
1056 typedef union cvmx_pcmx_txmsk7 cvmx_pcmx_txmsk7_t;
1057
1058 /**
1059  * cvmx_pcm#_txstart
1060  */
1061 union cvmx_pcmx_txstart
1062 {
1063         uint64_t u64;
1064         struct cvmx_pcmx_txstart_s
1065         {
1066 #if __BYTE_ORDER == __BIG_ENDIAN
1067         uint64_t reserved_36_63               : 28;
1068         uint64_t addr                         : 33; /**< Starting address for the transmit memory region */
1069         uint64_t reserved_0_2                 : 3;
1070 #else
1071         uint64_t reserved_0_2                 : 3;
1072         uint64_t addr                         : 33;
1073         uint64_t reserved_36_63               : 28;
1074 #endif
1075         } s;
1076         struct cvmx_pcmx_txstart_s            cn30xx;
1077         struct cvmx_pcmx_txstart_s            cn31xx;
1078         struct cvmx_pcmx_txstart_s            cn50xx;
1079 };
1080 typedef union cvmx_pcmx_txstart cvmx_pcmx_txstart_t;
1081
1082 #endif