]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/contrib/octeon-sdk/cvmx-usbnx-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-usbnx-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-usbnx-defs.h
43  *
44  * Configuration and status register (CSR) type definitions for
45  * Octeon usbnx.
46  *
47  * This file is auto generated. Do not edit.
48  *
49  * <hr>$Revision$<hr>
50  *
51  */
52 #ifndef __CVMX_USBNX_TYPEDEFS_H__
53 #define __CVMX_USBNX_TYPEDEFS_H__
54
55 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
56 static inline uint64_t CVMX_USBNX_BIST_STATUS(unsigned long block_id)
57 {
58         if (!(
59               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
60               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
61               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
62               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
63               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
64                 cvmx_warn("CVMX_USBNX_BIST_STATUS(%lu) is invalid on this chip\n", block_id);
65         return CVMX_ADD_IO_SEG(0x00011800680007F8ull) + ((block_id) & 1) * 0x10000000ull;
66 }
67 #else
68 #define CVMX_USBNX_BIST_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00011800680007F8ull) + ((block_id) & 1) * 0x10000000ull)
69 #endif
70 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
71 static inline uint64_t CVMX_USBNX_CLK_CTL(unsigned long block_id)
72 {
73         if (!(
74               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
75               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
76               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
77               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
78               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
79                 cvmx_warn("CVMX_USBNX_CLK_CTL(%lu) is invalid on this chip\n", block_id);
80         return CVMX_ADD_IO_SEG(0x0001180068000010ull) + ((block_id) & 1) * 0x10000000ull;
81 }
82 #else
83 #define CVMX_USBNX_CLK_CTL(block_id) (CVMX_ADD_IO_SEG(0x0001180068000010ull) + ((block_id) & 1) * 0x10000000ull)
84 #endif
85 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
86 static inline uint64_t CVMX_USBNX_CTL_STATUS(unsigned long block_id)
87 {
88         if (!(
89               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
90               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
91               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
92               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
93               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
94                 cvmx_warn("CVMX_USBNX_CTL_STATUS(%lu) is invalid on this chip\n", block_id);
95         return CVMX_ADD_IO_SEG(0x00016F0000000800ull) + ((block_id) & 1) * 0x100000000000ull;
96 }
97 #else
98 #define CVMX_USBNX_CTL_STATUS(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000800ull) + ((block_id) & 1) * 0x100000000000ull)
99 #endif
100 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
101 static inline uint64_t CVMX_USBNX_DMA0_INB_CHN0(unsigned long block_id)
102 {
103         if (!(
104               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
105               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
106               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
107               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
108               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
109                 cvmx_warn("CVMX_USBNX_DMA0_INB_CHN0(%lu) is invalid on this chip\n", block_id);
110         return CVMX_ADD_IO_SEG(0x00016F0000000818ull) + ((block_id) & 1) * 0x100000000000ull;
111 }
112 #else
113 #define CVMX_USBNX_DMA0_INB_CHN0(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000818ull) + ((block_id) & 1) * 0x100000000000ull)
114 #endif
115 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
116 static inline uint64_t CVMX_USBNX_DMA0_INB_CHN1(unsigned long block_id)
117 {
118         if (!(
119               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
120               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
121               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
122               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
123               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
124                 cvmx_warn("CVMX_USBNX_DMA0_INB_CHN1(%lu) is invalid on this chip\n", block_id);
125         return CVMX_ADD_IO_SEG(0x00016F0000000820ull) + ((block_id) & 1) * 0x100000000000ull;
126 }
127 #else
128 #define CVMX_USBNX_DMA0_INB_CHN1(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000820ull) + ((block_id) & 1) * 0x100000000000ull)
129 #endif
130 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
131 static inline uint64_t CVMX_USBNX_DMA0_INB_CHN2(unsigned long block_id)
132 {
133         if (!(
134               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
135               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
136               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
137               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
138               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
139                 cvmx_warn("CVMX_USBNX_DMA0_INB_CHN2(%lu) is invalid on this chip\n", block_id);
140         return CVMX_ADD_IO_SEG(0x00016F0000000828ull) + ((block_id) & 1) * 0x100000000000ull;
141 }
142 #else
143 #define CVMX_USBNX_DMA0_INB_CHN2(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000828ull) + ((block_id) & 1) * 0x100000000000ull)
144 #endif
145 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
146 static inline uint64_t CVMX_USBNX_DMA0_INB_CHN3(unsigned long block_id)
147 {
148         if (!(
149               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
150               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
151               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
152               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
153               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
154                 cvmx_warn("CVMX_USBNX_DMA0_INB_CHN3(%lu) is invalid on this chip\n", block_id);
155         return CVMX_ADD_IO_SEG(0x00016F0000000830ull) + ((block_id) & 1) * 0x100000000000ull;
156 }
157 #else
158 #define CVMX_USBNX_DMA0_INB_CHN3(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000830ull) + ((block_id) & 1) * 0x100000000000ull)
159 #endif
160 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
161 static inline uint64_t CVMX_USBNX_DMA0_INB_CHN4(unsigned long block_id)
162 {
163         if (!(
164               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
165               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
166               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
167               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
168               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
169                 cvmx_warn("CVMX_USBNX_DMA0_INB_CHN4(%lu) is invalid on this chip\n", block_id);
170         return CVMX_ADD_IO_SEG(0x00016F0000000838ull) + ((block_id) & 1) * 0x100000000000ull;
171 }
172 #else
173 #define CVMX_USBNX_DMA0_INB_CHN4(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000838ull) + ((block_id) & 1) * 0x100000000000ull)
174 #endif
175 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
176 static inline uint64_t CVMX_USBNX_DMA0_INB_CHN5(unsigned long block_id)
177 {
178         if (!(
179               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
180               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
181               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
182               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
183               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
184                 cvmx_warn("CVMX_USBNX_DMA0_INB_CHN5(%lu) is invalid on this chip\n", block_id);
185         return CVMX_ADD_IO_SEG(0x00016F0000000840ull) + ((block_id) & 1) * 0x100000000000ull;
186 }
187 #else
188 #define CVMX_USBNX_DMA0_INB_CHN5(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000840ull) + ((block_id) & 1) * 0x100000000000ull)
189 #endif
190 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
191 static inline uint64_t CVMX_USBNX_DMA0_INB_CHN6(unsigned long block_id)
192 {
193         if (!(
194               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
195               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
196               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
197               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
198               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
199                 cvmx_warn("CVMX_USBNX_DMA0_INB_CHN6(%lu) is invalid on this chip\n", block_id);
200         return CVMX_ADD_IO_SEG(0x00016F0000000848ull) + ((block_id) & 1) * 0x100000000000ull;
201 }
202 #else
203 #define CVMX_USBNX_DMA0_INB_CHN6(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000848ull) + ((block_id) & 1) * 0x100000000000ull)
204 #endif
205 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
206 static inline uint64_t CVMX_USBNX_DMA0_INB_CHN7(unsigned long block_id)
207 {
208         if (!(
209               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
210               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
211               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
212               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
213               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
214                 cvmx_warn("CVMX_USBNX_DMA0_INB_CHN7(%lu) is invalid on this chip\n", block_id);
215         return CVMX_ADD_IO_SEG(0x00016F0000000850ull) + ((block_id) & 1) * 0x100000000000ull;
216 }
217 #else
218 #define CVMX_USBNX_DMA0_INB_CHN7(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000850ull) + ((block_id) & 1) * 0x100000000000ull)
219 #endif
220 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
221 static inline uint64_t CVMX_USBNX_DMA0_OUTB_CHN0(unsigned long block_id)
222 {
223         if (!(
224               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
225               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
226               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
227               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
228               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
229                 cvmx_warn("CVMX_USBNX_DMA0_OUTB_CHN0(%lu) is invalid on this chip\n", block_id);
230         return CVMX_ADD_IO_SEG(0x00016F0000000858ull) + ((block_id) & 1) * 0x100000000000ull;
231 }
232 #else
233 #define CVMX_USBNX_DMA0_OUTB_CHN0(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000858ull) + ((block_id) & 1) * 0x100000000000ull)
234 #endif
235 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
236 static inline uint64_t CVMX_USBNX_DMA0_OUTB_CHN1(unsigned long block_id)
237 {
238         if (!(
239               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
240               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
241               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
242               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
243               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
244                 cvmx_warn("CVMX_USBNX_DMA0_OUTB_CHN1(%lu) is invalid on this chip\n", block_id);
245         return CVMX_ADD_IO_SEG(0x00016F0000000860ull) + ((block_id) & 1) * 0x100000000000ull;
246 }
247 #else
248 #define CVMX_USBNX_DMA0_OUTB_CHN1(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000860ull) + ((block_id) & 1) * 0x100000000000ull)
249 #endif
250 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
251 static inline uint64_t CVMX_USBNX_DMA0_OUTB_CHN2(unsigned long block_id)
252 {
253         if (!(
254               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
255               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
256               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
257               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
258               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
259                 cvmx_warn("CVMX_USBNX_DMA0_OUTB_CHN2(%lu) is invalid on this chip\n", block_id);
260         return CVMX_ADD_IO_SEG(0x00016F0000000868ull) + ((block_id) & 1) * 0x100000000000ull;
261 }
262 #else
263 #define CVMX_USBNX_DMA0_OUTB_CHN2(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000868ull) + ((block_id) & 1) * 0x100000000000ull)
264 #endif
265 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
266 static inline uint64_t CVMX_USBNX_DMA0_OUTB_CHN3(unsigned long block_id)
267 {
268         if (!(
269               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
270               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
271               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
272               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
273               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
274                 cvmx_warn("CVMX_USBNX_DMA0_OUTB_CHN3(%lu) is invalid on this chip\n", block_id);
275         return CVMX_ADD_IO_SEG(0x00016F0000000870ull) + ((block_id) & 1) * 0x100000000000ull;
276 }
277 #else
278 #define CVMX_USBNX_DMA0_OUTB_CHN3(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000870ull) + ((block_id) & 1) * 0x100000000000ull)
279 #endif
280 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
281 static inline uint64_t CVMX_USBNX_DMA0_OUTB_CHN4(unsigned long block_id)
282 {
283         if (!(
284               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
285               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
286               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
287               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
288               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
289                 cvmx_warn("CVMX_USBNX_DMA0_OUTB_CHN4(%lu) is invalid on this chip\n", block_id);
290         return CVMX_ADD_IO_SEG(0x00016F0000000878ull) + ((block_id) & 1) * 0x100000000000ull;
291 }
292 #else
293 #define CVMX_USBNX_DMA0_OUTB_CHN4(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000878ull) + ((block_id) & 1) * 0x100000000000ull)
294 #endif
295 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
296 static inline uint64_t CVMX_USBNX_DMA0_OUTB_CHN5(unsigned long block_id)
297 {
298         if (!(
299               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
300               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
301               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
302               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
303               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
304                 cvmx_warn("CVMX_USBNX_DMA0_OUTB_CHN5(%lu) is invalid on this chip\n", block_id);
305         return CVMX_ADD_IO_SEG(0x00016F0000000880ull) + ((block_id) & 1) * 0x100000000000ull;
306 }
307 #else
308 #define CVMX_USBNX_DMA0_OUTB_CHN5(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000880ull) + ((block_id) & 1) * 0x100000000000ull)
309 #endif
310 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
311 static inline uint64_t CVMX_USBNX_DMA0_OUTB_CHN6(unsigned long block_id)
312 {
313         if (!(
314               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
315               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
316               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
317               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
318               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
319                 cvmx_warn("CVMX_USBNX_DMA0_OUTB_CHN6(%lu) is invalid on this chip\n", block_id);
320         return CVMX_ADD_IO_SEG(0x00016F0000000888ull) + ((block_id) & 1) * 0x100000000000ull;
321 }
322 #else
323 #define CVMX_USBNX_DMA0_OUTB_CHN6(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000888ull) + ((block_id) & 1) * 0x100000000000ull)
324 #endif
325 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
326 static inline uint64_t CVMX_USBNX_DMA0_OUTB_CHN7(unsigned long block_id)
327 {
328         if (!(
329               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
330               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
331               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
332               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
333               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
334                 cvmx_warn("CVMX_USBNX_DMA0_OUTB_CHN7(%lu) is invalid on this chip\n", block_id);
335         return CVMX_ADD_IO_SEG(0x00016F0000000890ull) + ((block_id) & 1) * 0x100000000000ull;
336 }
337 #else
338 #define CVMX_USBNX_DMA0_OUTB_CHN7(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000890ull) + ((block_id) & 1) * 0x100000000000ull)
339 #endif
340 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
341 static inline uint64_t CVMX_USBNX_DMA_TEST(unsigned long block_id)
342 {
343         if (!(
344               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
345               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
346               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
347               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
348               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
349                 cvmx_warn("CVMX_USBNX_DMA_TEST(%lu) is invalid on this chip\n", block_id);
350         return CVMX_ADD_IO_SEG(0x00016F0000000808ull) + ((block_id) & 1) * 0x100000000000ull;
351 }
352 #else
353 #define CVMX_USBNX_DMA_TEST(block_id) (CVMX_ADD_IO_SEG(0x00016F0000000808ull) + ((block_id) & 1) * 0x100000000000ull)
354 #endif
355 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
356 static inline uint64_t CVMX_USBNX_INT_ENB(unsigned long block_id)
357 {
358         if (!(
359               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
360               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
361               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
362               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
363               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
364                 cvmx_warn("CVMX_USBNX_INT_ENB(%lu) is invalid on this chip\n", block_id);
365         return CVMX_ADD_IO_SEG(0x0001180068000008ull) + ((block_id) & 1) * 0x10000000ull;
366 }
367 #else
368 #define CVMX_USBNX_INT_ENB(block_id) (CVMX_ADD_IO_SEG(0x0001180068000008ull) + ((block_id) & 1) * 0x10000000ull)
369 #endif
370 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
371 static inline uint64_t CVMX_USBNX_INT_SUM(unsigned long block_id)
372 {
373         if (!(
374               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
375               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
376               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
377               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
378               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
379                 cvmx_warn("CVMX_USBNX_INT_SUM(%lu) is invalid on this chip\n", block_id);
380         return CVMX_ADD_IO_SEG(0x0001180068000000ull) + ((block_id) & 1) * 0x10000000ull;
381 }
382 #else
383 #define CVMX_USBNX_INT_SUM(block_id) (CVMX_ADD_IO_SEG(0x0001180068000000ull) + ((block_id) & 1) * 0x10000000ull)
384 #endif
385 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
386 static inline uint64_t CVMX_USBNX_USBP_CTL_STATUS(unsigned long block_id)
387 {
388         if (!(
389               (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((block_id == 0))) ||
390               (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((block_id == 0))) ||
391               (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((block_id == 0))) ||
392               (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((block_id <= 1))) ||
393               (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((block_id == 0)))))
394                 cvmx_warn("CVMX_USBNX_USBP_CTL_STATUS(%lu) is invalid on this chip\n", block_id);
395         return CVMX_ADD_IO_SEG(0x0001180068000018ull) + ((block_id) & 1) * 0x10000000ull;
396 }
397 #else
398 #define CVMX_USBNX_USBP_CTL_STATUS(block_id) (CVMX_ADD_IO_SEG(0x0001180068000018ull) + ((block_id) & 1) * 0x10000000ull)
399 #endif
400
401 /**
402  * cvmx_usbn#_bist_status
403  *
404  * USBN_BIST_STATUS = USBN's Control and Status
405  *
406  * Contain general control bits and status information for the USBN.
407  */
408 union cvmx_usbnx_bist_status
409 {
410         uint64_t u64;
411         struct cvmx_usbnx_bist_status_s
412         {
413 #if __BYTE_ORDER == __BIG_ENDIAN
414         uint64_t reserved_7_63                : 57;
415         uint64_t u2nc_bis                     : 1;  /**< Bist status U2N CTL FIFO Memory. */
416         uint64_t u2nf_bis                     : 1;  /**< Bist status U2N FIFO Memory. */
417         uint64_t e2hc_bis                     : 1;  /**< Bist status E2H CTL FIFO Memory. */
418         uint64_t n2uf_bis                     : 1;  /**< Bist status N2U  FIFO Memory. */
419         uint64_t usbc_bis                     : 1;  /**< Bist status USBC FIFO Memory. */
420         uint64_t nif_bis                      : 1;  /**< Bist status for Inbound Memory. */
421         uint64_t nof_bis                      : 1;  /**< Bist status for Outbound Memory. */
422 #else
423         uint64_t nof_bis                      : 1;
424         uint64_t nif_bis                      : 1;
425         uint64_t usbc_bis                     : 1;
426         uint64_t n2uf_bis                     : 1;
427         uint64_t e2hc_bis                     : 1;
428         uint64_t u2nf_bis                     : 1;
429         uint64_t u2nc_bis                     : 1;
430         uint64_t reserved_7_63                : 57;
431 #endif
432         } s;
433         struct cvmx_usbnx_bist_status_cn30xx
434         {
435 #if __BYTE_ORDER == __BIG_ENDIAN
436         uint64_t reserved_3_63                : 61;
437         uint64_t usbc_bis                     : 1;  /**< Bist status USBC FIFO Memory. */
438         uint64_t nif_bis                      : 1;  /**< Bist status for Inbound Memory. */
439         uint64_t nof_bis                      : 1;  /**< Bist status for Outbound Memory. */
440 #else
441         uint64_t nof_bis                      : 1;
442         uint64_t nif_bis                      : 1;
443         uint64_t usbc_bis                     : 1;
444         uint64_t reserved_3_63                : 61;
445 #endif
446         } cn30xx;
447         struct cvmx_usbnx_bist_status_cn30xx  cn31xx;
448         struct cvmx_usbnx_bist_status_s       cn50xx;
449         struct cvmx_usbnx_bist_status_s       cn52xx;
450         struct cvmx_usbnx_bist_status_s       cn52xxp1;
451         struct cvmx_usbnx_bist_status_s       cn56xx;
452         struct cvmx_usbnx_bist_status_s       cn56xxp1;
453 };
454 typedef union cvmx_usbnx_bist_status cvmx_usbnx_bist_status_t;
455
456 /**
457  * cvmx_usbn#_clk_ctl
458  *
459  * USBN_CLK_CTL = USBN's Clock Control
460  *
461  * This register is used to control the frequency of the hclk and the hreset and phy_rst signals.
462  */
463 union cvmx_usbnx_clk_ctl
464 {
465         uint64_t u64;
466         struct cvmx_usbnx_clk_ctl_s
467         {
468 #if __BYTE_ORDER == __BIG_ENDIAN
469         uint64_t reserved_20_63               : 44;
470         uint64_t divide2                      : 2;  /**< The 'hclk' used by the USB subsystem is derived
471                                                          from the eclk.
472                                                          Also see the field DIVIDE. DIVIDE2<1> must currently
473                                                          be zero because it is not implemented, so the maximum
474                                                          ratio of eclk/hclk is currently 16.
475                                                          The actual divide number for hclk is:
476                                                          (DIVIDE2 + 1) * (DIVIDE + 1) */
477         uint64_t hclk_rst                     : 1;  /**< When this field is '0' the HCLK-DIVIDER used to
478                                                          generate the hclk in the USB Subsystem is held
479                                                          in reset. This bit must be set to '0' before
480                                                          changing the value os DIVIDE in this register.
481                                                          The reset to the HCLK_DIVIDERis also asserted
482                                                          when core reset is asserted. */
483         uint64_t p_x_on                       : 1;  /**< Force USB-PHY on during suspend.
484                                                          '1' USB-PHY XO block is powered-down during
485                                                              suspend.
486                                                          '0' USB-PHY XO block is powered-up during
487                                                              suspend.
488                                                          The value of this field must be set while POR is
489                                                          active. */
490         uint64_t reserved_14_15               : 2;
491         uint64_t p_com_on                     : 1;  /**< '0' Force USB-PHY XO Bias, Bandgap and PLL to
492                                                              remain powered in Suspend Mode.
493                                                          '1' The USB-PHY XO Bias, Bandgap and PLL are
494                                                              powered down in suspend mode.
495                                                          The value of this field must be set while POR is
496                                                          active. */
497         uint64_t p_c_sel                      : 2;  /**< Phy clock speed select.
498                                                          Selects the reference clock / crystal frequency.
499                                                          '11': Reserved
500                                                          '10': 48 MHz (reserved when a crystal is used)
501                                                          '01': 24 MHz (reserved when a crystal is used)
502                                                          '00': 12 MHz
503                                                          The value of this field must be set while POR is
504                                                          active.
505                                                          NOTE: if a crystal is used as a reference clock,
506                                                          this field must be set to 12 MHz. */
507         uint64_t cdiv_byp                     : 1;  /**< Used to enable the bypass input to the USB_CLK_DIV. */
508         uint64_t sd_mode                      : 2;  /**< Scaledown mode for the USBC. Control timing events
509                                                          in the USBC, for normal operation this must be '0'. */
510         uint64_t s_bist                       : 1;  /**< Starts bist on the hclk memories, during the '0'
511                                                          to '1' transition. */
512         uint64_t por                          : 1;  /**< Power On Reset for the PHY.
513                                                          Resets all the PHYS registers and state machines. */
514         uint64_t enable                       : 1;  /**< When '1' allows the generation of the hclk. When
515                                                          '0' the hclk will not be generated. SEE DIVIDE
516                                                          field of this register. */
517         uint64_t prst                         : 1;  /**< When this field is '0' the reset associated with
518                                                          the phy_clk functionality in the USB Subsystem is
519                                                          help in reset. This bit should not be set to '1'
520                                                          until the time it takes 6 clocks (hclk or phy_clk,
521                                                          whichever is slower) has passed. Under normal
522                                                          operation once this bit is set to '1' it should not
523                                                          be set to '0'. */
524         uint64_t hrst                         : 1;  /**< When this field is '0' the reset associated with
525                                                          the hclk functioanlity in the USB Subsystem is
526                                                          held in reset.This bit should not be set to '1'
527                                                          until 12ms after phy_clk is stable. Under normal
528                                                          operation, once this bit is set to '1' it should
529                                                          not be set to '0'. */
530         uint64_t divide                       : 3;  /**< The frequency of 'hclk' used by the USB subsystem
531                                                          is the eclk frequency divided by the value of
532                                                          (DIVIDE2 + 1) * (DIVIDE + 1), also see the field
533                                                          DIVIDE2 of this register.
534                                                          The hclk frequency should be less than 125Mhz.
535                                                          After writing a value to this field the SW should
536                                                          read the field for the value written.
537                                                          The ENABLE field of this register should not be set
538                                                          until AFTER this field is set and then read. */
539 #else
540         uint64_t divide                       : 3;
541         uint64_t hrst                         : 1;
542         uint64_t prst                         : 1;
543         uint64_t enable                       : 1;
544         uint64_t por                          : 1;
545         uint64_t s_bist                       : 1;
546         uint64_t sd_mode                      : 2;
547         uint64_t cdiv_byp                     : 1;
548         uint64_t p_c_sel                      : 2;
549         uint64_t p_com_on                     : 1;
550         uint64_t reserved_14_15               : 2;
551         uint64_t p_x_on                       : 1;
552         uint64_t hclk_rst                     : 1;
553         uint64_t divide2                      : 2;
554         uint64_t reserved_20_63               : 44;
555 #endif
556         } s;
557         struct cvmx_usbnx_clk_ctl_cn30xx
558         {
559 #if __BYTE_ORDER == __BIG_ENDIAN
560         uint64_t reserved_18_63               : 46;
561         uint64_t hclk_rst                     : 1;  /**< When this field is '0' the HCLK-DIVIDER used to
562                                                          generate the hclk in the USB Subsystem is held
563                                                          in reset. This bit must be set to '0' before
564                                                          changing the value os DIVIDE in this register.
565                                                          The reset to the HCLK_DIVIDERis also asserted
566                                                          when core reset is asserted. */
567         uint64_t p_x_on                       : 1;  /**< Force USB-PHY on during suspend.
568                                                          '1' USB-PHY XO block is powered-down during
569                                                              suspend.
570                                                          '0' USB-PHY XO block is powered-up during
571                                                              suspend.
572                                                          The value of this field must be set while POR is
573                                                          active. */
574         uint64_t p_rclk                       : 1;  /**< Phy refrence clock enable.
575                                                          '1' The PHY PLL uses the XO block output as a
576                                                          reference.
577                                                          '0' Reserved. */
578         uint64_t p_xenbn                      : 1;  /**< Phy external clock enable.
579                                                          '1' The XO block uses the clock from a crystal.
580                                                          '0' The XO block uses an external clock supplied
581                                                              on the XO pin. USB_XI should be tied to
582                                                              ground for this usage. */
583         uint64_t p_com_on                     : 1;  /**< '0' Force USB-PHY XO Bias, Bandgap and PLL to
584                                                              remain powered in Suspend Mode.
585                                                          '1' The USB-PHY XO Bias, Bandgap and PLL are
586                                                              powered down in suspend mode.
587                                                          The value of this field must be set while POR is
588                                                          active. */
589         uint64_t p_c_sel                      : 2;  /**< Phy clock speed select.
590                                                          Selects the reference clock / crystal frequency.
591                                                          '11': Reserved
592                                                          '10': 48 MHz
593                                                          '01': 24 MHz
594                                                          '00': 12 MHz
595                                                          The value of this field must be set while POR is
596                                                          active. */
597         uint64_t cdiv_byp                     : 1;  /**< Used to enable the bypass input to the USB_CLK_DIV. */
598         uint64_t sd_mode                      : 2;  /**< Scaledown mode for the USBC. Control timing events
599                                                          in the USBC, for normal operation this must be '0'. */
600         uint64_t s_bist                       : 1;  /**< Starts bist on the hclk memories, during the '0'
601                                                          to '1' transition. */
602         uint64_t por                          : 1;  /**< Power On Reset for the PHY.
603                                                          Resets all the PHYS registers and state machines. */
604         uint64_t enable                       : 1;  /**< When '1' allows the generation of the hclk. When
605                                                          '0' the hclk will not be generated. */
606         uint64_t prst                         : 1;  /**< When this field is '0' the reset associated with
607                                                          the phy_clk functionality in the USB Subsystem is
608                                                          help in reset. This bit should not be set to '1'
609                                                          until the time it takes 6 clocks (hclk or phy_clk,
610                                                          whichever is slower) has passed. Under normal
611                                                          operation once this bit is set to '1' it should not
612                                                          be set to '0'. */
613         uint64_t hrst                         : 1;  /**< When this field is '0' the reset associated with
614                                                          the hclk functioanlity in the USB Subsystem is
615                                                          held in reset.This bit should not be set to '1'
616                                                          until 12ms after phy_clk is stable. Under normal
617                                                          operation, once this bit is set to '1' it should
618                                                          not be set to '0'. */
619         uint64_t divide                       : 3;  /**< The 'hclk' used by the USB subsystem is derived
620                                                          from the eclk. The eclk will be divided by the
621                                                          value of this field +1 to determine the hclk
622                                                          frequency. (Also see HRST of this register).
623                                                          The hclk frequency must be less than 125 MHz. */
624 #else
625         uint64_t divide                       : 3;
626         uint64_t hrst                         : 1;
627         uint64_t prst                         : 1;
628         uint64_t enable                       : 1;
629         uint64_t por                          : 1;
630         uint64_t s_bist                       : 1;
631         uint64_t sd_mode                      : 2;
632         uint64_t cdiv_byp                     : 1;
633         uint64_t p_c_sel                      : 2;
634         uint64_t p_com_on                     : 1;
635         uint64_t p_xenbn                      : 1;
636         uint64_t p_rclk                       : 1;
637         uint64_t p_x_on                       : 1;
638         uint64_t hclk_rst                     : 1;
639         uint64_t reserved_18_63               : 46;
640 #endif
641         } cn30xx;
642         struct cvmx_usbnx_clk_ctl_cn30xx      cn31xx;
643         struct cvmx_usbnx_clk_ctl_cn50xx
644         {
645 #if __BYTE_ORDER == __BIG_ENDIAN
646         uint64_t reserved_20_63               : 44;
647         uint64_t divide2                      : 2;  /**< The 'hclk' used by the USB subsystem is derived
648                                                          from the eclk.
649                                                          Also see the field DIVIDE. DIVIDE2<1> must currently
650                                                          be zero because it is not implemented, so the maximum
651                                                          ratio of eclk/hclk is currently 16.
652                                                          The actual divide number for hclk is:
653                                                          (DIVIDE2 + 1) * (DIVIDE + 1) */
654         uint64_t hclk_rst                     : 1;  /**< When this field is '0' the HCLK-DIVIDER used to
655                                                          generate the hclk in the USB Subsystem is held
656                                                          in reset. This bit must be set to '0' before
657                                                          changing the value os DIVIDE in this register.
658                                                          The reset to the HCLK_DIVIDERis also asserted
659                                                          when core reset is asserted. */
660         uint64_t reserved_16_16               : 1;
661         uint64_t p_rtype                      : 2;  /**< PHY reference clock type
662                                                          '0' The USB-PHY uses a 12MHz crystal as a clock
663                                                              source at the USB_XO and USB_XI pins
664                                                          '1' Reserved
665                                                          '2' The USB_PHY uses 12/24/48MHz 2.5V board clock
666                                                              at the USB_XO pin. USB_XI should be tied to
667                                                              ground in this case.
668                                                          '3' Reserved
669                                                          (bit 14 was P_XENBN on 3xxx)
670                                                          (bit 15 was P_RCLK on 3xxx) */
671         uint64_t p_com_on                     : 1;  /**< '0' Force USB-PHY XO Bias, Bandgap and PLL to
672                                                              remain powered in Suspend Mode.
673                                                          '1' The USB-PHY XO Bias, Bandgap and PLL are
674                                                              powered down in suspend mode.
675                                                          The value of this field must be set while POR is
676                                                          active. */
677         uint64_t p_c_sel                      : 2;  /**< Phy clock speed select.
678                                                          Selects the reference clock / crystal frequency.
679                                                          '11': Reserved
680                                                          '10': 48 MHz (reserved when a crystal is used)
681                                                          '01': 24 MHz (reserved when a crystal is used)
682                                                          '00': 12 MHz
683                                                          The value of this field must be set while POR is
684                                                          active.
685                                                          NOTE: if a crystal is used as a reference clock,
686                                                          this field must be set to 12 MHz. */
687         uint64_t cdiv_byp                     : 1;  /**< Used to enable the bypass input to the USB_CLK_DIV. */
688         uint64_t sd_mode                      : 2;  /**< Scaledown mode for the USBC. Control timing events
689                                                          in the USBC, for normal operation this must be '0'. */
690         uint64_t s_bist                       : 1;  /**< Starts bist on the hclk memories, during the '0'
691                                                          to '1' transition. */
692         uint64_t por                          : 1;  /**< Power On Reset for the PHY.
693                                                          Resets all the PHYS registers and state machines. */
694         uint64_t enable                       : 1;  /**< When '1' allows the generation of the hclk. When
695                                                          '0' the hclk will not be generated. SEE DIVIDE
696                                                          field of this register. */
697         uint64_t prst                         : 1;  /**< When this field is '0' the reset associated with
698                                                          the phy_clk functionality in the USB Subsystem is
699                                                          help in reset. This bit should not be set to '1'
700                                                          until the time it takes 6 clocks (hclk or phy_clk,
701                                                          whichever is slower) has passed. Under normal
702                                                          operation once this bit is set to '1' it should not
703                                                          be set to '0'. */
704         uint64_t hrst                         : 1;  /**< When this field is '0' the reset associated with
705                                                          the hclk functioanlity in the USB Subsystem is
706                                                          held in reset.This bit should not be set to '1'
707                                                          until 12ms after phy_clk is stable. Under normal
708                                                          operation, once this bit is set to '1' it should
709                                                          not be set to '0'. */
710         uint64_t divide                       : 3;  /**< The frequency of 'hclk' used by the USB subsystem
711                                                          is the eclk frequency divided by the value of
712                                                          (DIVIDE2 + 1) * (DIVIDE + 1), also see the field
713                                                          DIVIDE2 of this register.
714                                                          The hclk frequency should be less than 125Mhz.
715                                                          After writing a value to this field the SW should
716                                                          read the field for the value written.
717                                                          The ENABLE field of this register should not be set
718                                                          until AFTER this field is set and then read. */
719 #else
720         uint64_t divide                       : 3;
721         uint64_t hrst                         : 1;
722         uint64_t prst                         : 1;
723         uint64_t enable                       : 1;
724         uint64_t por                          : 1;
725         uint64_t s_bist                       : 1;
726         uint64_t sd_mode                      : 2;
727         uint64_t cdiv_byp                     : 1;
728         uint64_t p_c_sel                      : 2;
729         uint64_t p_com_on                     : 1;
730         uint64_t p_rtype                      : 2;
731         uint64_t reserved_16_16               : 1;
732         uint64_t hclk_rst                     : 1;
733         uint64_t divide2                      : 2;
734         uint64_t reserved_20_63               : 44;
735 #endif
736         } cn50xx;
737         struct cvmx_usbnx_clk_ctl_cn50xx      cn52xx;
738         struct cvmx_usbnx_clk_ctl_cn50xx      cn52xxp1;
739         struct cvmx_usbnx_clk_ctl_cn50xx      cn56xx;
740         struct cvmx_usbnx_clk_ctl_cn50xx      cn56xxp1;
741 };
742 typedef union cvmx_usbnx_clk_ctl cvmx_usbnx_clk_ctl_t;
743
744 /**
745  * cvmx_usbn#_ctl_status
746  *
747  * USBN_CTL_STATUS = USBN's Control And Status Register
748  *
749  * Contains general control and status information for the USBN block.
750  */
751 union cvmx_usbnx_ctl_status
752 {
753         uint64_t u64;
754         struct cvmx_usbnx_ctl_status_s
755         {
756 #if __BYTE_ORDER == __BIG_ENDIAN
757         uint64_t reserved_6_63                : 58;
758         uint64_t dma_0pag                     : 1;  /**< When '1' sets the DMA engine will set the zero-Page
759                                                          bit in the L2C store operation to the IOB. */
760         uint64_t dma_stt                      : 1;  /**< When '1' sets the DMA engine to use STT operations. */
761         uint64_t dma_test                     : 1;  /**< When '1' sets the DMA engine into Test-Mode.
762                                                          For normal operation this bit should be '0'. */
763         uint64_t inv_a2                       : 1;  /**< When '1' causes the address[2] driven on the AHB
764                                                          for USB-CORE FIFO access to be inverted. Also data
765                                                          writen to and read from the AHB will have it byte
766                                                          order swapped. If the orginal order was A-B-C-D the
767                                                          new byte order will be D-C-B-A. */
768         uint64_t l2c_emod                     : 2;  /**< Endian format for data from/to the L2C.
769                                                          IN:   A-B-C-D-E-F-G-H
770                                                          OUT0: A-B-C-D-E-F-G-H
771                                                          OUT1: H-G-F-E-D-C-B-A
772                                                          OUT2: D-C-B-A-H-G-F-E
773                                                          OUT3: E-F-G-H-A-B-C-D */
774 #else
775         uint64_t l2c_emod                     : 2;
776         uint64_t inv_a2                       : 1;
777         uint64_t dma_test                     : 1;
778         uint64_t dma_stt                      : 1;
779         uint64_t dma_0pag                     : 1;
780         uint64_t reserved_6_63                : 58;
781 #endif
782         } s;
783         struct cvmx_usbnx_ctl_status_s        cn30xx;
784         struct cvmx_usbnx_ctl_status_s        cn31xx;
785         struct cvmx_usbnx_ctl_status_s        cn50xx;
786         struct cvmx_usbnx_ctl_status_s        cn52xx;
787         struct cvmx_usbnx_ctl_status_s        cn52xxp1;
788         struct cvmx_usbnx_ctl_status_s        cn56xx;
789         struct cvmx_usbnx_ctl_status_s        cn56xxp1;
790 };
791 typedef union cvmx_usbnx_ctl_status cvmx_usbnx_ctl_status_t;
792
793 /**
794  * cvmx_usbn#_dma0_inb_chn0
795  *
796  * USBN_DMA0_INB_CHN0 = USBN's Inbound DMA for USB0 Channel0
797  *
798  * Contains the starting address for use when USB0 writes to L2C via Channel0.
799  * Writing of this register sets the base address.
800  */
801 union cvmx_usbnx_dma0_inb_chn0
802 {
803         uint64_t u64;
804         struct cvmx_usbnx_dma0_inb_chn0_s
805         {
806 #if __BYTE_ORDER == __BIG_ENDIAN
807         uint64_t reserved_36_63               : 28;
808         uint64_t addr                         : 36; /**< Base address for DMA Write to L2C. */
809 #else
810         uint64_t addr                         : 36;
811         uint64_t reserved_36_63               : 28;
812 #endif
813         } s;
814         struct cvmx_usbnx_dma0_inb_chn0_s     cn30xx;
815         struct cvmx_usbnx_dma0_inb_chn0_s     cn31xx;
816         struct cvmx_usbnx_dma0_inb_chn0_s     cn50xx;
817         struct cvmx_usbnx_dma0_inb_chn0_s     cn52xx;
818         struct cvmx_usbnx_dma0_inb_chn0_s     cn52xxp1;
819         struct cvmx_usbnx_dma0_inb_chn0_s     cn56xx;
820         struct cvmx_usbnx_dma0_inb_chn0_s     cn56xxp1;
821 };
822 typedef union cvmx_usbnx_dma0_inb_chn0 cvmx_usbnx_dma0_inb_chn0_t;
823
824 /**
825  * cvmx_usbn#_dma0_inb_chn1
826  *
827  * USBN_DMA0_INB_CHN1 = USBN's Inbound DMA for USB0 Channel1
828  *
829  * Contains the starting address for use when USB0 writes to L2C via Channel1.
830  * Writing of this register sets the base address.
831  */
832 union cvmx_usbnx_dma0_inb_chn1
833 {
834         uint64_t u64;
835         struct cvmx_usbnx_dma0_inb_chn1_s
836         {
837 #if __BYTE_ORDER == __BIG_ENDIAN
838         uint64_t reserved_36_63               : 28;
839         uint64_t addr                         : 36; /**< Base address for DMA Write to L2C. */
840 #else
841         uint64_t addr                         : 36;
842         uint64_t reserved_36_63               : 28;
843 #endif
844         } s;
845         struct cvmx_usbnx_dma0_inb_chn1_s     cn30xx;
846         struct cvmx_usbnx_dma0_inb_chn1_s     cn31xx;
847         struct cvmx_usbnx_dma0_inb_chn1_s     cn50xx;
848         struct cvmx_usbnx_dma0_inb_chn1_s     cn52xx;
849         struct cvmx_usbnx_dma0_inb_chn1_s     cn52xxp1;
850         struct cvmx_usbnx_dma0_inb_chn1_s     cn56xx;
851         struct cvmx_usbnx_dma0_inb_chn1_s     cn56xxp1;
852 };
853 typedef union cvmx_usbnx_dma0_inb_chn1 cvmx_usbnx_dma0_inb_chn1_t;
854
855 /**
856  * cvmx_usbn#_dma0_inb_chn2
857  *
858  * USBN_DMA0_INB_CHN2 = USBN's Inbound DMA for USB0 Channel2
859  *
860  * Contains the starting address for use when USB0 writes to L2C via Channel2.
861  * Writing of this register sets the base address.
862  */
863 union cvmx_usbnx_dma0_inb_chn2
864 {
865         uint64_t u64;
866         struct cvmx_usbnx_dma0_inb_chn2_s
867         {
868 #if __BYTE_ORDER == __BIG_ENDIAN
869         uint64_t reserved_36_63               : 28;
870         uint64_t addr                         : 36; /**< Base address for DMA Write to L2C. */
871 #else
872         uint64_t addr                         : 36;
873         uint64_t reserved_36_63               : 28;
874 #endif
875         } s;
876         struct cvmx_usbnx_dma0_inb_chn2_s     cn30xx;
877         struct cvmx_usbnx_dma0_inb_chn2_s     cn31xx;
878         struct cvmx_usbnx_dma0_inb_chn2_s     cn50xx;
879         struct cvmx_usbnx_dma0_inb_chn2_s     cn52xx;
880         struct cvmx_usbnx_dma0_inb_chn2_s     cn52xxp1;
881         struct cvmx_usbnx_dma0_inb_chn2_s     cn56xx;
882         struct cvmx_usbnx_dma0_inb_chn2_s     cn56xxp1;
883 };
884 typedef union cvmx_usbnx_dma0_inb_chn2 cvmx_usbnx_dma0_inb_chn2_t;
885
886 /**
887  * cvmx_usbn#_dma0_inb_chn3
888  *
889  * USBN_DMA0_INB_CHN3 = USBN's Inbound DMA for USB0 Channel3
890  *
891  * Contains the starting address for use when USB0 writes to L2C via Channel3.
892  * Writing of this register sets the base address.
893  */
894 union cvmx_usbnx_dma0_inb_chn3
895 {
896         uint64_t u64;
897         struct cvmx_usbnx_dma0_inb_chn3_s
898         {
899 #if __BYTE_ORDER == __BIG_ENDIAN
900         uint64_t reserved_36_63               : 28;
901         uint64_t addr                         : 36; /**< Base address for DMA Write to L2C. */
902 #else
903         uint64_t addr                         : 36;
904         uint64_t reserved_36_63               : 28;
905 #endif
906         } s;
907         struct cvmx_usbnx_dma0_inb_chn3_s     cn30xx;
908         struct cvmx_usbnx_dma0_inb_chn3_s     cn31xx;
909         struct cvmx_usbnx_dma0_inb_chn3_s     cn50xx;
910         struct cvmx_usbnx_dma0_inb_chn3_s     cn52xx;
911         struct cvmx_usbnx_dma0_inb_chn3_s     cn52xxp1;
912         struct cvmx_usbnx_dma0_inb_chn3_s     cn56xx;
913         struct cvmx_usbnx_dma0_inb_chn3_s     cn56xxp1;
914 };
915 typedef union cvmx_usbnx_dma0_inb_chn3 cvmx_usbnx_dma0_inb_chn3_t;
916
917 /**
918  * cvmx_usbn#_dma0_inb_chn4
919  *
920  * USBN_DMA0_INB_CHN4 = USBN's Inbound DMA for USB0 Channel4
921  *
922  * Contains the starting address for use when USB0 writes to L2C via Channel4.
923  * Writing of this register sets the base address.
924  */
925 union cvmx_usbnx_dma0_inb_chn4
926 {
927         uint64_t u64;
928         struct cvmx_usbnx_dma0_inb_chn4_s
929         {
930 #if __BYTE_ORDER == __BIG_ENDIAN
931         uint64_t reserved_36_63               : 28;
932         uint64_t addr                         : 36; /**< Base address for DMA Write to L2C. */
933 #else
934         uint64_t addr                         : 36;
935         uint64_t reserved_36_63               : 28;
936 #endif
937         } s;
938         struct cvmx_usbnx_dma0_inb_chn4_s     cn30xx;
939         struct cvmx_usbnx_dma0_inb_chn4_s     cn31xx;
940         struct cvmx_usbnx_dma0_inb_chn4_s     cn50xx;
941         struct cvmx_usbnx_dma0_inb_chn4_s     cn52xx;
942         struct cvmx_usbnx_dma0_inb_chn4_s     cn52xxp1;
943         struct cvmx_usbnx_dma0_inb_chn4_s     cn56xx;
944         struct cvmx_usbnx_dma0_inb_chn4_s     cn56xxp1;
945 };
946 typedef union cvmx_usbnx_dma0_inb_chn4 cvmx_usbnx_dma0_inb_chn4_t;
947
948 /**
949  * cvmx_usbn#_dma0_inb_chn5
950  *
951  * USBN_DMA0_INB_CHN5 = USBN's Inbound DMA for USB0 Channel5
952  *
953  * Contains the starting address for use when USB0 writes to L2C via Channel5.
954  * Writing of this register sets the base address.
955  */
956 union cvmx_usbnx_dma0_inb_chn5
957 {
958         uint64_t u64;
959         struct cvmx_usbnx_dma0_inb_chn5_s
960         {
961 #if __BYTE_ORDER == __BIG_ENDIAN
962         uint64_t reserved_36_63               : 28;
963         uint64_t addr                         : 36; /**< Base address for DMA Write to L2C. */
964 #else
965         uint64_t addr                         : 36;
966         uint64_t reserved_36_63               : 28;
967 #endif
968         } s;
969         struct cvmx_usbnx_dma0_inb_chn5_s     cn30xx;
970         struct cvmx_usbnx_dma0_inb_chn5_s     cn31xx;
971         struct cvmx_usbnx_dma0_inb_chn5_s     cn50xx;
972         struct cvmx_usbnx_dma0_inb_chn5_s     cn52xx;
973         struct cvmx_usbnx_dma0_inb_chn5_s     cn52xxp1;
974         struct cvmx_usbnx_dma0_inb_chn5_s     cn56xx;
975         struct cvmx_usbnx_dma0_inb_chn5_s     cn56xxp1;
976 };
977 typedef union cvmx_usbnx_dma0_inb_chn5 cvmx_usbnx_dma0_inb_chn5_t;
978
979 /**
980  * cvmx_usbn#_dma0_inb_chn6
981  *
982  * USBN_DMA0_INB_CHN6 = USBN's Inbound DMA for USB0 Channel6
983  *
984  * Contains the starting address for use when USB0 writes to L2C via Channel6.
985  * Writing of this register sets the base address.
986  */
987 union cvmx_usbnx_dma0_inb_chn6
988 {
989         uint64_t u64;
990         struct cvmx_usbnx_dma0_inb_chn6_s
991         {
992 #if __BYTE_ORDER == __BIG_ENDIAN
993         uint64_t reserved_36_63               : 28;
994         uint64_t addr                         : 36; /**< Base address for DMA Write to L2C. */
995 #else
996         uint64_t addr                         : 36;
997         uint64_t reserved_36_63               : 28;
998 #endif
999         } s;
1000         struct cvmx_usbnx_dma0_inb_chn6_s     cn30xx;
1001         struct cvmx_usbnx_dma0_inb_chn6_s     cn31xx;
1002         struct cvmx_usbnx_dma0_inb_chn6_s     cn50xx;
1003         struct cvmx_usbnx_dma0_inb_chn6_s     cn52xx;
1004         struct cvmx_usbnx_dma0_inb_chn6_s     cn52xxp1;
1005         struct cvmx_usbnx_dma0_inb_chn6_s     cn56xx;
1006         struct cvmx_usbnx_dma0_inb_chn6_s     cn56xxp1;
1007 };
1008 typedef union cvmx_usbnx_dma0_inb_chn6 cvmx_usbnx_dma0_inb_chn6_t;
1009
1010 /**
1011  * cvmx_usbn#_dma0_inb_chn7
1012  *
1013  * USBN_DMA0_INB_CHN7 = USBN's Inbound DMA for USB0 Channel7
1014  *
1015  * Contains the starting address for use when USB0 writes to L2C via Channel7.
1016  * Writing of this register sets the base address.
1017  */
1018 union cvmx_usbnx_dma0_inb_chn7
1019 {
1020         uint64_t u64;
1021         struct cvmx_usbnx_dma0_inb_chn7_s
1022         {
1023 #if __BYTE_ORDER == __BIG_ENDIAN
1024         uint64_t reserved_36_63               : 28;
1025         uint64_t addr                         : 36; /**< Base address for DMA Write to L2C. */
1026 #else
1027         uint64_t addr                         : 36;
1028         uint64_t reserved_36_63               : 28;
1029 #endif
1030         } s;
1031         struct cvmx_usbnx_dma0_inb_chn7_s     cn30xx;
1032         struct cvmx_usbnx_dma0_inb_chn7_s     cn31xx;
1033         struct cvmx_usbnx_dma0_inb_chn7_s     cn50xx;
1034         struct cvmx_usbnx_dma0_inb_chn7_s     cn52xx;
1035         struct cvmx_usbnx_dma0_inb_chn7_s     cn52xxp1;
1036         struct cvmx_usbnx_dma0_inb_chn7_s     cn56xx;
1037         struct cvmx_usbnx_dma0_inb_chn7_s     cn56xxp1;
1038 };
1039 typedef union cvmx_usbnx_dma0_inb_chn7 cvmx_usbnx_dma0_inb_chn7_t;
1040
1041 /**
1042  * cvmx_usbn#_dma0_outb_chn0
1043  *
1044  * USBN_DMA0_OUTB_CHN0 = USBN's Outbound DMA for USB0 Channel0
1045  *
1046  * Contains the starting address for use when USB0 reads from L2C via Channel0.
1047  * Writing of this register sets the base address.
1048  */
1049 union cvmx_usbnx_dma0_outb_chn0
1050 {
1051         uint64_t u64;
1052         struct cvmx_usbnx_dma0_outb_chn0_s
1053         {
1054 #if __BYTE_ORDER == __BIG_ENDIAN
1055         uint64_t reserved_36_63               : 28;
1056         uint64_t addr                         : 36; /**< Base address for DMA Read from L2C. */
1057 #else
1058         uint64_t addr                         : 36;
1059         uint64_t reserved_36_63               : 28;
1060 #endif
1061         } s;
1062         struct cvmx_usbnx_dma0_outb_chn0_s    cn30xx;
1063         struct cvmx_usbnx_dma0_outb_chn0_s    cn31xx;
1064         struct cvmx_usbnx_dma0_outb_chn0_s    cn50xx;
1065         struct cvmx_usbnx_dma0_outb_chn0_s    cn52xx;
1066         struct cvmx_usbnx_dma0_outb_chn0_s    cn52xxp1;
1067         struct cvmx_usbnx_dma0_outb_chn0_s    cn56xx;
1068         struct cvmx_usbnx_dma0_outb_chn0_s    cn56xxp1;
1069 };
1070 typedef union cvmx_usbnx_dma0_outb_chn0 cvmx_usbnx_dma0_outb_chn0_t;
1071
1072 /**
1073  * cvmx_usbn#_dma0_outb_chn1
1074  *
1075  * USBN_DMA0_OUTB_CHN1 = USBN's Outbound DMA for USB0 Channel1
1076  *
1077  * Contains the starting address for use when USB0 reads from L2C via Channel1.
1078  * Writing of this register sets the base address.
1079  */
1080 union cvmx_usbnx_dma0_outb_chn1
1081 {
1082         uint64_t u64;
1083         struct cvmx_usbnx_dma0_outb_chn1_s
1084         {
1085 #if __BYTE_ORDER == __BIG_ENDIAN
1086         uint64_t reserved_36_63               : 28;
1087         uint64_t addr                         : 36; /**< Base address for DMA Read from L2C. */
1088 #else
1089         uint64_t addr                         : 36;
1090         uint64_t reserved_36_63               : 28;
1091 #endif
1092         } s;
1093         struct cvmx_usbnx_dma0_outb_chn1_s    cn30xx;
1094         struct cvmx_usbnx_dma0_outb_chn1_s    cn31xx;
1095         struct cvmx_usbnx_dma0_outb_chn1_s    cn50xx;
1096         struct cvmx_usbnx_dma0_outb_chn1_s    cn52xx;
1097         struct cvmx_usbnx_dma0_outb_chn1_s    cn52xxp1;
1098         struct cvmx_usbnx_dma0_outb_chn1_s    cn56xx;
1099         struct cvmx_usbnx_dma0_outb_chn1_s    cn56xxp1;
1100 };
1101 typedef union cvmx_usbnx_dma0_outb_chn1 cvmx_usbnx_dma0_outb_chn1_t;
1102
1103 /**
1104  * cvmx_usbn#_dma0_outb_chn2
1105  *
1106  * USBN_DMA0_OUTB_CHN2 = USBN's Outbound DMA for USB0 Channel2
1107  *
1108  * Contains the starting address for use when USB0 reads from L2C via Channel2.
1109  * Writing of this register sets the base address.
1110  */
1111 union cvmx_usbnx_dma0_outb_chn2
1112 {
1113         uint64_t u64;
1114         struct cvmx_usbnx_dma0_outb_chn2_s
1115         {
1116 #if __BYTE_ORDER == __BIG_ENDIAN
1117         uint64_t reserved_36_63               : 28;
1118         uint64_t addr                         : 36; /**< Base address for DMA Read from L2C. */
1119 #else
1120         uint64_t addr                         : 36;
1121         uint64_t reserved_36_63               : 28;
1122 #endif
1123         } s;
1124         struct cvmx_usbnx_dma0_outb_chn2_s    cn30xx;
1125         struct cvmx_usbnx_dma0_outb_chn2_s    cn31xx;
1126         struct cvmx_usbnx_dma0_outb_chn2_s    cn50xx;
1127         struct cvmx_usbnx_dma0_outb_chn2_s    cn52xx;
1128         struct cvmx_usbnx_dma0_outb_chn2_s    cn52xxp1;
1129         struct cvmx_usbnx_dma0_outb_chn2_s    cn56xx;
1130         struct cvmx_usbnx_dma0_outb_chn2_s    cn56xxp1;
1131 };
1132 typedef union cvmx_usbnx_dma0_outb_chn2 cvmx_usbnx_dma0_outb_chn2_t;
1133
1134 /**
1135  * cvmx_usbn#_dma0_outb_chn3
1136  *
1137  * USBN_DMA0_OUTB_CHN3 = USBN's Outbound DMA for USB0 Channel3
1138  *
1139  * Contains the starting address for use when USB0 reads from L2C via Channel3.
1140  * Writing of this register sets the base address.
1141  */
1142 union cvmx_usbnx_dma0_outb_chn3
1143 {
1144         uint64_t u64;
1145         struct cvmx_usbnx_dma0_outb_chn3_s
1146         {
1147 #if __BYTE_ORDER == __BIG_ENDIAN
1148         uint64_t reserved_36_63               : 28;
1149         uint64_t addr                         : 36; /**< Base address for DMA Read from L2C. */
1150 #else
1151         uint64_t addr                         : 36;
1152         uint64_t reserved_36_63               : 28;
1153 #endif
1154         } s;
1155         struct cvmx_usbnx_dma0_outb_chn3_s    cn30xx;
1156         struct cvmx_usbnx_dma0_outb_chn3_s    cn31xx;
1157         struct cvmx_usbnx_dma0_outb_chn3_s    cn50xx;
1158         struct cvmx_usbnx_dma0_outb_chn3_s    cn52xx;
1159         struct cvmx_usbnx_dma0_outb_chn3_s    cn52xxp1;
1160         struct cvmx_usbnx_dma0_outb_chn3_s    cn56xx;
1161         struct cvmx_usbnx_dma0_outb_chn3_s    cn56xxp1;
1162 };
1163 typedef union cvmx_usbnx_dma0_outb_chn3 cvmx_usbnx_dma0_outb_chn3_t;
1164
1165 /**
1166  * cvmx_usbn#_dma0_outb_chn4
1167  *
1168  * USBN_DMA0_OUTB_CHN4 = USBN's Outbound DMA for USB0 Channel4
1169  *
1170  * Contains the starting address for use when USB0 reads from L2C via Channel4.
1171  * Writing of this register sets the base address.
1172  */
1173 union cvmx_usbnx_dma0_outb_chn4
1174 {
1175         uint64_t u64;
1176         struct cvmx_usbnx_dma0_outb_chn4_s
1177         {
1178 #if __BYTE_ORDER == __BIG_ENDIAN
1179         uint64_t reserved_36_63               : 28;
1180         uint64_t addr                         : 36; /**< Base address for DMA Read from L2C. */
1181 #else
1182         uint64_t addr                         : 36;
1183         uint64_t reserved_36_63               : 28;
1184 #endif
1185         } s;
1186         struct cvmx_usbnx_dma0_outb_chn4_s    cn30xx;
1187         struct cvmx_usbnx_dma0_outb_chn4_s    cn31xx;
1188         struct cvmx_usbnx_dma0_outb_chn4_s    cn50xx;
1189         struct cvmx_usbnx_dma0_outb_chn4_s    cn52xx;
1190         struct cvmx_usbnx_dma0_outb_chn4_s    cn52xxp1;
1191         struct cvmx_usbnx_dma0_outb_chn4_s    cn56xx;
1192         struct cvmx_usbnx_dma0_outb_chn4_s    cn56xxp1;
1193 };
1194 typedef union cvmx_usbnx_dma0_outb_chn4 cvmx_usbnx_dma0_outb_chn4_t;
1195
1196 /**
1197  * cvmx_usbn#_dma0_outb_chn5
1198  *
1199  * USBN_DMA0_OUTB_CHN5 = USBN's Outbound DMA for USB0 Channel5
1200  *
1201  * Contains the starting address for use when USB0 reads from L2C via Channel5.
1202  * Writing of this register sets the base address.
1203  */
1204 union cvmx_usbnx_dma0_outb_chn5
1205 {
1206         uint64_t u64;
1207         struct cvmx_usbnx_dma0_outb_chn5_s
1208         {
1209 #if __BYTE_ORDER == __BIG_ENDIAN
1210         uint64_t reserved_36_63               : 28;
1211         uint64_t addr                         : 36; /**< Base address for DMA Read from L2C. */
1212 #else
1213         uint64_t addr                         : 36;
1214         uint64_t reserved_36_63               : 28;
1215 #endif
1216         } s;
1217         struct cvmx_usbnx_dma0_outb_chn5_s    cn30xx;
1218         struct cvmx_usbnx_dma0_outb_chn5_s    cn31xx;
1219         struct cvmx_usbnx_dma0_outb_chn5_s    cn50xx;
1220         struct cvmx_usbnx_dma0_outb_chn5_s    cn52xx;
1221         struct cvmx_usbnx_dma0_outb_chn5_s    cn52xxp1;
1222         struct cvmx_usbnx_dma0_outb_chn5_s    cn56xx;
1223         struct cvmx_usbnx_dma0_outb_chn5_s    cn56xxp1;
1224 };
1225 typedef union cvmx_usbnx_dma0_outb_chn5 cvmx_usbnx_dma0_outb_chn5_t;
1226
1227 /**
1228  * cvmx_usbn#_dma0_outb_chn6
1229  *
1230  * USBN_DMA0_OUTB_CHN6 = USBN's Outbound DMA for USB0 Channel6
1231  *
1232  * Contains the starting address for use when USB0 reads from L2C via Channel6.
1233  * Writing of this register sets the base address.
1234  */
1235 union cvmx_usbnx_dma0_outb_chn6
1236 {
1237         uint64_t u64;
1238         struct cvmx_usbnx_dma0_outb_chn6_s
1239         {
1240 #if __BYTE_ORDER == __BIG_ENDIAN
1241         uint64_t reserved_36_63               : 28;
1242         uint64_t addr                         : 36; /**< Base address for DMA Read from L2C. */
1243 #else
1244         uint64_t addr                         : 36;
1245         uint64_t reserved_36_63               : 28;
1246 #endif
1247         } s;
1248         struct cvmx_usbnx_dma0_outb_chn6_s    cn30xx;
1249         struct cvmx_usbnx_dma0_outb_chn6_s    cn31xx;
1250         struct cvmx_usbnx_dma0_outb_chn6_s    cn50xx;
1251         struct cvmx_usbnx_dma0_outb_chn6_s    cn52xx;
1252         struct cvmx_usbnx_dma0_outb_chn6_s    cn52xxp1;
1253         struct cvmx_usbnx_dma0_outb_chn6_s    cn56xx;
1254         struct cvmx_usbnx_dma0_outb_chn6_s    cn56xxp1;
1255 };
1256 typedef union cvmx_usbnx_dma0_outb_chn6 cvmx_usbnx_dma0_outb_chn6_t;
1257
1258 /**
1259  * cvmx_usbn#_dma0_outb_chn7
1260  *
1261  * USBN_DMA0_OUTB_CHN7 = USBN's Outbound DMA for USB0 Channel7
1262  *
1263  * Contains the starting address for use when USB0 reads from L2C via Channel7.
1264  * Writing of this register sets the base address.
1265  */
1266 union cvmx_usbnx_dma0_outb_chn7
1267 {
1268         uint64_t u64;
1269         struct cvmx_usbnx_dma0_outb_chn7_s
1270         {
1271 #if __BYTE_ORDER == __BIG_ENDIAN
1272         uint64_t reserved_36_63               : 28;
1273         uint64_t addr                         : 36; /**< Base address for DMA Read from L2C. */
1274 #else
1275         uint64_t addr                         : 36;
1276         uint64_t reserved_36_63               : 28;
1277 #endif
1278         } s;
1279         struct cvmx_usbnx_dma0_outb_chn7_s    cn30xx;
1280         struct cvmx_usbnx_dma0_outb_chn7_s    cn31xx;
1281         struct cvmx_usbnx_dma0_outb_chn7_s    cn50xx;
1282         struct cvmx_usbnx_dma0_outb_chn7_s    cn52xx;
1283         struct cvmx_usbnx_dma0_outb_chn7_s    cn52xxp1;
1284         struct cvmx_usbnx_dma0_outb_chn7_s    cn56xx;
1285         struct cvmx_usbnx_dma0_outb_chn7_s    cn56xxp1;
1286 };
1287 typedef union cvmx_usbnx_dma0_outb_chn7 cvmx_usbnx_dma0_outb_chn7_t;
1288
1289 /**
1290  * cvmx_usbn#_dma_test
1291  *
1292  * USBN_DMA_TEST = USBN's DMA TestRegister
1293  *
1294  * This register can cause the external DMA engine to the USB-Core to make transfers from/to L2C/USB-FIFOs
1295  */
1296 union cvmx_usbnx_dma_test
1297 {
1298         uint64_t u64;
1299         struct cvmx_usbnx_dma_test_s
1300         {
1301 #if __BYTE_ORDER == __BIG_ENDIAN
1302         uint64_t reserved_40_63               : 24;
1303         uint64_t done                         : 1;  /**< This field is set when a DMA completes. Writing a
1304                                                          '1' to this field clears this bit. */
1305         uint64_t req                          : 1;  /**< DMA Request. Writing a 1 to this register
1306                                                          will cause a DMA request as specified in the other
1307                                                          fields of this register to take place. This field
1308                                                          will always read as '0'. */
1309         uint64_t f_addr                       : 18; /**< The address to read from in the Data-Fifo. */
1310         uint64_t count                        : 11; /**< DMA Request Count. */
1311         uint64_t channel                      : 5;  /**< DMA Channel/Enpoint. */
1312         uint64_t burst                        : 4;  /**< DMA Burst Size. */
1313 #else
1314         uint64_t burst                        : 4;
1315         uint64_t channel                      : 5;
1316         uint64_t count                        : 11;
1317         uint64_t f_addr                       : 18;
1318         uint64_t req                          : 1;
1319         uint64_t done                         : 1;
1320         uint64_t reserved_40_63               : 24;
1321 #endif
1322         } s;
1323         struct cvmx_usbnx_dma_test_s          cn30xx;
1324         struct cvmx_usbnx_dma_test_s          cn31xx;
1325         struct cvmx_usbnx_dma_test_s          cn50xx;
1326         struct cvmx_usbnx_dma_test_s          cn52xx;
1327         struct cvmx_usbnx_dma_test_s          cn52xxp1;
1328         struct cvmx_usbnx_dma_test_s          cn56xx;
1329         struct cvmx_usbnx_dma_test_s          cn56xxp1;
1330 };
1331 typedef union cvmx_usbnx_dma_test cvmx_usbnx_dma_test_t;
1332
1333 /**
1334  * cvmx_usbn#_int_enb
1335  *
1336  * USBN_INT_ENB = USBN's Interrupt Enable
1337  *
1338  * The USBN's interrupt enable register.
1339  */
1340 union cvmx_usbnx_int_enb
1341 {
1342         uint64_t u64;
1343         struct cvmx_usbnx_int_enb_s
1344         {
1345 #if __BYTE_ORDER == __BIG_ENDIAN
1346         uint64_t reserved_38_63               : 26;
1347         uint64_t nd4o_dpf                     : 1;  /**< When set (1) and bit 37 of the USBN_INT_SUM
1348                                                          register is asserted the USBN will assert an
1349                                                          interrupt. */
1350         uint64_t nd4o_dpe                     : 1;  /**< When set (1) and bit 36 of the USBN_INT_SUM
1351                                                          register is asserted the USBN will assert an
1352                                                          interrupt. */
1353         uint64_t nd4o_rpf                     : 1;  /**< When set (1) and bit 35 of the USBN_INT_SUM
1354                                                          register is asserted the USBN will assert an
1355                                                          interrupt. */
1356         uint64_t nd4o_rpe                     : 1;  /**< When set (1) and bit 34 of the USBN_INT_SUM
1357                                                          register is asserted the USBN will assert an
1358                                                          interrupt. */
1359         uint64_t ltl_f_pf                     : 1;  /**< When set (1) and bit 33 of the USBN_INT_SUM
1360                                                          register is asserted the USBN will assert an
1361                                                          interrupt. */
1362         uint64_t ltl_f_pe                     : 1;  /**< When set (1) and bit 32 of the USBN_INT_SUM
1363                                                          register is asserted the USBN will assert an
1364                                                          interrupt. */
1365         uint64_t u2n_c_pe                     : 1;  /**< When set (1) and bit 31 of the USBN_INT_SUM
1366                                                          register is asserted the USBN will assert an
1367                                                          interrupt. */
1368         uint64_t u2n_c_pf                     : 1;  /**< When set (1) and bit 30 of the USBN_INT_SUM
1369                                                          register is asserted the USBN will assert an
1370                                                          interrupt. */
1371         uint64_t u2n_d_pf                     : 1;  /**< When set (1) and bit 29 of the USBN_INT_SUM
1372                                                          register is asserted the USBN will assert an
1373                                                          interrupt. */
1374         uint64_t u2n_d_pe                     : 1;  /**< When set (1) and bit 28 of the USBN_INT_SUM
1375                                                          register is asserted the USBN will assert an
1376                                                          interrupt. */
1377         uint64_t n2u_pe                       : 1;  /**< When set (1) and bit 27 of the USBN_INT_SUM
1378                                                          register is asserted the USBN will assert an
1379                                                          interrupt. */
1380         uint64_t n2u_pf                       : 1;  /**< When set (1) and bit 26 of the USBN_INT_SUM
1381                                                          register is asserted the USBN will assert an
1382                                                          interrupt. */
1383         uint64_t uod_pf                       : 1;  /**< When set (1) and bit 25 of the USBN_INT_SUM
1384                                                          register is asserted the USBN will assert an
1385                                                          interrupt. */
1386         uint64_t uod_pe                       : 1;  /**< When set (1) and bit 24 of the USBN_INT_SUM
1387                                                          register is asserted the USBN will assert an
1388                                                          interrupt. */
1389         uint64_t rq_q3_e                      : 1;  /**< When set (1) and bit 23 of the USBN_INT_SUM
1390                                                          register is asserted the USBN will assert an
1391                                                          interrupt. */
1392         uint64_t rq_q3_f                      : 1;  /**< When set (1) and bit 22 of the USBN_INT_SUM
1393                                                          register is asserted the USBN will assert an
1394                                                          interrupt. */
1395         uint64_t rq_q2_e                      : 1;  /**< When set (1) and bit 21 of the USBN_INT_SUM
1396                                                          register is asserted the USBN will assert an
1397                                                          interrupt. */
1398         uint64_t rq_q2_f                      : 1;  /**< When set (1) and bit 20 of the USBN_INT_SUM
1399                                                          register is asserted the USBN will assert an
1400                                                          interrupt. */
1401         uint64_t rg_fi_f                      : 1;  /**< When set (1) and bit 19 of the USBN_INT_SUM
1402                                                          register is asserted the USBN will assert an
1403                                                          interrupt. */
1404         uint64_t rg_fi_e                      : 1;  /**< When set (1) and bit 18 of the USBN_INT_SUM
1405                                                          register is asserted the USBN will assert an
1406                                                          interrupt. */
1407         uint64_t l2_fi_f                      : 1;  /**< When set (1) and bit 17 of the USBN_INT_SUM
1408                                                          register is asserted the USBN will assert an
1409                                                          interrupt. */
1410         uint64_t l2_fi_e                      : 1;  /**< When set (1) and bit 16 of the USBN_INT_SUM
1411                                                          register is asserted the USBN will assert an
1412                                                          interrupt. */
1413         uint64_t l2c_a_f                      : 1;  /**< When set (1) and bit 15 of the USBN_INT_SUM
1414                                                          register is asserted the USBN will assert an
1415                                                          interrupt. */
1416         uint64_t l2c_s_e                      : 1;  /**< When set (1) and bit 14 of the USBN_INT_SUM
1417                                                          register is asserted the USBN will assert an
1418                                                          interrupt. */
1419         uint64_t dcred_f                      : 1;  /**< When set (1) and bit 13 of the USBN_INT_SUM
1420                                                          register is asserted the USBN will assert an
1421                                                          interrupt. */
1422         uint64_t dcred_e                      : 1;  /**< When set (1) and bit 12 of the USBN_INT_SUM
1423                                                          register is asserted the USBN will assert an
1424                                                          interrupt. */
1425         uint64_t lt_pu_f                      : 1;  /**< When set (1) and bit 11 of the USBN_INT_SUM
1426                                                          register is asserted the USBN will assert an
1427                                                          interrupt. */
1428         uint64_t lt_po_e                      : 1;  /**< When set (1) and bit 10 of the USBN_INT_SUM
1429                                                          register is asserted the USBN will assert an
1430                                                          interrupt. */
1431         uint64_t nt_pu_f                      : 1;  /**< When set (1) and bit 9 of the USBN_INT_SUM
1432                                                          register is asserted the USBN will assert an
1433                                                          interrupt. */
1434         uint64_t nt_po_e                      : 1;  /**< When set (1) and bit 8 of the USBN_INT_SUM
1435                                                          register is asserted the USBN will assert an
1436                                                          interrupt. */
1437         uint64_t pt_pu_f                      : 1;  /**< When set (1) and bit 7 of the USBN_INT_SUM
1438                                                          register is asserted the USBN will assert an
1439                                                          interrupt. */
1440         uint64_t pt_po_e                      : 1;  /**< When set (1) and bit 6 of the USBN_INT_SUM
1441                                                          register is asserted the USBN will assert an
1442                                                          interrupt. */
1443         uint64_t lr_pu_f                      : 1;  /**< When set (1) and bit 5 of the USBN_INT_SUM
1444                                                          register is asserted the USBN will assert an
1445                                                          interrupt. */
1446         uint64_t lr_po_e                      : 1;  /**< When set (1) and bit 4 of the USBN_INT_SUM
1447                                                          register is asserted the USBN will assert an
1448                                                          interrupt. */
1449         uint64_t nr_pu_f                      : 1;  /**< When set (1) and bit 3 of the USBN_INT_SUM
1450                                                          register is asserted the USBN will assert an
1451                                                          interrupt. */
1452         uint64_t nr_po_e                      : 1;  /**< When set (1) and bit 2 of the USBN_INT_SUM
1453                                                          register is asserted the USBN will assert an
1454                                                          interrupt. */
1455         uint64_t pr_pu_f                      : 1;  /**< When set (1) and bit 1 of the USBN_INT_SUM
1456                                                          register is asserted the USBN will assert an
1457                                                          interrupt. */
1458         uint64_t pr_po_e                      : 1;  /**< When set (1) and bit 0 of the USBN_INT_SUM
1459                                                          register is asserted the USBN will assert an
1460                                                          interrupt. */
1461 #else
1462         uint64_t pr_po_e                      : 1;
1463         uint64_t pr_pu_f                      : 1;
1464         uint64_t nr_po_e                      : 1;
1465         uint64_t nr_pu_f                      : 1;
1466         uint64_t lr_po_e                      : 1;
1467         uint64_t lr_pu_f                      : 1;
1468         uint64_t pt_po_e                      : 1;
1469         uint64_t pt_pu_f                      : 1;
1470         uint64_t nt_po_e                      : 1;
1471         uint64_t nt_pu_f                      : 1;
1472         uint64_t lt_po_e                      : 1;
1473         uint64_t lt_pu_f                      : 1;
1474         uint64_t dcred_e                      : 1;
1475         uint64_t dcred_f                      : 1;
1476         uint64_t l2c_s_e                      : 1;
1477         uint64_t l2c_a_f                      : 1;
1478         uint64_t l2_fi_e                      : 1;
1479         uint64_t l2_fi_f                      : 1;
1480         uint64_t rg_fi_e                      : 1;
1481         uint64_t rg_fi_f                      : 1;
1482         uint64_t rq_q2_f                      : 1;
1483         uint64_t rq_q2_e                      : 1;
1484         uint64_t rq_q3_f                      : 1;
1485         uint64_t rq_q3_e                      : 1;
1486         uint64_t uod_pe                       : 1;
1487         uint64_t uod_pf                       : 1;
1488         uint64_t n2u_pf                       : 1;
1489         uint64_t n2u_pe                       : 1;
1490         uint64_t u2n_d_pe                     : 1;
1491         uint64_t u2n_d_pf                     : 1;
1492         uint64_t u2n_c_pf                     : 1;
1493         uint64_t u2n_c_pe                     : 1;
1494         uint64_t ltl_f_pe                     : 1;
1495         uint64_t ltl_f_pf                     : 1;
1496         uint64_t nd4o_rpe                     : 1;
1497         uint64_t nd4o_rpf                     : 1;
1498         uint64_t nd4o_dpe                     : 1;
1499         uint64_t nd4o_dpf                     : 1;
1500         uint64_t reserved_38_63               : 26;
1501 #endif
1502         } s;
1503         struct cvmx_usbnx_int_enb_s           cn30xx;
1504         struct cvmx_usbnx_int_enb_s           cn31xx;
1505         struct cvmx_usbnx_int_enb_cn50xx
1506         {
1507 #if __BYTE_ORDER == __BIG_ENDIAN
1508         uint64_t reserved_38_63               : 26;
1509         uint64_t nd4o_dpf                     : 1;  /**< When set (1) and bit 37 of the USBN_INT_SUM
1510                                                          register is asserted the USBN will assert an
1511                                                          interrupt. */
1512         uint64_t nd4o_dpe                     : 1;  /**< When set (1) and bit 36 of the USBN_INT_SUM
1513                                                          register is asserted the USBN will assert an
1514                                                          interrupt. */
1515         uint64_t nd4o_rpf                     : 1;  /**< When set (1) and bit 35 of the USBN_INT_SUM
1516                                                          register is asserted the USBN will assert an
1517                                                          interrupt. */
1518         uint64_t nd4o_rpe                     : 1;  /**< When set (1) and bit 34 of the USBN_INT_SUM
1519                                                          register is asserted the USBN will assert an
1520                                                          interrupt. */
1521         uint64_t ltl_f_pf                     : 1;  /**< When set (1) and bit 33 of the USBN_INT_SUM
1522                                                          register is asserted the USBN will assert an
1523                                                          interrupt. */
1524         uint64_t ltl_f_pe                     : 1;  /**< When set (1) and bit 32 of the USBN_INT_SUM
1525                                                          register is asserted the USBN will assert an
1526                                                          interrupt. */
1527         uint64_t reserved_26_31               : 6;
1528         uint64_t uod_pf                       : 1;  /**< When set (1) and bit 25 of the USBN_INT_SUM
1529                                                          register is asserted the USBN will assert an
1530                                                          interrupt. */
1531         uint64_t uod_pe                       : 1;  /**< When set (1) and bit 24 of the USBN_INT_SUM
1532                                                          register is asserted the USBN will assert an
1533                                                          interrupt. */
1534         uint64_t rq_q3_e                      : 1;  /**< When set (1) and bit 23 of the USBN_INT_SUM
1535                                                          register is asserted the USBN will assert an
1536                                                          interrupt. */
1537         uint64_t rq_q3_f                      : 1;  /**< When set (1) and bit 22 of the USBN_INT_SUM
1538                                                          register is asserted the USBN will assert an
1539                                                          interrupt. */
1540         uint64_t rq_q2_e                      : 1;  /**< When set (1) and bit 21 of the USBN_INT_SUM
1541                                                          register is asserted the USBN will assert an
1542                                                          interrupt. */
1543         uint64_t rq_q2_f                      : 1;  /**< When set (1) and bit 20 of the USBN_INT_SUM
1544                                                          register is asserted the USBN will assert an
1545                                                          interrupt. */
1546         uint64_t rg_fi_f                      : 1;  /**< When set (1) and bit 19 of the USBN_INT_SUM
1547                                                          register is asserted the USBN will assert an
1548                                                          interrupt. */
1549         uint64_t rg_fi_e                      : 1;  /**< When set (1) and bit 18 of the USBN_INT_SUM
1550                                                          register is asserted the USBN will assert an
1551                                                          interrupt. */
1552         uint64_t l2_fi_f                      : 1;  /**< When set (1) and bit 17 of the USBN_INT_SUM
1553                                                          register is asserted the USBN will assert an
1554                                                          interrupt. */
1555         uint64_t l2_fi_e                      : 1;  /**< When set (1) and bit 16 of the USBN_INT_SUM
1556                                                          register is asserted the USBN will assert an
1557                                                          interrupt. */
1558         uint64_t l2c_a_f                      : 1;  /**< When set (1) and bit 15 of the USBN_INT_SUM
1559                                                          register is asserted the USBN will assert an
1560                                                          interrupt. */
1561         uint64_t l2c_s_e                      : 1;  /**< When set (1) and bit 14 of the USBN_INT_SUM
1562                                                          register is asserted the USBN will assert an
1563                                                          interrupt. */
1564         uint64_t dcred_f                      : 1;  /**< When set (1) and bit 13 of the USBN_INT_SUM
1565                                                          register is asserted the USBN will assert an
1566                                                          interrupt. */
1567         uint64_t dcred_e                      : 1;  /**< When set (1) and bit 12 of the USBN_INT_SUM
1568                                                          register is asserted the USBN will assert an
1569                                                          interrupt. */
1570         uint64_t lt_pu_f                      : 1;  /**< When set (1) and bit 11 of the USBN_INT_SUM
1571                                                          register is asserted the USBN will assert an
1572                                                          interrupt. */
1573         uint64_t lt_po_e                      : 1;  /**< When set (1) and bit 10 of the USBN_INT_SUM
1574                                                          register is asserted the USBN will assert an
1575                                                          interrupt. */
1576         uint64_t nt_pu_f                      : 1;  /**< When set (1) and bit 9 of the USBN_INT_SUM
1577                                                          register is asserted the USBN will assert an
1578                                                          interrupt. */
1579         uint64_t nt_po_e                      : 1;  /**< When set (1) and bit 8 of the USBN_INT_SUM
1580                                                          register is asserted the USBN will assert an
1581                                                          interrupt. */
1582         uint64_t pt_pu_f                      : 1;  /**< When set (1) and bit 7 of the USBN_INT_SUM
1583                                                          register is asserted the USBN will assert an
1584                                                          interrupt. */
1585         uint64_t pt_po_e                      : 1;  /**< When set (1) and bit 6 of the USBN_INT_SUM
1586                                                          register is asserted the USBN will assert an
1587                                                          interrupt. */
1588         uint64_t lr_pu_f                      : 1;  /**< When set (1) and bit 5 of the USBN_INT_SUM
1589                                                          register is asserted the USBN will assert an
1590                                                          interrupt. */
1591         uint64_t lr_po_e                      : 1;  /**< When set (1) and bit 4 of the USBN_INT_SUM
1592                                                          register is asserted the USBN will assert an
1593                                                          interrupt. */
1594         uint64_t nr_pu_f                      : 1;  /**< When set (1) and bit 3 of the USBN_INT_SUM
1595                                                          register is asserted the USBN will assert an
1596                                                          interrupt. */
1597         uint64_t nr_po_e                      : 1;  /**< When set (1) and bit 2 of the USBN_INT_SUM
1598                                                          register is asserted the USBN will assert an
1599                                                          interrupt. */
1600         uint64_t pr_pu_f                      : 1;  /**< When set (1) and bit 1 of the USBN_INT_SUM
1601                                                          register is asserted the USBN will assert an
1602                                                          interrupt. */
1603         uint64_t pr_po_e                      : 1;  /**< When set (1) and bit 0 of the USBN_INT_SUM
1604                                                          register is asserted the USBN will assert an
1605                                                          interrupt. */
1606 #else
1607         uint64_t pr_po_e                      : 1;
1608         uint64_t pr_pu_f                      : 1;
1609         uint64_t nr_po_e                      : 1;
1610         uint64_t nr_pu_f                      : 1;
1611         uint64_t lr_po_e                      : 1;
1612         uint64_t lr_pu_f                      : 1;
1613         uint64_t pt_po_e                      : 1;
1614         uint64_t pt_pu_f                      : 1;
1615         uint64_t nt_po_e                      : 1;
1616         uint64_t nt_pu_f                      : 1;
1617         uint64_t lt_po_e                      : 1;
1618         uint64_t lt_pu_f                      : 1;
1619         uint64_t dcred_e                      : 1;
1620         uint64_t dcred_f                      : 1;
1621         uint64_t l2c_s_e                      : 1;
1622         uint64_t l2c_a_f                      : 1;
1623         uint64_t l2_fi_e                      : 1;
1624         uint64_t l2_fi_f                      : 1;
1625         uint64_t rg_fi_e                      : 1;
1626         uint64_t rg_fi_f                      : 1;
1627         uint64_t rq_q2_f                      : 1;
1628         uint64_t rq_q2_e                      : 1;
1629         uint64_t rq_q3_f                      : 1;
1630         uint64_t rq_q3_e                      : 1;
1631         uint64_t uod_pe                       : 1;
1632         uint64_t uod_pf                       : 1;
1633         uint64_t reserved_26_31               : 6;
1634         uint64_t ltl_f_pe                     : 1;
1635         uint64_t ltl_f_pf                     : 1;
1636         uint64_t nd4o_rpe                     : 1;
1637         uint64_t nd4o_rpf                     : 1;
1638         uint64_t nd4o_dpe                     : 1;
1639         uint64_t nd4o_dpf                     : 1;
1640         uint64_t reserved_38_63               : 26;
1641 #endif
1642         } cn50xx;
1643         struct cvmx_usbnx_int_enb_cn50xx      cn52xx;
1644         struct cvmx_usbnx_int_enb_cn50xx      cn52xxp1;
1645         struct cvmx_usbnx_int_enb_cn50xx      cn56xx;
1646         struct cvmx_usbnx_int_enb_cn50xx      cn56xxp1;
1647 };
1648 typedef union cvmx_usbnx_int_enb cvmx_usbnx_int_enb_t;
1649
1650 /**
1651  * cvmx_usbn#_int_sum
1652  *
1653  * USBN_INT_SUM = USBN's Interrupt Summary Register
1654  *
1655  * Contains the diffrent interrupt summary bits of the USBN.
1656  */
1657 union cvmx_usbnx_int_sum
1658 {
1659         uint64_t u64;
1660         struct cvmx_usbnx_int_sum_s
1661         {
1662 #if __BYTE_ORDER == __BIG_ENDIAN
1663         uint64_t reserved_38_63               : 26;
1664         uint64_t nd4o_dpf                     : 1;  /**< NCB DMA Out Data Fifo Push Full. */
1665         uint64_t nd4o_dpe                     : 1;  /**< NCB DMA Out Data Fifo Pop Empty. */
1666         uint64_t nd4o_rpf                     : 1;  /**< NCB DMA Out Request Fifo Push Full. */
1667         uint64_t nd4o_rpe                     : 1;  /**< NCB DMA Out Request Fifo Pop Empty. */
1668         uint64_t ltl_f_pf                     : 1;  /**< L2C Transfer Length Fifo Push Full. */
1669         uint64_t ltl_f_pe                     : 1;  /**< L2C Transfer Length Fifo Pop Empty. */
1670         uint64_t u2n_c_pe                     : 1;  /**< U2N Control Fifo Pop Empty. */
1671         uint64_t u2n_c_pf                     : 1;  /**< U2N Control Fifo Push Full. */
1672         uint64_t u2n_d_pf                     : 1;  /**< U2N Data Fifo Push Full. */
1673         uint64_t u2n_d_pe                     : 1;  /**< U2N Data Fifo Pop Empty. */
1674         uint64_t n2u_pe                       : 1;  /**< N2U Fifo Pop Empty. */
1675         uint64_t n2u_pf                       : 1;  /**< N2U Fifo Push Full. */
1676         uint64_t uod_pf                       : 1;  /**< UOD Fifo Push Full. */
1677         uint64_t uod_pe                       : 1;  /**< UOD Fifo Pop Empty. */
1678         uint64_t rq_q3_e                      : 1;  /**< Request Queue-3 Fifo Pushed When Full. */
1679         uint64_t rq_q3_f                      : 1;  /**< Request Queue-3 Fifo Pushed When Full. */
1680         uint64_t rq_q2_e                      : 1;  /**< Request Queue-2 Fifo Pushed When Full. */
1681         uint64_t rq_q2_f                      : 1;  /**< Request Queue-2 Fifo Pushed When Full. */
1682         uint64_t rg_fi_f                      : 1;  /**< Register Request Fifo Pushed When Full. */
1683         uint64_t rg_fi_e                      : 1;  /**< Register Request Fifo Pushed When Full. */
1684         uint64_t lt_fi_f                      : 1;  /**< L2C Request Fifo Pushed When Full. */
1685         uint64_t lt_fi_e                      : 1;  /**< L2C Request Fifo Pushed When Full. */
1686         uint64_t l2c_a_f                      : 1;  /**< L2C Credit Count Added When Full. */
1687         uint64_t l2c_s_e                      : 1;  /**< L2C Credit Count Subtracted When Empty. */
1688         uint64_t dcred_f                      : 1;  /**< Data CreditFifo Pushed When Full. */
1689         uint64_t dcred_e                      : 1;  /**< Data Credit Fifo Pushed When Full. */
1690         uint64_t lt_pu_f                      : 1;  /**< L2C Trasaction Fifo Pushed When Full. */
1691         uint64_t lt_po_e                      : 1;  /**< L2C Trasaction Fifo Popped When Full. */
1692         uint64_t nt_pu_f                      : 1;  /**< NPI Trasaction Fifo Pushed When Full. */
1693         uint64_t nt_po_e                      : 1;  /**< NPI Trasaction Fifo Popped When Full. */
1694         uint64_t pt_pu_f                      : 1;  /**< PP  Trasaction Fifo Pushed When Full. */
1695         uint64_t pt_po_e                      : 1;  /**< PP  Trasaction Fifo Popped When Full. */
1696         uint64_t lr_pu_f                      : 1;  /**< L2C Request Fifo Pushed When Full. */
1697         uint64_t lr_po_e                      : 1;  /**< L2C Request Fifo Popped When Empty. */
1698         uint64_t nr_pu_f                      : 1;  /**< NPI Request Fifo Pushed When Full. */
1699         uint64_t nr_po_e                      : 1;  /**< NPI Request Fifo Popped When Empty. */
1700         uint64_t pr_pu_f                      : 1;  /**< PP  Request Fifo Pushed When Full. */
1701         uint64_t pr_po_e                      : 1;  /**< PP  Request Fifo Popped When Empty. */
1702 #else
1703         uint64_t pr_po_e                      : 1;
1704         uint64_t pr_pu_f                      : 1;
1705         uint64_t nr_po_e                      : 1;
1706         uint64_t nr_pu_f                      : 1;
1707         uint64_t lr_po_e                      : 1;
1708         uint64_t lr_pu_f                      : 1;
1709         uint64_t pt_po_e                      : 1;
1710         uint64_t pt_pu_f                      : 1;
1711         uint64_t nt_po_e                      : 1;
1712         uint64_t nt_pu_f                      : 1;
1713         uint64_t lt_po_e                      : 1;
1714         uint64_t lt_pu_f                      : 1;
1715         uint64_t dcred_e                      : 1;
1716         uint64_t dcred_f                      : 1;
1717         uint64_t l2c_s_e                      : 1;
1718         uint64_t l2c_a_f                      : 1;
1719         uint64_t lt_fi_e                      : 1;
1720         uint64_t lt_fi_f                      : 1;
1721         uint64_t rg_fi_e                      : 1;
1722         uint64_t rg_fi_f                      : 1;
1723         uint64_t rq_q2_f                      : 1;
1724         uint64_t rq_q2_e                      : 1;
1725         uint64_t rq_q3_f                      : 1;
1726         uint64_t rq_q3_e                      : 1;
1727         uint64_t uod_pe                       : 1;
1728         uint64_t uod_pf                       : 1;
1729         uint64_t n2u_pf                       : 1;
1730         uint64_t n2u_pe                       : 1;
1731         uint64_t u2n_d_pe                     : 1;
1732         uint64_t u2n_d_pf                     : 1;
1733         uint64_t u2n_c_pf                     : 1;
1734         uint64_t u2n_c_pe                     : 1;
1735         uint64_t ltl_f_pe                     : 1;
1736         uint64_t ltl_f_pf                     : 1;
1737         uint64_t nd4o_rpe                     : 1;
1738         uint64_t nd4o_rpf                     : 1;
1739         uint64_t nd4o_dpe                     : 1;
1740         uint64_t nd4o_dpf                     : 1;
1741         uint64_t reserved_38_63               : 26;
1742 #endif
1743         } s;
1744         struct cvmx_usbnx_int_sum_s           cn30xx;
1745         struct cvmx_usbnx_int_sum_s           cn31xx;
1746         struct cvmx_usbnx_int_sum_cn50xx
1747         {
1748 #if __BYTE_ORDER == __BIG_ENDIAN
1749         uint64_t reserved_38_63               : 26;
1750         uint64_t nd4o_dpf                     : 1;  /**< NCB DMA Out Data Fifo Push Full. */
1751         uint64_t nd4o_dpe                     : 1;  /**< NCB DMA Out Data Fifo Pop Empty. */
1752         uint64_t nd4o_rpf                     : 1;  /**< NCB DMA Out Request Fifo Push Full. */
1753         uint64_t nd4o_rpe                     : 1;  /**< NCB DMA Out Request Fifo Pop Empty. */
1754         uint64_t ltl_f_pf                     : 1;  /**< L2C Transfer Length Fifo Push Full. */
1755         uint64_t ltl_f_pe                     : 1;  /**< L2C Transfer Length Fifo Pop Empty. */
1756         uint64_t reserved_26_31               : 6;
1757         uint64_t uod_pf                       : 1;  /**< UOD Fifo Push Full. */
1758         uint64_t uod_pe                       : 1;  /**< UOD Fifo Pop Empty. */
1759         uint64_t rq_q3_e                      : 1;  /**< Request Queue-3 Fifo Pushed When Full. */
1760         uint64_t rq_q3_f                      : 1;  /**< Request Queue-3 Fifo Pushed When Full. */
1761         uint64_t rq_q2_e                      : 1;  /**< Request Queue-2 Fifo Pushed When Full. */
1762         uint64_t rq_q2_f                      : 1;  /**< Request Queue-2 Fifo Pushed When Full. */
1763         uint64_t rg_fi_f                      : 1;  /**< Register Request Fifo Pushed When Full. */
1764         uint64_t rg_fi_e                      : 1;  /**< Register Request Fifo Pushed When Full. */
1765         uint64_t lt_fi_f                      : 1;  /**< L2C Request Fifo Pushed When Full. */
1766         uint64_t lt_fi_e                      : 1;  /**< L2C Request Fifo Pushed When Full. */
1767         uint64_t l2c_a_f                      : 1;  /**< L2C Credit Count Added When Full. */
1768         uint64_t l2c_s_e                      : 1;  /**< L2C Credit Count Subtracted When Empty. */
1769         uint64_t dcred_f                      : 1;  /**< Data CreditFifo Pushed When Full. */
1770         uint64_t dcred_e                      : 1;  /**< Data Credit Fifo Pushed When Full. */
1771         uint64_t lt_pu_f                      : 1;  /**< L2C Trasaction Fifo Pushed When Full. */
1772         uint64_t lt_po_e                      : 1;  /**< L2C Trasaction Fifo Popped When Full. */
1773         uint64_t nt_pu_f                      : 1;  /**< NPI Trasaction Fifo Pushed When Full. */
1774         uint64_t nt_po_e                      : 1;  /**< NPI Trasaction Fifo Popped When Full. */
1775         uint64_t pt_pu_f                      : 1;  /**< PP  Trasaction Fifo Pushed When Full. */
1776         uint64_t pt_po_e                      : 1;  /**< PP  Trasaction Fifo Popped When Full. */
1777         uint64_t lr_pu_f                      : 1;  /**< L2C Request Fifo Pushed When Full. */
1778         uint64_t lr_po_e                      : 1;  /**< L2C Request Fifo Popped When Empty. */
1779         uint64_t nr_pu_f                      : 1;  /**< NPI Request Fifo Pushed When Full. */
1780         uint64_t nr_po_e                      : 1;  /**< NPI Request Fifo Popped When Empty. */
1781         uint64_t pr_pu_f                      : 1;  /**< PP  Request Fifo Pushed When Full. */
1782         uint64_t pr_po_e                      : 1;  /**< PP  Request Fifo Popped When Empty. */
1783 #else
1784         uint64_t pr_po_e                      : 1;
1785         uint64_t pr_pu_f                      : 1;
1786         uint64_t nr_po_e                      : 1;
1787         uint64_t nr_pu_f                      : 1;
1788         uint64_t lr_po_e                      : 1;
1789         uint64_t lr_pu_f                      : 1;
1790         uint64_t pt_po_e                      : 1;
1791         uint64_t pt_pu_f                      : 1;
1792         uint64_t nt_po_e                      : 1;
1793         uint64_t nt_pu_f                      : 1;
1794         uint64_t lt_po_e                      : 1;
1795         uint64_t lt_pu_f                      : 1;
1796         uint64_t dcred_e                      : 1;
1797         uint64_t dcred_f                      : 1;
1798         uint64_t l2c_s_e                      : 1;
1799         uint64_t l2c_a_f                      : 1;
1800         uint64_t lt_fi_e                      : 1;
1801         uint64_t lt_fi_f                      : 1;
1802         uint64_t rg_fi_e                      : 1;
1803         uint64_t rg_fi_f                      : 1;
1804         uint64_t rq_q2_f                      : 1;
1805         uint64_t rq_q2_e                      : 1;
1806         uint64_t rq_q3_f                      : 1;
1807         uint64_t rq_q3_e                      : 1;
1808         uint64_t uod_pe                       : 1;
1809         uint64_t uod_pf                       : 1;
1810         uint64_t reserved_26_31               : 6;
1811         uint64_t ltl_f_pe                     : 1;
1812         uint64_t ltl_f_pf                     : 1;
1813         uint64_t nd4o_rpe                     : 1;
1814         uint64_t nd4o_rpf                     : 1;
1815         uint64_t nd4o_dpe                     : 1;
1816         uint64_t nd4o_dpf                     : 1;
1817         uint64_t reserved_38_63               : 26;
1818 #endif
1819         } cn50xx;
1820         struct cvmx_usbnx_int_sum_cn50xx      cn52xx;
1821         struct cvmx_usbnx_int_sum_cn50xx      cn52xxp1;
1822         struct cvmx_usbnx_int_sum_cn50xx      cn56xx;
1823         struct cvmx_usbnx_int_sum_cn50xx      cn56xxp1;
1824 };
1825 typedef union cvmx_usbnx_int_sum cvmx_usbnx_int_sum_t;
1826
1827 /**
1828  * cvmx_usbn#_usbp_ctl_status
1829  *
1830  * USBN_USBP_CTL_STATUS = USBP Control And Status Register
1831  *
1832  * Contains general control and status information for the USBN block.
1833  */
1834 union cvmx_usbnx_usbp_ctl_status
1835 {
1836         uint64_t u64;
1837         struct cvmx_usbnx_usbp_ctl_status_s
1838         {
1839 #if __BYTE_ORDER == __BIG_ENDIAN
1840         uint64_t txrisetune                   : 1;  /**< HS Transmitter Rise/Fall Time Adjustment */
1841         uint64_t txvreftune                   : 4;  /**< HS DC Voltage Level Adjustment */
1842         uint64_t txfslstune                   : 4;  /**< FS/LS Source Impedence Adjustment */
1843         uint64_t txhsxvtune                   : 2;  /**< Transmitter High-Speed Crossover Adjustment */
1844         uint64_t sqrxtune                     : 3;  /**< Squelch Threshold Adjustment */
1845         uint64_t compdistune                  : 3;  /**< Disconnect Threshold Adjustment */
1846         uint64_t otgtune                      : 3;  /**< VBUS Valid Threshold Adjustment */
1847         uint64_t otgdisable                   : 1;  /**< OTG Block Disable */
1848         uint64_t portreset                    : 1;  /**< Per_Port Reset */
1849         uint64_t drvvbus                      : 1;  /**< Drive VBUS */
1850         uint64_t lsbist                       : 1;  /**< Low-Speed BIST Enable. */
1851         uint64_t fsbist                       : 1;  /**< Full-Speed BIST Enable. */
1852         uint64_t hsbist                       : 1;  /**< High-Speed BIST Enable. */
1853         uint64_t bist_done                    : 1;  /**< PHY Bist Done.
1854                                                          Asserted at the end of the PHY BIST sequence. */
1855         uint64_t bist_err                     : 1;  /**< PHY Bist Error.
1856                                                          Indicates an internal error was detected during
1857                                                          the BIST sequence. */
1858         uint64_t tdata_out                    : 4;  /**< PHY Test Data Out.
1859                                                          Presents either internaly generated signals or
1860                                                          test register contents, based upon the value of
1861                                                          test_data_out_sel. */
1862         uint64_t siddq                        : 1;  /**< Drives the USBP (USB-PHY) SIDDQ input.
1863                                                          Normally should be set to zero.
1864                                                          When customers have no intent to use USB PHY
1865                                                          interface, they should:
1866                                                            - still provide 3.3V to USB_VDD33, and
1867                                                            - tie USB_REXT to 3.3V supply, and
1868                                                            - set USBN*_USBP_CTL_STATUS[SIDDQ]=1 */
1869         uint64_t txpreemphasistune            : 1;  /**< HS Transmitter Pre-Emphasis Enable */
1870         uint64_t dma_bmode                    : 1;  /**< When set to 1 the L2C DMA address will be updated
1871                                                          with byte-counts between packets. When set to 0
1872                                                          the L2C DMA address is incremented to the next
1873                                                          4-byte aligned address after adding byte-count. */
1874         uint64_t usbc_end                     : 1;  /**< Bigendian input to the USB Core. This should be
1875                                                          set to '0' for operation. */
1876         uint64_t usbp_bist                    : 1;  /**< PHY, This is cleared '0' to run BIST on the USBP. */
1877         uint64_t tclk                         : 1;  /**< PHY Test Clock, used to load TDATA_IN to the USBP. */
1878         uint64_t dp_pulld                     : 1;  /**< PHY DP_PULLDOWN input to the USB-PHY.
1879                                                          This signal enables the pull-down resistance on
1880                                                          the D+ line. '1' pull down-resistance is connected
1881                                                          to D+/ '0' pull down resistance is not connected
1882                                                          to D+. When an A/B device is acting as a host
1883                                                          (downstream-facing port), dp_pulldown and
1884                                                          dm_pulldown are enabled. This must not toggle
1885                                                          during normal opeartion. */
1886         uint64_t dm_pulld                     : 1;  /**< PHY DM_PULLDOWN input to the USB-PHY.
1887                                                          This signal enables the pull-down resistance on
1888                                                          the D- line. '1' pull down-resistance is connected
1889                                                          to D-. '0' pull down resistance is not connected
1890                                                          to D-. When an A/B device is acting as a host
1891                                                          (downstream-facing port), dp_pulldown and
1892                                                          dm_pulldown are enabled. This must not toggle
1893                                                          during normal opeartion. */
1894         uint64_t hst_mode                     : 1;  /**< When '0' the USB is acting as HOST, when '1'
1895                                                          USB is acting as device. This field needs to be
1896                                                          set while the USB is in reset. */
1897         uint64_t tuning                       : 4;  /**< Transmitter Tuning for High-Speed Operation.
1898                                                          Tunes the current supply and rise/fall output
1899                                                          times for high-speed operation.
1900                                                          [20:19] == 11: Current supply increased
1901                                                          approximately 9%
1902                                                          [20:19] == 10: Current supply increased
1903                                                          approximately 4.5%
1904                                                          [20:19] == 01: Design default.
1905                                                          [20:19] == 00: Current supply decreased
1906                                                          approximately 4.5%
1907                                                          [22:21] == 11: Rise and fall times are increased.
1908                                                          [22:21] == 10: Design default.
1909                                                          [22:21] == 01: Rise and fall times are decreased.
1910                                                          [22:21] == 00: Rise and fall times are decreased
1911                                                          further as compared to the 01 setting. */
1912         uint64_t tx_bs_enh                    : 1;  /**< Transmit Bit Stuffing on [15:8].
1913                                                          Enables or disables bit stuffing on data[15:8]
1914                                                          when bit-stuffing is enabled. */
1915         uint64_t tx_bs_en                     : 1;  /**< Transmit Bit Stuffing on [7:0].
1916                                                          Enables or disables bit stuffing on data[7:0]
1917                                                          when bit-stuffing is enabled. */
1918         uint64_t loop_enb                     : 1;  /**< PHY Loopback Test Enable.
1919                                                          '1': During data transmission the receive is
1920                                                          enabled.
1921                                                          '0': During data transmission the receive is
1922                                                          disabled.
1923                                                          Must be '0' for normal operation. */
1924         uint64_t vtest_enb                    : 1;  /**< Analog Test Pin Enable.
1925                                                          '1' The PHY's analog_test pin is enabled for the
1926                                                          input and output of applicable analog test signals.
1927                                                          '0' THe analog_test pin is disabled. */
1928         uint64_t bist_enb                     : 1;  /**< Built-In Self Test Enable.
1929                                                          Used to activate BIST in the PHY. */
1930         uint64_t tdata_sel                    : 1;  /**< Test Data Out Select.
1931                                                          '1' test_data_out[3:0] (PHY) register contents
1932                                                          are output. '0' internaly generated signals are
1933                                                          output. */
1934         uint64_t taddr_in                     : 4;  /**< Mode Address for Test Interface.
1935                                                          Specifies the register address for writing to or
1936                                                          reading from the PHY test interface register. */
1937         uint64_t tdata_in                     : 8;  /**< Internal Testing Register Input Data and Select
1938                                                          This is a test bus. Data is present on [3:0],
1939                                                          and its corresponding select (enable) is present
1940                                                          on bits [7:4]. */
1941         uint64_t ate_reset                    : 1;  /**< Reset input from automatic test equipment.
1942                                                          This is a test signal. When the USB Core is
1943                                                          powered up (not in Susned Mode), an automatic
1944                                                          tester can use this to disable phy_clock and
1945                                                          free_clk, then re-eanable them with an aligned
1946                                                          phase.
1947                                                          '1': The phy_clk and free_clk outputs are
1948                                                          disabled. "0": The phy_clock and free_clk outputs
1949                                                          are available within a specific period after the
1950                                                          de-assertion. */
1951 #else
1952         uint64_t ate_reset                    : 1;
1953         uint64_t tdata_in                     : 8;
1954         uint64_t taddr_in                     : 4;
1955         uint64_t tdata_sel                    : 1;
1956         uint64_t bist_enb                     : 1;
1957         uint64_t vtest_enb                    : 1;
1958         uint64_t loop_enb                     : 1;
1959         uint64_t tx_bs_en                     : 1;
1960         uint64_t tx_bs_enh                    : 1;
1961         uint64_t tuning                       : 4;
1962         uint64_t hst_mode                     : 1;
1963         uint64_t dm_pulld                     : 1;
1964         uint64_t dp_pulld                     : 1;
1965         uint64_t tclk                         : 1;
1966         uint64_t usbp_bist                    : 1;
1967         uint64_t usbc_end                     : 1;
1968         uint64_t dma_bmode                    : 1;
1969         uint64_t txpreemphasistune            : 1;
1970         uint64_t siddq                        : 1;
1971         uint64_t tdata_out                    : 4;
1972         uint64_t bist_err                     : 1;
1973         uint64_t bist_done                    : 1;
1974         uint64_t hsbist                       : 1;
1975         uint64_t fsbist                       : 1;
1976         uint64_t lsbist                       : 1;
1977         uint64_t drvvbus                      : 1;
1978         uint64_t portreset                    : 1;
1979         uint64_t otgdisable                   : 1;
1980         uint64_t otgtune                      : 3;
1981         uint64_t compdistune                  : 3;
1982         uint64_t sqrxtune                     : 3;
1983         uint64_t txhsxvtune                   : 2;
1984         uint64_t txfslstune                   : 4;
1985         uint64_t txvreftune                   : 4;
1986         uint64_t txrisetune                   : 1;
1987 #endif
1988         } s;
1989         struct cvmx_usbnx_usbp_ctl_status_cn30xx
1990         {
1991 #if __BYTE_ORDER == __BIG_ENDIAN
1992         uint64_t reserved_38_63               : 26;
1993         uint64_t bist_done                    : 1;  /**< PHY Bist Done.
1994                                                          Asserted at the end of the PHY BIST sequence. */
1995         uint64_t bist_err                     : 1;  /**< PHY Bist Error.
1996                                                          Indicates an internal error was detected during
1997                                                          the BIST sequence. */
1998         uint64_t tdata_out                    : 4;  /**< PHY Test Data Out.
1999                                                          Presents either internaly generated signals or
2000                                                          test register contents, based upon the value of
2001                                                          test_data_out_sel. */
2002         uint64_t reserved_30_31               : 2;
2003         uint64_t dma_bmode                    : 1;  /**< When set to 1 the L2C DMA address will be updated
2004                                                          with byte-counts between packets. When set to 0
2005                                                          the L2C DMA address is incremented to the next
2006                                                          4-byte aligned address after adding byte-count. */
2007         uint64_t usbc_end                     : 1;  /**< Bigendian input to the USB Core. This should be
2008                                                          set to '0' for operation. */
2009         uint64_t usbp_bist                    : 1;  /**< PHY, This is cleared '0' to run BIST on the USBP. */
2010         uint64_t tclk                         : 1;  /**< PHY Test Clock, used to load TDATA_IN to the USBP. */
2011         uint64_t dp_pulld                     : 1;  /**< PHY DP_PULLDOWN input to the USB-PHY.
2012                                                          This signal enables the pull-down resistance on
2013                                                          the D+ line. '1' pull down-resistance is connected
2014                                                          to D+/ '0' pull down resistance is not connected
2015                                                          to D+. When an A/B device is acting as a host
2016                                                          (downstream-facing port), dp_pulldown and
2017                                                          dm_pulldown are enabled. This must not toggle
2018                                                          during normal opeartion. */
2019         uint64_t dm_pulld                     : 1;  /**< PHY DM_PULLDOWN input to the USB-PHY.
2020                                                          This signal enables the pull-down resistance on
2021                                                          the D- line. '1' pull down-resistance is connected
2022                                                          to D-. '0' pull down resistance is not connected
2023                                                          to D-. When an A/B device is acting as a host
2024                                                          (downstream-facing port), dp_pulldown and
2025                                                          dm_pulldown are enabled. This must not toggle
2026                                                          during normal opeartion. */
2027         uint64_t hst_mode                     : 1;  /**< When '0' the USB is acting as HOST, when '1'
2028                                                          USB is acting as device. This field needs to be
2029                                                          set while the USB is in reset. */
2030         uint64_t tuning                       : 4;  /**< Transmitter Tuning for High-Speed Operation.
2031                                                          Tunes the current supply and rise/fall output
2032                                                          times for high-speed operation.
2033                                                          [20:19] == 11: Current supply increased
2034                                                          approximately 9%
2035                                                          [20:19] == 10: Current supply increased
2036                                                          approximately 4.5%
2037                                                          [20:19] == 01: Design default.
2038                                                          [20:19] == 00: Current supply decreased
2039                                                          approximately 4.5%
2040                                                          [22:21] == 11: Rise and fall times are increased.
2041                                                          [22:21] == 10: Design default.
2042                                                          [22:21] == 01: Rise and fall times are decreased.
2043                                                          [22:21] == 00: Rise and fall times are decreased
2044                                                          further as compared to the 01 setting. */
2045         uint64_t tx_bs_enh                    : 1;  /**< Transmit Bit Stuffing on [15:8].
2046                                                          Enables or disables bit stuffing on data[15:8]
2047                                                          when bit-stuffing is enabled. */
2048         uint64_t tx_bs_en                     : 1;  /**< Transmit Bit Stuffing on [7:0].
2049                                                          Enables or disables bit stuffing on data[7:0]
2050                                                          when bit-stuffing is enabled. */
2051         uint64_t loop_enb                     : 1;  /**< PHY Loopback Test Enable.
2052                                                          '1': During data transmission the receive is
2053                                                          enabled.
2054                                                          '0': During data transmission the receive is
2055                                                          disabled.
2056                                                          Must be '0' for normal operation. */
2057         uint64_t vtest_enb                    : 1;  /**< Analog Test Pin Enable.
2058                                                          '1' The PHY's analog_test pin is enabled for the
2059                                                          input and output of applicable analog test signals.
2060                                                          '0' THe analog_test pin is disabled. */
2061         uint64_t bist_enb                     : 1;  /**< Built-In Self Test Enable.
2062                                                          Used to activate BIST in the PHY. */
2063         uint64_t tdata_sel                    : 1;  /**< Test Data Out Select.
2064                                                          '1' test_data_out[3:0] (PHY) register contents
2065                                                          are output. '0' internaly generated signals are
2066                                                          output. */
2067         uint64_t taddr_in                     : 4;  /**< Mode Address for Test Interface.
2068                                                          Specifies the register address for writing to or
2069                                                          reading from the PHY test interface register. */
2070         uint64_t tdata_in                     : 8;  /**< Internal Testing Register Input Data and Select
2071                                                          This is a test bus. Data is present on [3:0],
2072                                                          and its corresponding select (enable) is present
2073                                                          on bits [7:4]. */
2074         uint64_t ate_reset                    : 1;  /**< Reset input from automatic test equipment.
2075                                                          This is a test signal. When the USB Core is
2076                                                          powered up (not in Susned Mode), an automatic
2077                                                          tester can use this to disable phy_clock and
2078                                                          free_clk, then re-eanable them with an aligned
2079                                                          phase.
2080                                                          '1': The phy_clk and free_clk outputs are
2081                                                          disabled. "0": The phy_clock and free_clk outputs
2082                                                          are available within a specific period after the
2083                                                          de-assertion. */
2084 #else
2085         uint64_t ate_reset                    : 1;
2086         uint64_t tdata_in                     : 8;
2087         uint64_t taddr_in                     : 4;
2088         uint64_t tdata_sel                    : 1;
2089         uint64_t bist_enb                     : 1;
2090         uint64_t vtest_enb                    : 1;
2091         uint64_t loop_enb                     : 1;
2092         uint64_t tx_bs_en                     : 1;
2093         uint64_t tx_bs_enh                    : 1;
2094         uint64_t tuning                       : 4;
2095         uint64_t hst_mode                     : 1;
2096         uint64_t dm_pulld                     : 1;
2097         uint64_t dp_pulld                     : 1;
2098         uint64_t tclk                         : 1;
2099         uint64_t usbp_bist                    : 1;
2100         uint64_t usbc_end                     : 1;
2101         uint64_t dma_bmode                    : 1;
2102         uint64_t reserved_30_31               : 2;
2103         uint64_t tdata_out                    : 4;
2104         uint64_t bist_err                     : 1;
2105         uint64_t bist_done                    : 1;
2106         uint64_t reserved_38_63               : 26;
2107 #endif
2108         } cn30xx;
2109         struct cvmx_usbnx_usbp_ctl_status_cn30xx cn31xx;
2110         struct cvmx_usbnx_usbp_ctl_status_cn50xx
2111         {
2112 #if __BYTE_ORDER == __BIG_ENDIAN
2113         uint64_t txrisetune                   : 1;  /**< HS Transmitter Rise/Fall Time Adjustment */
2114         uint64_t txvreftune                   : 4;  /**< HS DC Voltage Level Adjustment */
2115         uint64_t txfslstune                   : 4;  /**< FS/LS Source Impedence Adjustment */
2116         uint64_t txhsxvtune                   : 2;  /**< Transmitter High-Speed Crossover Adjustment */
2117         uint64_t sqrxtune                     : 3;  /**< Squelch Threshold Adjustment */
2118         uint64_t compdistune                  : 3;  /**< Disconnect Threshold Adjustment */
2119         uint64_t otgtune                      : 3;  /**< VBUS Valid Threshold Adjustment */
2120         uint64_t otgdisable                   : 1;  /**< OTG Block Disable */
2121         uint64_t portreset                    : 1;  /**< Per_Port Reset */
2122         uint64_t drvvbus                      : 1;  /**< Drive VBUS */
2123         uint64_t lsbist                       : 1;  /**< Low-Speed BIST Enable. */
2124         uint64_t fsbist                       : 1;  /**< Full-Speed BIST Enable. */
2125         uint64_t hsbist                       : 1;  /**< High-Speed BIST Enable. */
2126         uint64_t bist_done                    : 1;  /**< PHY Bist Done.
2127                                                          Asserted at the end of the PHY BIST sequence. */
2128         uint64_t bist_err                     : 1;  /**< PHY Bist Error.
2129                                                          Indicates an internal error was detected during
2130                                                          the BIST sequence. */
2131         uint64_t tdata_out                    : 4;  /**< PHY Test Data Out.
2132                                                          Presents either internaly generated signals or
2133                                                          test register contents, based upon the value of
2134                                                          test_data_out_sel. */
2135         uint64_t reserved_31_31               : 1;
2136         uint64_t txpreemphasistune            : 1;  /**< HS Transmitter Pre-Emphasis Enable */
2137         uint64_t dma_bmode                    : 1;  /**< When set to 1 the L2C DMA address will be updated
2138                                                          with byte-counts between packets. When set to 0
2139                                                          the L2C DMA address is incremented to the next
2140                                                          4-byte aligned address after adding byte-count. */
2141         uint64_t usbc_end                     : 1;  /**< Bigendian input to the USB Core. This should be
2142                                                          set to '0' for operation. */
2143         uint64_t usbp_bist                    : 1;  /**< PHY, This is cleared '0' to run BIST on the USBP. */
2144         uint64_t tclk                         : 1;  /**< PHY Test Clock, used to load TDATA_IN to the USBP. */
2145         uint64_t dp_pulld                     : 1;  /**< PHY DP_PULLDOWN input to the USB-PHY.
2146                                                          This signal enables the pull-down resistance on
2147                                                          the D+ line. '1' pull down-resistance is connected
2148                                                          to D+/ '0' pull down resistance is not connected
2149                                                          to D+. When an A/B device is acting as a host
2150                                                          (downstream-facing port), dp_pulldown and
2151                                                          dm_pulldown are enabled. This must not toggle
2152                                                          during normal opeartion. */
2153         uint64_t dm_pulld                     : 1;  /**< PHY DM_PULLDOWN input to the USB-PHY.
2154                                                          This signal enables the pull-down resistance on
2155                                                          the D- line. '1' pull down-resistance is connected
2156                                                          to D-. '0' pull down resistance is not connected
2157                                                          to D-. When an A/B device is acting as a host
2158                                                          (downstream-facing port), dp_pulldown and
2159                                                          dm_pulldown are enabled. This must not toggle
2160                                                          during normal opeartion. */
2161         uint64_t hst_mode                     : 1;  /**< When '0' the USB is acting as HOST, when '1'
2162                                                          USB is acting as device. This field needs to be
2163                                                          set while the USB is in reset. */
2164         uint64_t reserved_19_22               : 4;
2165         uint64_t tx_bs_enh                    : 1;  /**< Transmit Bit Stuffing on [15:8].
2166                                                          Enables or disables bit stuffing on data[15:8]
2167                                                          when bit-stuffing is enabled. */
2168         uint64_t tx_bs_en                     : 1;  /**< Transmit Bit Stuffing on [7:0].
2169                                                          Enables or disables bit stuffing on data[7:0]
2170                                                          when bit-stuffing is enabled. */
2171         uint64_t loop_enb                     : 1;  /**< PHY Loopback Test Enable.
2172                                                          '1': During data transmission the receive is
2173                                                          enabled.
2174                                                          '0': During data transmission the receive is
2175                                                          disabled.
2176                                                          Must be '0' for normal operation. */
2177         uint64_t vtest_enb                    : 1;  /**< Analog Test Pin Enable.
2178                                                          '1' The PHY's analog_test pin is enabled for the
2179                                                          input and output of applicable analog test signals.
2180                                                          '0' THe analog_test pin is disabled. */
2181         uint64_t bist_enb                     : 1;  /**< Built-In Self Test Enable.
2182                                                          Used to activate BIST in the PHY. */
2183         uint64_t tdata_sel                    : 1;  /**< Test Data Out Select.
2184                                                          '1' test_data_out[3:0] (PHY) register contents
2185                                                          are output. '0' internaly generated signals are
2186                                                          output. */
2187         uint64_t taddr_in                     : 4;  /**< Mode Address for Test Interface.
2188                                                          Specifies the register address for writing to or
2189                                                          reading from the PHY test interface register. */
2190         uint64_t tdata_in                     : 8;  /**< Internal Testing Register Input Data and Select
2191                                                          This is a test bus. Data is present on [3:0],
2192                                                          and its corresponding select (enable) is present
2193                                                          on bits [7:4]. */
2194         uint64_t ate_reset                    : 1;  /**< Reset input from automatic test equipment.
2195                                                          This is a test signal. When the USB Core is
2196                                                          powered up (not in Susned Mode), an automatic
2197                                                          tester can use this to disable phy_clock and
2198                                                          free_clk, then re-eanable them with an aligned
2199                                                          phase.
2200                                                          '1': The phy_clk and free_clk outputs are
2201                                                          disabled. "0": The phy_clock and free_clk outputs
2202                                                          are available within a specific period after the
2203                                                          de-assertion. */
2204 #else
2205         uint64_t ate_reset                    : 1;
2206         uint64_t tdata_in                     : 8;
2207         uint64_t taddr_in                     : 4;
2208         uint64_t tdata_sel                    : 1;
2209         uint64_t bist_enb                     : 1;
2210         uint64_t vtest_enb                    : 1;
2211         uint64_t loop_enb                     : 1;
2212         uint64_t tx_bs_en                     : 1;
2213         uint64_t tx_bs_enh                    : 1;
2214         uint64_t reserved_19_22               : 4;
2215         uint64_t hst_mode                     : 1;
2216         uint64_t dm_pulld                     : 1;
2217         uint64_t dp_pulld                     : 1;
2218         uint64_t tclk                         : 1;
2219         uint64_t usbp_bist                    : 1;
2220         uint64_t usbc_end                     : 1;
2221         uint64_t dma_bmode                    : 1;
2222         uint64_t txpreemphasistune            : 1;
2223         uint64_t reserved_31_31               : 1;
2224         uint64_t tdata_out                    : 4;
2225         uint64_t bist_err                     : 1;
2226         uint64_t bist_done                    : 1;
2227         uint64_t hsbist                       : 1;
2228         uint64_t fsbist                       : 1;
2229         uint64_t lsbist                       : 1;
2230         uint64_t drvvbus                      : 1;
2231         uint64_t portreset                    : 1;
2232         uint64_t otgdisable                   : 1;
2233         uint64_t otgtune                      : 3;
2234         uint64_t compdistune                  : 3;
2235         uint64_t sqrxtune                     : 3;
2236         uint64_t txhsxvtune                   : 2;
2237         uint64_t txfslstune                   : 4;
2238         uint64_t txvreftune                   : 4;
2239         uint64_t txrisetune                   : 1;
2240 #endif
2241         } cn50xx;
2242         struct cvmx_usbnx_usbp_ctl_status_cn52xx
2243         {
2244 #if __BYTE_ORDER == __BIG_ENDIAN
2245         uint64_t txrisetune                   : 1;  /**< HS Transmitter Rise/Fall Time Adjustment */
2246         uint64_t txvreftune                   : 4;  /**< HS DC Voltage Level Adjustment */
2247         uint64_t txfslstune                   : 4;  /**< FS/LS Source Impedence Adjustment */
2248         uint64_t txhsxvtune                   : 2;  /**< Transmitter High-Speed Crossover Adjustment */
2249         uint64_t sqrxtune                     : 3;  /**< Squelch Threshold Adjustment */
2250         uint64_t compdistune                  : 3;  /**< Disconnect Threshold Adjustment */
2251         uint64_t otgtune                      : 3;  /**< VBUS Valid Threshold Adjustment */
2252         uint64_t otgdisable                   : 1;  /**< OTG Block Disable */
2253         uint64_t portreset                    : 1;  /**< Per_Port Reset */
2254         uint64_t drvvbus                      : 1;  /**< Drive VBUS */
2255         uint64_t lsbist                       : 1;  /**< Low-Speed BIST Enable. */
2256         uint64_t fsbist                       : 1;  /**< Full-Speed BIST Enable. */
2257         uint64_t hsbist                       : 1;  /**< High-Speed BIST Enable. */
2258         uint64_t bist_done                    : 1;  /**< PHY Bist Done.
2259                                                          Asserted at the end of the PHY BIST sequence. */
2260         uint64_t bist_err                     : 1;  /**< PHY Bist Error.
2261                                                          Indicates an internal error was detected during
2262                                                          the BIST sequence. */
2263         uint64_t tdata_out                    : 4;  /**< PHY Test Data Out.
2264                                                          Presents either internaly generated signals or
2265                                                          test register contents, based upon the value of
2266                                                          test_data_out_sel. */
2267         uint64_t siddq                        : 1;  /**< Drives the USBP (USB-PHY) SIDDQ input.
2268                                                          Normally should be set to zero.
2269                                                          When customers have no intent to use USB PHY
2270                                                          interface, they should:
2271                                                            - still provide 3.3V to USB_VDD33, and
2272                                                            - tie USB_REXT to 3.3V supply, and
2273                                                            - set USBN*_USBP_CTL_STATUS[SIDDQ]=1 */
2274         uint64_t txpreemphasistune            : 1;  /**< HS Transmitter Pre-Emphasis Enable */
2275         uint64_t dma_bmode                    : 1;  /**< When set to 1 the L2C DMA address will be updated
2276                                                          with byte-counts between packets. When set to 0
2277                                                          the L2C DMA address is incremented to the next
2278                                                          4-byte aligned address after adding byte-count. */
2279         uint64_t usbc_end                     : 1;  /**< Bigendian input to the USB Core. This should be
2280                                                          set to '0' for operation. */
2281         uint64_t usbp_bist                    : 1;  /**< PHY, This is cleared '0' to run BIST on the USBP. */
2282         uint64_t tclk                         : 1;  /**< PHY Test Clock, used to load TDATA_IN to the USBP. */
2283         uint64_t dp_pulld                     : 1;  /**< PHY DP_PULLDOWN input to the USB-PHY.
2284                                                          This signal enables the pull-down resistance on
2285                                                          the D+ line. '1' pull down-resistance is connected
2286                                                          to D+/ '0' pull down resistance is not connected
2287                                                          to D+. When an A/B device is acting as a host
2288                                                          (downstream-facing port), dp_pulldown and
2289                                                          dm_pulldown are enabled. This must not toggle
2290                                                          during normal opeartion. */
2291         uint64_t dm_pulld                     : 1;  /**< PHY DM_PULLDOWN input to the USB-PHY.
2292                                                          This signal enables the pull-down resistance on
2293                                                          the D- line. '1' pull down-resistance is connected
2294                                                          to D-. '0' pull down resistance is not connected
2295                                                          to D-. When an A/B device is acting as a host
2296                                                          (downstream-facing port), dp_pulldown and
2297                                                          dm_pulldown are enabled. This must not toggle
2298                                                          during normal opeartion. */
2299         uint64_t hst_mode                     : 1;  /**< When '0' the USB is acting as HOST, when '1'
2300                                                          USB is acting as device. This field needs to be
2301                                                          set while the USB is in reset. */
2302         uint64_t reserved_19_22               : 4;
2303         uint64_t tx_bs_enh                    : 1;  /**< Transmit Bit Stuffing on [15:8].
2304                                                          Enables or disables bit stuffing on data[15:8]
2305                                                          when bit-stuffing is enabled. */
2306         uint64_t tx_bs_en                     : 1;  /**< Transmit Bit Stuffing on [7:0].
2307                                                          Enables or disables bit stuffing on data[7:0]
2308                                                          when bit-stuffing is enabled. */
2309         uint64_t loop_enb                     : 1;  /**< PHY Loopback Test Enable.
2310                                                          '1': During data transmission the receive is
2311                                                          enabled.
2312                                                          '0': During data transmission the receive is
2313                                                          disabled.
2314                                                          Must be '0' for normal operation. */
2315         uint64_t vtest_enb                    : 1;  /**< Analog Test Pin Enable.
2316                                                          '1' The PHY's analog_test pin is enabled for the
2317                                                          input and output of applicable analog test signals.
2318                                                          '0' THe analog_test pin is disabled. */
2319         uint64_t bist_enb                     : 1;  /**< Built-In Self Test Enable.
2320                                                          Used to activate BIST in the PHY. */
2321         uint64_t tdata_sel                    : 1;  /**< Test Data Out Select.
2322                                                          '1' test_data_out[3:0] (PHY) register contents
2323                                                          are output. '0' internaly generated signals are
2324                                                          output. */
2325         uint64_t taddr_in                     : 4;  /**< Mode Address for Test Interface.
2326                                                          Specifies the register address for writing to or
2327                                                          reading from the PHY test interface register. */
2328         uint64_t tdata_in                     : 8;  /**< Internal Testing Register Input Data and Select
2329                                                          This is a test bus. Data is present on [3:0],
2330                                                          and its corresponding select (enable) is present
2331                                                          on bits [7:4]. */
2332         uint64_t ate_reset                    : 1;  /**< Reset input from automatic test equipment.
2333                                                          This is a test signal. When the USB Core is
2334                                                          powered up (not in Susned Mode), an automatic
2335                                                          tester can use this to disable phy_clock and
2336                                                          free_clk, then re-eanable them with an aligned
2337                                                          phase.
2338                                                          '1': The phy_clk and free_clk outputs are
2339                                                          disabled. "0": The phy_clock and free_clk outputs
2340                                                          are available within a specific period after the
2341                                                          de-assertion. */
2342 #else
2343         uint64_t ate_reset                    : 1;
2344         uint64_t tdata_in                     : 8;
2345         uint64_t taddr_in                     : 4;
2346         uint64_t tdata_sel                    : 1;
2347         uint64_t bist_enb                     : 1;
2348         uint64_t vtest_enb                    : 1;
2349         uint64_t loop_enb                     : 1;
2350         uint64_t tx_bs_en                     : 1;
2351         uint64_t tx_bs_enh                    : 1;
2352         uint64_t reserved_19_22               : 4;
2353         uint64_t hst_mode                     : 1;
2354         uint64_t dm_pulld                     : 1;
2355         uint64_t dp_pulld                     : 1;
2356         uint64_t tclk                         : 1;
2357         uint64_t usbp_bist                    : 1;
2358         uint64_t usbc_end                     : 1;
2359         uint64_t dma_bmode                    : 1;
2360         uint64_t txpreemphasistune            : 1;
2361         uint64_t siddq                        : 1;
2362         uint64_t tdata_out                    : 4;
2363         uint64_t bist_err                     : 1;
2364         uint64_t bist_done                    : 1;
2365         uint64_t hsbist                       : 1;
2366         uint64_t fsbist                       : 1;
2367         uint64_t lsbist                       : 1;
2368         uint64_t drvvbus                      : 1;
2369         uint64_t portreset                    : 1;
2370         uint64_t otgdisable                   : 1;
2371         uint64_t otgtune                      : 3;
2372         uint64_t compdistune                  : 3;
2373         uint64_t sqrxtune                     : 3;
2374         uint64_t txhsxvtune                   : 2;
2375         uint64_t txfslstune                   : 4;
2376         uint64_t txvreftune                   : 4;
2377         uint64_t txrisetune                   : 1;
2378 #endif
2379         } cn52xx;
2380         struct cvmx_usbnx_usbp_ctl_status_cn50xx cn52xxp1;
2381         struct cvmx_usbnx_usbp_ctl_status_cn52xx cn56xx;
2382         struct cvmx_usbnx_usbp_ctl_status_cn50xx cn56xxp1;
2383 };
2384 typedef union cvmx_usbnx_usbp_ctl_status cvmx_usbnx_usbp_ctl_status_t;
2385
2386 #endif