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