1 //------------------------------------------------------------------------------
2 // Copyright 2012 (c) Silicon Laboratories Inc.
3 //
4 // SPDX-License-Identifier: Zlib
5 //
6 // This siHAL software is provided 'as-is', without any express or implied
7 // warranty. In no event will the authors be held liable for any damages
8 // arising from the use of this software.
9 //
10 // Permission is granted to anyone to use this software for any purpose,
11 // including commercial applications, and to alter it and redistribute it
12 // freely, subject to the following restrictions:
13 //
14 // 1. The origin of this software must not be misrepresented; you must not
15 //    claim that you wrote the original software. If you use this software
16 //    in a product, an acknowledgment in the product documentation would be
17 //    appreciated but is not required.
18 // 2. Altered source versions must be plainly marked as such, and must not be
19 //    misrepresented as being the original software.
20 // 3. This notice may not be removed or altered from any source distribution.
21 //------------------------------------------------------------------------------
22 //
23 // Script: 0.57
24 // Version: 1
25 
26 #ifndef __SI32_USB_A_REGISTERS_H__
27 #define __SI32_USB_A_REGISTERS_H__
28 
29 #include <stdint.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 struct SI32_USB_A_FADDR_Struct
36 {
37    union
38    {
39       struct
40       {
41          // Function Address
42          volatile uint32_t FADDR_BITS: 7;
43          // Function Address Update
44          volatile uint32_t FADDRUPD: 1;
45                   uint32_t reserved0: 24;
46       };
47       volatile uint32_t U32;
48    };
49 };
50 
51 #define SI32_USB_A_FADDR_FADDR_MASK  0x0000007F
52 #define SI32_USB_A_FADDR_FADDR_SHIFT  0
53 
54 #define SI32_USB_A_FADDR_FADDRUPD_MASK  0x00000080
55 #define SI32_USB_A_FADDR_FADDRUPD_SHIFT  7
56 // The last address written to FADDR is in effect.
57 #define SI32_USB_A_FADDR_FADDRUPD_NOT_SET_VALUE  0
58 #define SI32_USB_A_FADDR_FADDRUPD_NOT_SET_U32 \
59    (SI32_USB_A_FADDR_FADDRUPD_NOT_SET_VALUE << SI32_USB_A_FADDR_FADDRUPD_SHIFT)
60 // The last address written to FADDR is not yet in effect.
61 #define SI32_USB_A_FADDR_FADDRUPD_SET_VALUE  1
62 #define SI32_USB_A_FADDR_FADDRUPD_SET_U32 \
63    (SI32_USB_A_FADDR_FADDRUPD_SET_VALUE << SI32_USB_A_FADDR_FADDRUPD_SHIFT)
64 
65 
66 
67 struct SI32_USB_A_POWER_Struct
68 {
69    union
70    {
71       struct
72       {
73          // Suspend Detection Enable
74          volatile uint32_t SUSDEN: 1;
75          // Suspend Mode Flag
76          volatile uint32_t SUSMDF: 1;
77          // Force Resume
78          volatile uint32_t RESUME: 1;
79          // Reset Detect Flag
80          volatile uint32_t RSTDETF: 1;
81          // USB Inhibit
82          volatile uint32_t USBINH: 1;
83          // USB Dither Enable
84          volatile uint32_t DITHEN: 1;
85                   uint32_t reserved0: 1;
86          // ISO Update Mode
87          volatile uint32_t ISOUPDMD: 1;
88                   uint32_t reserved1: 24;
89       };
90       volatile uint32_t U32;
91    };
92 };
93 
94 #define SI32_USB_A_POWER_SUSDEN_MASK  0x00000001
95 #define SI32_USB_A_POWER_SUSDEN_SHIFT  0
96 // Disable suspend detection. The USB module will ignore suspend signaling on the
97 // bus.
98 #define SI32_USB_A_POWER_SUSDEN_DISABLED_VALUE  0
99 #define SI32_USB_A_POWER_SUSDEN_DISABLED_U32 \
100    (SI32_USB_A_POWER_SUSDEN_DISABLED_VALUE << SI32_USB_A_POWER_SUSDEN_SHIFT)
101 // Enable suspend detection. The USB module will enter suspend mode if it detects
102 // suspend signalling on the bus.
103 #define SI32_USB_A_POWER_SUSDEN_ENABLED_VALUE  1
104 #define SI32_USB_A_POWER_SUSDEN_ENABLED_U32 \
105    (SI32_USB_A_POWER_SUSDEN_ENABLED_VALUE << SI32_USB_A_POWER_SUSDEN_SHIFT)
106 
107 #define SI32_USB_A_POWER_SUSMDF_MASK  0x00000002
108 #define SI32_USB_A_POWER_SUSMDF_SHIFT  1
109 // The USB module is not in suspend mode.
110 #define SI32_USB_A_POWER_SUSMDF_NOT_SET_VALUE  0
111 #define SI32_USB_A_POWER_SUSMDF_NOT_SET_U32 \
112    (SI32_USB_A_POWER_SUSMDF_NOT_SET_VALUE << SI32_USB_A_POWER_SUSMDF_SHIFT)
113 // The USB module is in suspend mode.
114 #define SI32_USB_A_POWER_SUSMDF_SET_VALUE  1
115 #define SI32_USB_A_POWER_SUSMDF_SET_U32 \
116    (SI32_USB_A_POWER_SUSMDF_SET_VALUE << SI32_USB_A_POWER_SUSMDF_SHIFT)
117 
118 #define SI32_USB_A_POWER_RESUME_MASK  0x00000004
119 #define SI32_USB_A_POWER_RESUME_SHIFT  2
120 #define SI32_USB_A_POWER_RESUME_STOP_VALUE  0
121 #define SI32_USB_A_POWER_RESUME_STOP_U32 \
122    (SI32_USB_A_POWER_RESUME_STOP_VALUE << SI32_USB_A_POWER_RESUME_SHIFT)
123 #define SI32_USB_A_POWER_RESUME_GENERATE_VALUE  1
124 #define SI32_USB_A_POWER_RESUME_GENERATE_U32 \
125    (SI32_USB_A_POWER_RESUME_GENERATE_VALUE << SI32_USB_A_POWER_RESUME_SHIFT)
126 
127 #define SI32_USB_A_POWER_RSTDETF_MASK  0x00000008
128 #define SI32_USB_A_POWER_RSTDETF_SHIFT  3
129 // Reset signaling is not present on the bus.
130 #define SI32_USB_A_POWER_RSTDETF_NOT_SET_VALUE  0
131 #define SI32_USB_A_POWER_RSTDETF_NOT_SET_U32 \
132    (SI32_USB_A_POWER_RSTDETF_NOT_SET_VALUE << SI32_USB_A_POWER_RSTDETF_SHIFT)
133 // Reset signaling detected on the bus.
134 #define SI32_USB_A_POWER_RSTDETF_SET_VALUE  1
135 #define SI32_USB_A_POWER_RSTDETF_SET_U32 \
136    (SI32_USB_A_POWER_RSTDETF_SET_VALUE << SI32_USB_A_POWER_RSTDETF_SHIFT)
137 
138 #define SI32_USB_A_POWER_USBINH_MASK  0x00000010
139 #define SI32_USB_A_POWER_USBINH_SHIFT  4
140 // Enable the USB module.
141 #define SI32_USB_A_POWER_USBINH_INACTIVE_VALUE  0
142 #define SI32_USB_A_POWER_USBINH_INACTIVE_U32 \
143    (SI32_USB_A_POWER_USBINH_INACTIVE_VALUE << SI32_USB_A_POWER_USBINH_SHIFT)
144 // USB module inhibited. All USB traffic is ignored.
145 #define SI32_USB_A_POWER_USBINH_ACTIVE_VALUE  1
146 #define SI32_USB_A_POWER_USBINH_ACTIVE_U32 \
147    (SI32_USB_A_POWER_USBINH_ACTIVE_VALUE << SI32_USB_A_POWER_USBINH_SHIFT)
148 
149 #define SI32_USB_A_POWER_DITHEN_MASK  0x00000020
150 #define SI32_USB_A_POWER_DITHEN_SHIFT  5
151 // Disable automatic USB dithering.
152 #define SI32_USB_A_POWER_DITHEN_DISABLED_VALUE  0
153 #define SI32_USB_A_POWER_DITHEN_DISABLED_U32 \
154    (SI32_USB_A_POWER_DITHEN_DISABLED_VALUE << SI32_USB_A_POWER_DITHEN_SHIFT)
155 // Enable automatic USB dithering.
156 #define SI32_USB_A_POWER_DITHEN_ENABLED_VALUE  1
157 #define SI32_USB_A_POWER_DITHEN_ENABLED_U32 \
158    (SI32_USB_A_POWER_DITHEN_ENABLED_VALUE << SI32_USB_A_POWER_DITHEN_SHIFT)
159 
160 #define SI32_USB_A_POWER_ISOUPDMD_MASK  0x00000080
161 #define SI32_USB_A_POWER_ISOUPDMD_SHIFT  7
162 // When software writes IPRDYI = 1, USB will send the packet when the next IN token
163 // is received.
164 #define SI32_USB_A_POWER_ISOUPDMD_SEND_ON_IN_VALUE  0
165 #define SI32_USB_A_POWER_ISOUPDMD_SEND_ON_IN_U32 \
166    (SI32_USB_A_POWER_ISOUPDMD_SEND_ON_IN_VALUE << SI32_USB_A_POWER_ISOUPDMD_SHIFT)
167 // When software writes IPRDYI = 1, USB will wait for a SOF token before sending
168 // the packet. If an IN token is received before a SOF token, USB will send a zero-
169 // length data packet.
170 #define SI32_USB_A_POWER_ISOUPDMD_SEND_ON_SOF_VALUE  1
171 #define SI32_USB_A_POWER_ISOUPDMD_SEND_ON_SOF_U32 \
172    (SI32_USB_A_POWER_ISOUPDMD_SEND_ON_SOF_VALUE << SI32_USB_A_POWER_ISOUPDMD_SHIFT)
173 
174 
175 
176 struct SI32_USB_A_IOINT_Struct
177 {
178    union
179    {
180       struct
181       {
182          // Endpoint 0 Interrupt Flag
183          volatile uint32_t EP0I: 1;
184          // IN Endpoint 1 Interrupt Flag
185          volatile uint32_t IN1I: 1;
186          // IN Endpoint 2 Interrupt Flag
187          volatile uint32_t IN2I: 1;
188          // IN Endpoint 3 Interrupt Flag
189          volatile uint32_t IN3I: 1;
190          // IN Endpoint 4 Interrupt Flag
191          volatile uint32_t IN4I: 1;
192                   uint32_t reserved0: 12;
193          // OUT Endpoint 1 Interrupt Flag
194          volatile uint32_t OUT1I: 1;
195          // OUT Endpoint 2 Interrupt Flag
196          volatile uint32_t OUT2I: 1;
197          // OUT Endpoint 3 Interrupt Flag
198          volatile uint32_t OUT3I: 1;
199          // OUT Endpoint 4 Interrupt Flag
200          volatile uint32_t OUT4I: 1;
201                   uint32_t reserved1: 11;
202       };
203       volatile uint32_t U32;
204    };
205 };
206 
207 #define SI32_USB_A_IOINT_EP0I_MASK  0x00000001
208 #define SI32_USB_A_IOINT_EP0I_SHIFT  0
209 // Read: Endpoint 0 interrupt has not occurred. Write: No effect.
210 #define SI32_USB_A_IOINT_EP0I_NOT_SET_VALUE  0
211 #define SI32_USB_A_IOINT_EP0I_NOT_SET_U32 \
212    (SI32_USB_A_IOINT_EP0I_NOT_SET_VALUE << SI32_USB_A_IOINT_EP0I_SHIFT)
213 // Read: Endpoint 0 interrupt occurred. Write: Clear the interrupt.
214 #define SI32_USB_A_IOINT_EP0I_SET_VALUE  1
215 #define SI32_USB_A_IOINT_EP0I_SET_U32 \
216    (SI32_USB_A_IOINT_EP0I_SET_VALUE << SI32_USB_A_IOINT_EP0I_SHIFT)
217 
218 #define SI32_USB_A_IOINT_IN1I_MASK  0x00000002
219 #define SI32_USB_A_IOINT_IN1I_SHIFT  1
220 // Read: IN Endpoint 1 interrupt has not occurred. Write: No effect.
221 #define SI32_USB_A_IOINT_IN1I_NOT_SET_VALUE  0
222 #define SI32_USB_A_IOINT_IN1I_NOT_SET_U32 \
223    (SI32_USB_A_IOINT_IN1I_NOT_SET_VALUE << SI32_USB_A_IOINT_IN1I_SHIFT)
224 // Read: IN Endpoint 1 interrupt occurred. Write: Clear the interrupt.
225 #define SI32_USB_A_IOINT_IN1I_SET_VALUE  1
226 #define SI32_USB_A_IOINT_IN1I_SET_U32 \
227    (SI32_USB_A_IOINT_IN1I_SET_VALUE << SI32_USB_A_IOINT_IN1I_SHIFT)
228 
229 #define SI32_USB_A_IOINT_IN2I_MASK  0x00000004
230 #define SI32_USB_A_IOINT_IN2I_SHIFT  2
231 // Read: IN Endpoint 2 interrupt has not occurred. Write: No effect.
232 #define SI32_USB_A_IOINT_IN2I_NOT_SET_VALUE  0
233 #define SI32_USB_A_IOINT_IN2I_NOT_SET_U32 \
234    (SI32_USB_A_IOINT_IN2I_NOT_SET_VALUE << SI32_USB_A_IOINT_IN2I_SHIFT)
235 // Read: IN Endpoint 2 interrupt occurred. Write: Clear the interrupt.
236 #define SI32_USB_A_IOINT_IN2I_SET_VALUE  1
237 #define SI32_USB_A_IOINT_IN2I_SET_U32 \
238    (SI32_USB_A_IOINT_IN2I_SET_VALUE << SI32_USB_A_IOINT_IN2I_SHIFT)
239 
240 #define SI32_USB_A_IOINT_IN3I_MASK  0x00000008
241 #define SI32_USB_A_IOINT_IN3I_SHIFT  3
242 // Read: IN Endpoint 3 interrupt has not occurred. Write: No effect.
243 #define SI32_USB_A_IOINT_IN3I_NOT_SET_VALUE  0
244 #define SI32_USB_A_IOINT_IN3I_NOT_SET_U32 \
245    (SI32_USB_A_IOINT_IN3I_NOT_SET_VALUE << SI32_USB_A_IOINT_IN3I_SHIFT)
246 // Read: IN Endpoint 3 interrupt occurred. Write: Clear the interrupt.
247 #define SI32_USB_A_IOINT_IN3I_SET_VALUE  1
248 #define SI32_USB_A_IOINT_IN3I_SET_U32 \
249    (SI32_USB_A_IOINT_IN3I_SET_VALUE << SI32_USB_A_IOINT_IN3I_SHIFT)
250 
251 #define SI32_USB_A_IOINT_IN4I_MASK  0x00000010
252 #define SI32_USB_A_IOINT_IN4I_SHIFT  4
253 // Read: IN Endpoint 4 interrupt has not occurred. Write: No effect.
254 #define SI32_USB_A_IOINT_IN4I_NOT_SET_VALUE  0
255 #define SI32_USB_A_IOINT_IN4I_NOT_SET_U32 \
256    (SI32_USB_A_IOINT_IN4I_NOT_SET_VALUE << SI32_USB_A_IOINT_IN4I_SHIFT)
257 // Read: IN Endpoint 4 interrupt occurred. Write: Clear the interrupt.
258 #define SI32_USB_A_IOINT_IN4I_SET_VALUE  1
259 #define SI32_USB_A_IOINT_IN4I_SET_U32 \
260    (SI32_USB_A_IOINT_IN4I_SET_VALUE << SI32_USB_A_IOINT_IN4I_SHIFT)
261 
262 #define SI32_USB_A_IOINT_OUT1I_MASK  0x00020000
263 #define SI32_USB_A_IOINT_OUT1I_SHIFT  17
264 // Read: OUT Endpoint 1 interrupt has not occurred. Write: No effect.
265 #define SI32_USB_A_IOINT_OUT1I_NOT_SET_VALUE  0
266 #define SI32_USB_A_IOINT_OUT1I_NOT_SET_U32 \
267    (SI32_USB_A_IOINT_OUT1I_NOT_SET_VALUE << SI32_USB_A_IOINT_OUT1I_SHIFT)
268 // Read: OUT Endpoint 1 interrupt occurred. Write: Clear the interrupt.
269 #define SI32_USB_A_IOINT_OUT1I_SET_VALUE  1
270 #define SI32_USB_A_IOINT_OUT1I_SET_U32 \
271    (SI32_USB_A_IOINT_OUT1I_SET_VALUE << SI32_USB_A_IOINT_OUT1I_SHIFT)
272 
273 #define SI32_USB_A_IOINT_OUT2I_MASK  0x00040000
274 #define SI32_USB_A_IOINT_OUT2I_SHIFT  18
275 // Read: OUT Endpoint 2 interrupt has not occurred. Write: No effect.
276 #define SI32_USB_A_IOINT_OUT2I_NOT_SET_VALUE  0
277 #define SI32_USB_A_IOINT_OUT2I_NOT_SET_U32 \
278    (SI32_USB_A_IOINT_OUT2I_NOT_SET_VALUE << SI32_USB_A_IOINT_OUT2I_SHIFT)
279 // Read: OUT Endpoint 2 interrupt occurred. Write: Clear the interrupt.
280 #define SI32_USB_A_IOINT_OUT2I_SET_VALUE  1
281 #define SI32_USB_A_IOINT_OUT2I_SET_U32 \
282    (SI32_USB_A_IOINT_OUT2I_SET_VALUE << SI32_USB_A_IOINT_OUT2I_SHIFT)
283 
284 #define SI32_USB_A_IOINT_OUT3I_MASK  0x00080000
285 #define SI32_USB_A_IOINT_OUT3I_SHIFT  19
286 // Read: OUT Endpoint 3 interrupt has not occurred. Write: No effect.
287 #define SI32_USB_A_IOINT_OUT3I_NOT_SET_VALUE  0
288 #define SI32_USB_A_IOINT_OUT3I_NOT_SET_U32 \
289    (SI32_USB_A_IOINT_OUT3I_NOT_SET_VALUE << SI32_USB_A_IOINT_OUT3I_SHIFT)
290 // Read: OUT Endpoint 3 interrupt occurred. Write: Clear the interrupt.
291 #define SI32_USB_A_IOINT_OUT3I_SET_VALUE  1
292 #define SI32_USB_A_IOINT_OUT3I_SET_U32 \
293    (SI32_USB_A_IOINT_OUT3I_SET_VALUE << SI32_USB_A_IOINT_OUT3I_SHIFT)
294 
295 #define SI32_USB_A_IOINT_OUT4I_MASK  0x00100000
296 #define SI32_USB_A_IOINT_OUT4I_SHIFT  20
297 // Read: OUT Endpoint 4 interrupt has not occurred. Write: No effect.
298 #define SI32_USB_A_IOINT_OUT4I_NOT_SET_VALUE  0
299 #define SI32_USB_A_IOINT_OUT4I_NOT_SET_U32 \
300    (SI32_USB_A_IOINT_OUT4I_NOT_SET_VALUE << SI32_USB_A_IOINT_OUT4I_SHIFT)
301 // Read: OUT Endpoint 4 interrupt occurred. Write: Clear the interrupt.
302 #define SI32_USB_A_IOINT_OUT4I_SET_VALUE  1
303 #define SI32_USB_A_IOINT_OUT4I_SET_U32 \
304    (SI32_USB_A_IOINT_OUT4I_SET_VALUE << SI32_USB_A_IOINT_OUT4I_SHIFT)
305 
306 
307 
308 struct SI32_USB_A_CMINT_Struct
309 {
310    union
311    {
312       struct
313       {
314          // Suspend Interrupt Flag
315          volatile uint32_t SUSI: 1;
316          // Resume Interrupt Flag
317          volatile uint32_t RESI: 1;
318          // Reset Interrupt Flag
319          volatile uint32_t RSTI: 1;
320          // Start of Frame Interrupt Flag
321          volatile uint32_t SOFI: 1;
322                   uint32_t reserved0: 28;
323       };
324       volatile uint32_t U32;
325    };
326 };
327 
328 #define SI32_USB_A_CMINT_SUSI_MASK  0x00000001
329 #define SI32_USB_A_CMINT_SUSI_SHIFT  0
330 // Read: Suspend interrupt has not occurred. Write: No effect.
331 #define SI32_USB_A_CMINT_SUSI_NOT_SET_VALUE  0
332 #define SI32_USB_A_CMINT_SUSI_NOT_SET_U32 \
333    (SI32_USB_A_CMINT_SUSI_NOT_SET_VALUE << SI32_USB_A_CMINT_SUSI_SHIFT)
334 // Read: Suspend interrupt occurred. Write: Clear the interrupt.
335 #define SI32_USB_A_CMINT_SUSI_SET_VALUE  1
336 #define SI32_USB_A_CMINT_SUSI_SET_U32 \
337    (SI32_USB_A_CMINT_SUSI_SET_VALUE << SI32_USB_A_CMINT_SUSI_SHIFT)
338 
339 #define SI32_USB_A_CMINT_RESI_MASK  0x00000002
340 #define SI32_USB_A_CMINT_RESI_SHIFT  1
341 // Read: Resume interrupt has not occurred. Write: No effect.
342 #define SI32_USB_A_CMINT_RESI_NOT_SET_VALUE  0
343 #define SI32_USB_A_CMINT_RESI_NOT_SET_U32 \
344    (SI32_USB_A_CMINT_RESI_NOT_SET_VALUE << SI32_USB_A_CMINT_RESI_SHIFT)
345 // Read: Resume interrupt occurred. Write: Clear the interrupt.
346 #define SI32_USB_A_CMINT_RESI_SET_VALUE  1
347 #define SI32_USB_A_CMINT_RESI_SET_U32 \
348    (SI32_USB_A_CMINT_RESI_SET_VALUE << SI32_USB_A_CMINT_RESI_SHIFT)
349 
350 #define SI32_USB_A_CMINT_RSTI_MASK  0x00000004
351 #define SI32_USB_A_CMINT_RSTI_SHIFT  2
352 // Read: Reset interrupt has not occurred. Write: No effect.
353 #define SI32_USB_A_CMINT_RSTI_NOT_SET_VALUE  0
354 #define SI32_USB_A_CMINT_RSTI_NOT_SET_U32 \
355    (SI32_USB_A_CMINT_RSTI_NOT_SET_VALUE << SI32_USB_A_CMINT_RSTI_SHIFT)
356 // Read: Reset interrupt occurred. Write: Clear the interrupt.
357 #define SI32_USB_A_CMINT_RSTI_SET_VALUE  1
358 #define SI32_USB_A_CMINT_RSTI_SET_U32 \
359    (SI32_USB_A_CMINT_RSTI_SET_VALUE << SI32_USB_A_CMINT_RSTI_SHIFT)
360 
361 #define SI32_USB_A_CMINT_SOFI_MASK  0x00000008
362 #define SI32_USB_A_CMINT_SOFI_SHIFT  3
363 // Read: SOF interrupt has not occurred. Write: No effect.
364 #define SI32_USB_A_CMINT_SOFI_NOT_SET_VALUE  0
365 #define SI32_USB_A_CMINT_SOFI_NOT_SET_U32 \
366    (SI32_USB_A_CMINT_SOFI_NOT_SET_VALUE << SI32_USB_A_CMINT_SOFI_SHIFT)
367 // Read: SOF interrupt occurred. Write: Clear the interrupt.
368 #define SI32_USB_A_CMINT_SOFI_SET_VALUE  1
369 #define SI32_USB_A_CMINT_SOFI_SET_U32 \
370    (SI32_USB_A_CMINT_SOFI_SET_VALUE << SI32_USB_A_CMINT_SOFI_SHIFT)
371 
372 
373 
374 struct SI32_USB_A_IOINTE_Struct
375 {
376    union
377    {
378       struct
379       {
380          // Endpoint 0 Interrupt Enable
381          volatile uint32_t EP0IEN: 1;
382          // IN Endpoint 1 Interrupt Enable
383          volatile uint32_t IN1IEN: 1;
384          // IN Endpoint 2 Interrupt Enable
385          volatile uint32_t IN2IEN: 1;
386          // IN Endpoint 3 Interrupt Enable
387          volatile uint32_t IN3IEN: 1;
388          // IN Endpoint 4 Interrupt Enable
389          volatile uint32_t IN4IEN: 1;
390                   uint32_t reserved0: 12;
391          // OUT Endpoint 1 Interrupt Enable
392          volatile uint32_t OUT1IEN: 1;
393          // OUT Endpoint 2 Interrupt Enable
394          volatile uint32_t OUT2IEN: 1;
395          // OUT Endpoint 3 Interrupt Enable
396          volatile uint32_t OUT3IEN: 1;
397          // OUT Endpoint 4 Interrupt Enable
398          volatile uint32_t OUT4IEN: 1;
399                   uint32_t reserved1: 11;
400       };
401       volatile uint32_t U32;
402    };
403 };
404 
405 #define SI32_USB_A_IOINTE_EP0IEN_MASK  0x00000001
406 #define SI32_USB_A_IOINTE_EP0IEN_SHIFT  0
407 // Disable the Endpoint 0 interrupt.
408 #define SI32_USB_A_IOINTE_EP0IEN_DISABLED_VALUE  0
409 #define SI32_USB_A_IOINTE_EP0IEN_DISABLED_U32 \
410    (SI32_USB_A_IOINTE_EP0IEN_DISABLED_VALUE << SI32_USB_A_IOINTE_EP0IEN_SHIFT)
411 // Enable the Endpoint 0 interrupt.
412 #define SI32_USB_A_IOINTE_EP0IEN_ENABLED_VALUE  1
413 #define SI32_USB_A_IOINTE_EP0IEN_ENABLED_U32 \
414    (SI32_USB_A_IOINTE_EP0IEN_ENABLED_VALUE << SI32_USB_A_IOINTE_EP0IEN_SHIFT)
415 
416 #define SI32_USB_A_IOINTE_IN1IEN_MASK  0x00000002
417 #define SI32_USB_A_IOINTE_IN1IEN_SHIFT  1
418 // Disable the IN Endpoint 1 interrupt.
419 #define SI32_USB_A_IOINTE_IN1IEN_DISABLED_VALUE  0
420 #define SI32_USB_A_IOINTE_IN1IEN_DISABLED_U32 \
421    (SI32_USB_A_IOINTE_IN1IEN_DISABLED_VALUE << SI32_USB_A_IOINTE_IN1IEN_SHIFT)
422 // Enable the IN Endpoint 1 interrupt.
423 #define SI32_USB_A_IOINTE_IN1IEN_ENABLED_VALUE  1
424 #define SI32_USB_A_IOINTE_IN1IEN_ENABLED_U32 \
425    (SI32_USB_A_IOINTE_IN1IEN_ENABLED_VALUE << SI32_USB_A_IOINTE_IN1IEN_SHIFT)
426 
427 #define SI32_USB_A_IOINTE_IN2IEN_MASK  0x00000004
428 #define SI32_USB_A_IOINTE_IN2IEN_SHIFT  2
429 // Disable the IN Endpoint 2 interrupt.
430 #define SI32_USB_A_IOINTE_IN2IEN_DISABLED_VALUE  0
431 #define SI32_USB_A_IOINTE_IN2IEN_DISABLED_U32 \
432    (SI32_USB_A_IOINTE_IN2IEN_DISABLED_VALUE << SI32_USB_A_IOINTE_IN2IEN_SHIFT)
433 // Enable the IN Endpoint 2 interrupt.
434 #define SI32_USB_A_IOINTE_IN2IEN_ENABLED_VALUE  1
435 #define SI32_USB_A_IOINTE_IN2IEN_ENABLED_U32 \
436    (SI32_USB_A_IOINTE_IN2IEN_ENABLED_VALUE << SI32_USB_A_IOINTE_IN2IEN_SHIFT)
437 
438 #define SI32_USB_A_IOINTE_IN3IEN_MASK  0x00000008
439 #define SI32_USB_A_IOINTE_IN3IEN_SHIFT  3
440 // Disable the IN Endpoint 3 interrupt.
441 #define SI32_USB_A_IOINTE_IN3IEN_DISABLED_VALUE  0
442 #define SI32_USB_A_IOINTE_IN3IEN_DISABLED_U32 \
443    (SI32_USB_A_IOINTE_IN3IEN_DISABLED_VALUE << SI32_USB_A_IOINTE_IN3IEN_SHIFT)
444 // Enable the IN Endpoint 3 interrupt.
445 #define SI32_USB_A_IOINTE_IN3IEN_ENABLED_VALUE  1
446 #define SI32_USB_A_IOINTE_IN3IEN_ENABLED_U32 \
447    (SI32_USB_A_IOINTE_IN3IEN_ENABLED_VALUE << SI32_USB_A_IOINTE_IN3IEN_SHIFT)
448 
449 #define SI32_USB_A_IOINTE_IN4IEN_MASK  0x00000010
450 #define SI32_USB_A_IOINTE_IN4IEN_SHIFT  4
451 // Disable the IN Endpoint 4 interrupt.
452 #define SI32_USB_A_IOINTE_IN4IEN_DISABLED_VALUE  0
453 #define SI32_USB_A_IOINTE_IN4IEN_DISABLED_U32 \
454    (SI32_USB_A_IOINTE_IN4IEN_DISABLED_VALUE << SI32_USB_A_IOINTE_IN4IEN_SHIFT)
455 // Enable the IN Endpoint 4 interrupt.
456 #define SI32_USB_A_IOINTE_IN4IEN_ENABLED_VALUE  1
457 #define SI32_USB_A_IOINTE_IN4IEN_ENABLED_U32 \
458    (SI32_USB_A_IOINTE_IN4IEN_ENABLED_VALUE << SI32_USB_A_IOINTE_IN4IEN_SHIFT)
459 
460 #define SI32_USB_A_IOINTE_OUT1IEN_MASK  0x00020000
461 #define SI32_USB_A_IOINTE_OUT1IEN_SHIFT  17
462 // Disable the OUT Endpoint 1 interrupt.
463 #define SI32_USB_A_IOINTE_OUT1IEN_DISABLED_VALUE  0
464 #define SI32_USB_A_IOINTE_OUT1IEN_DISABLED_U32 \
465    (SI32_USB_A_IOINTE_OUT1IEN_DISABLED_VALUE << SI32_USB_A_IOINTE_OUT1IEN_SHIFT)
466 // Enable the OUT Endpoint 1 interrupt.
467 #define SI32_USB_A_IOINTE_OUT1IEN_ENABLED_VALUE  1
468 #define SI32_USB_A_IOINTE_OUT1IEN_ENABLED_U32 \
469    (SI32_USB_A_IOINTE_OUT1IEN_ENABLED_VALUE << SI32_USB_A_IOINTE_OUT1IEN_SHIFT)
470 
471 #define SI32_USB_A_IOINTE_OUT2IEN_MASK  0x00040000
472 #define SI32_USB_A_IOINTE_OUT2IEN_SHIFT  18
473 // Disable the OUT Endpoint 2 interrupt.
474 #define SI32_USB_A_IOINTE_OUT2IEN_DISABLED_VALUE  0
475 #define SI32_USB_A_IOINTE_OUT2IEN_DISABLED_U32 \
476    (SI32_USB_A_IOINTE_OUT2IEN_DISABLED_VALUE << SI32_USB_A_IOINTE_OUT2IEN_SHIFT)
477 // Enable the OUT Endpoint 2 interrupt.
478 #define SI32_USB_A_IOINTE_OUT2IEN_ENABLED_VALUE  1
479 #define SI32_USB_A_IOINTE_OUT2IEN_ENABLED_U32 \
480    (SI32_USB_A_IOINTE_OUT2IEN_ENABLED_VALUE << SI32_USB_A_IOINTE_OUT2IEN_SHIFT)
481 
482 #define SI32_USB_A_IOINTE_OUT3IEN_MASK  0x00080000
483 #define SI32_USB_A_IOINTE_OUT3IEN_SHIFT  19
484 // Disable the OUT Endpoint 3 interrupt.
485 #define SI32_USB_A_IOINTE_OUT3IEN_DISABLED_VALUE  0
486 #define SI32_USB_A_IOINTE_OUT3IEN_DISABLED_U32 \
487    (SI32_USB_A_IOINTE_OUT3IEN_DISABLED_VALUE << SI32_USB_A_IOINTE_OUT3IEN_SHIFT)
488 // Enable the OUT Endpoint 3 interrupt.
489 #define SI32_USB_A_IOINTE_OUT3IEN_ENABLED_VALUE  1
490 #define SI32_USB_A_IOINTE_OUT3IEN_ENABLED_U32 \
491    (SI32_USB_A_IOINTE_OUT3IEN_ENABLED_VALUE << SI32_USB_A_IOINTE_OUT3IEN_SHIFT)
492 
493 #define SI32_USB_A_IOINTE_OUT4IEN_MASK  0x00100000
494 #define SI32_USB_A_IOINTE_OUT4IEN_SHIFT  20
495 // Disable the OUT Endpoint 4 interrupt.
496 #define SI32_USB_A_IOINTE_OUT4IEN_DISABLED_VALUE  0
497 #define SI32_USB_A_IOINTE_OUT4IEN_DISABLED_U32 \
498    (SI32_USB_A_IOINTE_OUT4IEN_DISABLED_VALUE << SI32_USB_A_IOINTE_OUT4IEN_SHIFT)
499 // Enable the OUT Endpoint 4 interrupt.
500 #define SI32_USB_A_IOINTE_OUT4IEN_ENABLED_VALUE  1
501 #define SI32_USB_A_IOINTE_OUT4IEN_ENABLED_U32 \
502    (SI32_USB_A_IOINTE_OUT4IEN_ENABLED_VALUE << SI32_USB_A_IOINTE_OUT4IEN_SHIFT)
503 
504 
505 
506 struct SI32_USB_A_CMINTEPE_Struct
507 {
508    union
509    {
510       struct
511       {
512          // Suspend Interrupt Enable
513          volatile uint32_t SUSIEN: 1;
514          // Resume Interrupt Enable
515          volatile uint32_t RESIEN: 1;
516          // Reset Interrupt Enable
517          volatile uint32_t RSTIEN: 1;
518          // Start of Frame Interrupt Enable
519          volatile uint32_t SOFIEN: 1;
520                   uint32_t reserved0: 12;
521          // Endpoint 0 Enable
522          volatile uint32_t EP0EN: 1;
523          // Endpoint 1 Enable
524          volatile uint32_t EP1EN: 1;
525          // Endpoint 2 Enable
526          volatile uint32_t EP2EN: 1;
527          // Endpoint 3 Enable
528          volatile uint32_t EP3EN: 1;
529          // Endpoint 4 Enable
530          volatile uint32_t EP4EN: 1;
531                   uint32_t reserved1: 11;
532       };
533       volatile uint32_t U32;
534    };
535 };
536 
537 #define SI32_USB_A_CMINTEPE_SUSIEN_MASK  0x00000001
538 #define SI32_USB_A_CMINTEPE_SUSIEN_SHIFT  0
539 // Disable the Suspend interrupt.
540 #define SI32_USB_A_CMINTEPE_SUSIEN_DISABLED_VALUE  0
541 #define SI32_USB_A_CMINTEPE_SUSIEN_DISABLED_U32 \
542    (SI32_USB_A_CMINTEPE_SUSIEN_DISABLED_VALUE << SI32_USB_A_CMINTEPE_SUSIEN_SHIFT)
543 // Enable the Suspend interrupt.
544 #define SI32_USB_A_CMINTEPE_SUSIEN_ENABLED_VALUE  1
545 #define SI32_USB_A_CMINTEPE_SUSIEN_ENABLED_U32 \
546    (SI32_USB_A_CMINTEPE_SUSIEN_ENABLED_VALUE << SI32_USB_A_CMINTEPE_SUSIEN_SHIFT)
547 
548 #define SI32_USB_A_CMINTEPE_RESIEN_MASK  0x00000002
549 #define SI32_USB_A_CMINTEPE_RESIEN_SHIFT  1
550 // Disable the Resume interrupt.
551 #define SI32_USB_A_CMINTEPE_RESIEN_DISABLED_VALUE  0
552 #define SI32_USB_A_CMINTEPE_RESIEN_DISABLED_U32 \
553    (SI32_USB_A_CMINTEPE_RESIEN_DISABLED_VALUE << SI32_USB_A_CMINTEPE_RESIEN_SHIFT)
554 // Enable the Resume interrupt.
555 #define SI32_USB_A_CMINTEPE_RESIEN_ENABLED_VALUE  1
556 #define SI32_USB_A_CMINTEPE_RESIEN_ENABLED_U32 \
557    (SI32_USB_A_CMINTEPE_RESIEN_ENABLED_VALUE << SI32_USB_A_CMINTEPE_RESIEN_SHIFT)
558 
559 #define SI32_USB_A_CMINTEPE_RSTIEN_MASK  0x00000004
560 #define SI32_USB_A_CMINTEPE_RSTIEN_SHIFT  2
561 // Disable the Reset interrupt.
562 #define SI32_USB_A_CMINTEPE_RSTIEN_DISABLED_VALUE  0
563 #define SI32_USB_A_CMINTEPE_RSTIEN_DISABLED_U32 \
564    (SI32_USB_A_CMINTEPE_RSTIEN_DISABLED_VALUE << SI32_USB_A_CMINTEPE_RSTIEN_SHIFT)
565 // Enable the Reset interrupt.
566 #define SI32_USB_A_CMINTEPE_RSTIEN_ENABLED_VALUE  1
567 #define SI32_USB_A_CMINTEPE_RSTIEN_ENABLED_U32 \
568    (SI32_USB_A_CMINTEPE_RSTIEN_ENABLED_VALUE << SI32_USB_A_CMINTEPE_RSTIEN_SHIFT)
569 
570 #define SI32_USB_A_CMINTEPE_SOFIEN_MASK  0x00000008
571 #define SI32_USB_A_CMINTEPE_SOFIEN_SHIFT  3
572 // Disable the SOF interrupt.
573 #define SI32_USB_A_CMINTEPE_SOFIEN_DISABLED_VALUE  0
574 #define SI32_USB_A_CMINTEPE_SOFIEN_DISABLED_U32 \
575    (SI32_USB_A_CMINTEPE_SOFIEN_DISABLED_VALUE << SI32_USB_A_CMINTEPE_SOFIEN_SHIFT)
576 // Enable the SOF interrupt.
577 #define SI32_USB_A_CMINTEPE_SOFIEN_ENABLED_VALUE  1
578 #define SI32_USB_A_CMINTEPE_SOFIEN_ENABLED_U32 \
579    (SI32_USB_A_CMINTEPE_SOFIEN_ENABLED_VALUE << SI32_USB_A_CMINTEPE_SOFIEN_SHIFT)
580 
581 #define SI32_USB_A_CMINTEPE_EP0EN_MASK  0x00010000
582 #define SI32_USB_A_CMINTEPE_EP0EN_SHIFT  16
583 // Disable Endpoint 0 (no NACK, ACK, or STALL on the USB network).
584 #define SI32_USB_A_CMINTEPE_EP0EN_DISABLED_VALUE  0
585 #define SI32_USB_A_CMINTEPE_EP0EN_DISABLED_U32 \
586    (SI32_USB_A_CMINTEPE_EP0EN_DISABLED_VALUE << SI32_USB_A_CMINTEPE_EP0EN_SHIFT)
587 // Enable Endpoint 0 (normal).
588 #define SI32_USB_A_CMINTEPE_EP0EN_ENABLED_VALUE  1
589 #define SI32_USB_A_CMINTEPE_EP0EN_ENABLED_U32 \
590    (SI32_USB_A_CMINTEPE_EP0EN_ENABLED_VALUE << SI32_USB_A_CMINTEPE_EP0EN_SHIFT)
591 
592 #define SI32_USB_A_CMINTEPE_EP1EN_MASK  0x00020000
593 #define SI32_USB_A_CMINTEPE_EP1EN_SHIFT  17
594 // Disable Endpoint 1 (no NACK, ACK, or STALL on the USB network).
595 #define SI32_USB_A_CMINTEPE_EP1EN_DISABLED_VALUE  0
596 #define SI32_USB_A_CMINTEPE_EP1EN_DISABLED_U32 \
597    (SI32_USB_A_CMINTEPE_EP1EN_DISABLED_VALUE << SI32_USB_A_CMINTEPE_EP1EN_SHIFT)
598 // Enable Endpoint 1 (normal).
599 #define SI32_USB_A_CMINTEPE_EP1EN_ENABLED_VALUE  1
600 #define SI32_USB_A_CMINTEPE_EP1EN_ENABLED_U32 \
601    (SI32_USB_A_CMINTEPE_EP1EN_ENABLED_VALUE << SI32_USB_A_CMINTEPE_EP1EN_SHIFT)
602 
603 #define SI32_USB_A_CMINTEPE_EP2EN_MASK  0x00040000
604 #define SI32_USB_A_CMINTEPE_EP2EN_SHIFT  18
605 // Disable Endpoint 2 (no NACK, ACK, or STALL on the USB network).
606 #define SI32_USB_A_CMINTEPE_EP2EN_DISABLED_VALUE  0
607 #define SI32_USB_A_CMINTEPE_EP2EN_DISABLED_U32 \
608    (SI32_USB_A_CMINTEPE_EP2EN_DISABLED_VALUE << SI32_USB_A_CMINTEPE_EP2EN_SHIFT)
609 // Enable Endpoint 2 (normal).
610 #define SI32_USB_A_CMINTEPE_EP2EN_ENABLED_VALUE  1
611 #define SI32_USB_A_CMINTEPE_EP2EN_ENABLED_U32 \
612    (SI32_USB_A_CMINTEPE_EP2EN_ENABLED_VALUE << SI32_USB_A_CMINTEPE_EP2EN_SHIFT)
613 
614 #define SI32_USB_A_CMINTEPE_EP3EN_MASK  0x00080000
615 #define SI32_USB_A_CMINTEPE_EP3EN_SHIFT  19
616 // Disable Endpoint 3 (no NACK, ACK, or STALL on the USB network).
617 #define SI32_USB_A_CMINTEPE_EP3EN_DISABLED_VALUE  0
618 #define SI32_USB_A_CMINTEPE_EP3EN_DISABLED_U32 \
619    (SI32_USB_A_CMINTEPE_EP3EN_DISABLED_VALUE << SI32_USB_A_CMINTEPE_EP3EN_SHIFT)
620 // Enable Endpoint 3 (normal).
621 #define SI32_USB_A_CMINTEPE_EP3EN_ENABLED_VALUE  1
622 #define SI32_USB_A_CMINTEPE_EP3EN_ENABLED_U32 \
623    (SI32_USB_A_CMINTEPE_EP3EN_ENABLED_VALUE << SI32_USB_A_CMINTEPE_EP3EN_SHIFT)
624 
625 #define SI32_USB_A_CMINTEPE_EP4EN_MASK  0x00100000
626 #define SI32_USB_A_CMINTEPE_EP4EN_SHIFT  20
627 // Disable Endpoint 4 (no NACK, ACK, or STALL on the USB network).
628 #define SI32_USB_A_CMINTEPE_EP4EN_DISABLED_VALUE  0
629 #define SI32_USB_A_CMINTEPE_EP4EN_DISABLED_U32 \
630    (SI32_USB_A_CMINTEPE_EP4EN_DISABLED_VALUE << SI32_USB_A_CMINTEPE_EP4EN_SHIFT)
631 // Enable Endpoint 4 (normal).
632 #define SI32_USB_A_CMINTEPE_EP4EN_ENABLED_VALUE  1
633 #define SI32_USB_A_CMINTEPE_EP4EN_ENABLED_U32 \
634    (SI32_USB_A_CMINTEPE_EP4EN_ENABLED_VALUE << SI32_USB_A_CMINTEPE_EP4EN_SHIFT)
635 
636 
637 
638 struct SI32_USB_A_CRCONTROL_Struct
639 {
640    union
641    {
642       struct
643       {
644                   uint32_t reserved0: 4;
645          // Oscillator Open-Loop Mode Enable
646          volatile uint32_t OLEN: 1;
647          // Low Speed Clock Recovery Mode
648          volatile uint32_t LSCRMD: 1;
649          // Clock Recovery Single Step Enable
650          volatile uint32_t CRSSEN: 1;
651          // Clock Recovery Enable
652          volatile uint32_t CREN: 1;
653                   uint32_t reserved1: 24;
654       };
655       volatile uint32_t U32;
656    };
657 };
658 
659 #define SI32_USB_A_CRCONTROL_OLEN_MASK  0x00000010
660 #define SI32_USB_A_CRCONTROL_OLEN_SHIFT  4
661 // Do not freeze the USB oscillator output frequency (closed loop mode).
662 #define SI32_USB_A_CRCONTROL_OLEN_DISABLED_VALUE  0
663 #define SI32_USB_A_CRCONTROL_OLEN_DISABLED_U32 \
664    (SI32_USB_A_CRCONTROL_OLEN_DISABLED_VALUE << SI32_USB_A_CRCONTROL_OLEN_SHIFT)
665 // Freeze the USB oscillator output frequency (open loop mode).
666 #define SI32_USB_A_CRCONTROL_OLEN_ENABLED_VALUE  1
667 #define SI32_USB_A_CRCONTROL_OLEN_ENABLED_U32 \
668    (SI32_USB_A_CRCONTROL_OLEN_ENABLED_VALUE << SI32_USB_A_CRCONTROL_OLEN_SHIFT)
669 
670 #define SI32_USB_A_CRCONTROL_LSCRMD_MASK  0x00000020
671 #define SI32_USB_A_CRCONTROL_LSCRMD_SHIFT  5
672 // Full Speed Mode.
673 #define SI32_USB_A_CRCONTROL_LSCRMD_FULL_SPEED_VALUE  0
674 #define SI32_USB_A_CRCONTROL_LSCRMD_FULL_SPEED_U32 \
675    (SI32_USB_A_CRCONTROL_LSCRMD_FULL_SPEED_VALUE << SI32_USB_A_CRCONTROL_LSCRMD_SHIFT)
676 // Low Speed Mode.
677 #define SI32_USB_A_CRCONTROL_LSCRMD_LOW_SPEED_VALUE  1
678 #define SI32_USB_A_CRCONTROL_LSCRMD_LOW_SPEED_U32 \
679    (SI32_USB_A_CRCONTROL_LSCRMD_LOW_SPEED_VALUE << SI32_USB_A_CRCONTROL_LSCRMD_SHIFT)
680 
681 #define SI32_USB_A_CRCONTROL_CRSSEN_MASK  0x00000040
682 #define SI32_USB_A_CRCONTROL_CRSSEN_SHIFT  6
683 // Normal calibration mode.
684 #define SI32_USB_A_CRCONTROL_CRSSEN_DISABLED_VALUE  0
685 #define SI32_USB_A_CRCONTROL_CRSSEN_DISABLED_U32 \
686    (SI32_USB_A_CRCONTROL_CRSSEN_DISABLED_VALUE << SI32_USB_A_CRCONTROL_CRSSEN_SHIFT)
687 // Single step mode.
688 #define SI32_USB_A_CRCONTROL_CRSSEN_ENABLED_VALUE  1
689 #define SI32_USB_A_CRCONTROL_CRSSEN_ENABLED_U32 \
690    (SI32_USB_A_CRCONTROL_CRSSEN_ENABLED_VALUE << SI32_USB_A_CRCONTROL_CRSSEN_SHIFT)
691 
692 #define SI32_USB_A_CRCONTROL_CREN_MASK  0x00000080
693 #define SI32_USB_A_CRCONTROL_CREN_SHIFT  7
694 // Disable clock recovery.
695 #define SI32_USB_A_CRCONTROL_CREN_DISABLED_VALUE  0
696 #define SI32_USB_A_CRCONTROL_CREN_DISABLED_U32 \
697    (SI32_USB_A_CRCONTROL_CREN_DISABLED_VALUE << SI32_USB_A_CRCONTROL_CREN_SHIFT)
698 // Enable clock recovery.
699 #define SI32_USB_A_CRCONTROL_CREN_ENABLED_VALUE  1
700 #define SI32_USB_A_CRCONTROL_CREN_ENABLED_U32 \
701    (SI32_USB_A_CRCONTROL_CREN_ENABLED_VALUE << SI32_USB_A_CRCONTROL_CREN_SHIFT)
702 
703 
704 
705 struct SI32_USB_A_FRAME_Struct
706 {
707    union
708    {
709       struct
710       {
711          // Frame Number
712          volatile uint32_t FRAMENUM: 11;
713                   uint32_t reserved0: 21;
714       };
715       volatile uint32_t U32;
716    };
717 };
718 
719 #define SI32_USB_A_FRAME_FRAMENUM_MASK  0x000007FF
720 #define SI32_USB_A_FRAME_FRAMENUM_SHIFT  0
721 
722 
723 
724 struct SI32_USB_A_TCONTROL_Struct
725 {
726    union
727    {
728       struct
729       {
730          // D- Signal State
731          volatile uint32_t DN: 1;
732          // D+ Signal State
733          volatile uint32_t DP: 1;
734          // Differential Receiver State
735          volatile uint32_t DFREC: 1;
736          // Physical Layer Test
737          volatile uint32_t PHYTST: 2;
738          // USB Speed Select
739          volatile uint32_t SSEL: 1;
740          // Physical Layer Enable
741          volatile uint32_t PHYEN: 1;
742          // Internal Pull-up Resistor Enable
743          volatile uint32_t PUEN: 1;
744                   uint32_t reserved0: 24;
745       };
746       volatile uint32_t U32;
747    };
748 };
749 
750 #define SI32_USB_A_TCONTROL_DN_MASK  0x00000001
751 #define SI32_USB_A_TCONTROL_DN_SHIFT  0
752 // D- signal currently at logic 0.
753 #define SI32_USB_A_TCONTROL_DN_LOGIC_0_VALUE  0
754 #define SI32_USB_A_TCONTROL_DN_LOGIC_0_U32 \
755    (SI32_USB_A_TCONTROL_DN_LOGIC_0_VALUE << SI32_USB_A_TCONTROL_DN_SHIFT)
756 // D- signal currently at logic 1.
757 #define SI32_USB_A_TCONTROL_DN_LOGIC_1_VALUE  1
758 #define SI32_USB_A_TCONTROL_DN_LOGIC_1_U32 \
759    (SI32_USB_A_TCONTROL_DN_LOGIC_1_VALUE << SI32_USB_A_TCONTROL_DN_SHIFT)
760 
761 #define SI32_USB_A_TCONTROL_DP_MASK  0x00000002
762 #define SI32_USB_A_TCONTROL_DP_SHIFT  1
763 // D+ signal currently at logic 0.
764 #define SI32_USB_A_TCONTROL_DP_LOGIC_0_VALUE  0
765 #define SI32_USB_A_TCONTROL_DP_LOGIC_0_U32 \
766    (SI32_USB_A_TCONTROL_DP_LOGIC_0_VALUE << SI32_USB_A_TCONTROL_DP_SHIFT)
767 // D+ signal currently at logic 1.
768 #define SI32_USB_A_TCONTROL_DP_LOGIC_1_VALUE  1
769 #define SI32_USB_A_TCONTROL_DP_LOGIC_1_U32 \
770    (SI32_USB_A_TCONTROL_DP_LOGIC_1_VALUE << SI32_USB_A_TCONTROL_DP_SHIFT)
771 
772 #define SI32_USB_A_TCONTROL_DFREC_MASK  0x00000004
773 #define SI32_USB_A_TCONTROL_DFREC_SHIFT  2
774 // Differential 0 signalling is present on the bus.
775 #define SI32_USB_A_TCONTROL_DFREC_DIFF_0_VALUE  0
776 #define SI32_USB_A_TCONTROL_DFREC_DIFF_0_U32 \
777    (SI32_USB_A_TCONTROL_DFREC_DIFF_0_VALUE << SI32_USB_A_TCONTROL_DFREC_SHIFT)
778 // Differential 1 signalling is present on the bus.
779 #define SI32_USB_A_TCONTROL_DFREC_DIFF_1_VALUE  1
780 #define SI32_USB_A_TCONTROL_DFREC_DIFF_1_U32 \
781    (SI32_USB_A_TCONTROL_DFREC_DIFF_1_VALUE << SI32_USB_A_TCONTROL_DFREC_SHIFT)
782 
783 #define SI32_USB_A_TCONTROL_PHYTST_MASK  0x00000018
784 #define SI32_USB_A_TCONTROL_PHYTST_SHIFT  3
785 // Mode 0: Normal (non-test mode) (D+ = X, D- = X).
786 #define SI32_USB_A_TCONTROL_PHYTST_MODE0_VALUE  0
787 #define SI32_USB_A_TCONTROL_PHYTST_MODE0_U32 \
788    (SI32_USB_A_TCONTROL_PHYTST_MODE0_VALUE << SI32_USB_A_TCONTROL_PHYTST_SHIFT)
789 // Mode 1: Differential 1 Forced (D+ = 1, D- = 0).
790 #define SI32_USB_A_TCONTROL_PHYTST_MODE1_VALUE  1
791 #define SI32_USB_A_TCONTROL_PHYTST_MODE1_U32 \
792    (SI32_USB_A_TCONTROL_PHYTST_MODE1_VALUE << SI32_USB_A_TCONTROL_PHYTST_SHIFT)
793 // Mode 2: Differential 0 Forced (D+ = 0, D- = 1).
794 #define SI32_USB_A_TCONTROL_PHYTST_MODE2_VALUE  2
795 #define SI32_USB_A_TCONTROL_PHYTST_MODE2_U32 \
796    (SI32_USB_A_TCONTROL_PHYTST_MODE2_VALUE << SI32_USB_A_TCONTROL_PHYTST_SHIFT)
797 // Mode 3: Single-Ended 0 Forced (D+ = 0, D- = 0).
798 #define SI32_USB_A_TCONTROL_PHYTST_MODE3_VALUE  3
799 #define SI32_USB_A_TCONTROL_PHYTST_MODE3_U32 \
800    (SI32_USB_A_TCONTROL_PHYTST_MODE3_VALUE << SI32_USB_A_TCONTROL_PHYTST_SHIFT)
801 
802 #define SI32_USB_A_TCONTROL_SSEL_MASK  0x00000020
803 #define SI32_USB_A_TCONTROL_SSEL_SHIFT  5
804 // USB operates as a Low Speed device. If enabled, the internal pull-up resistor
805 // appears on the D- line.
806 #define SI32_USB_A_TCONTROL_SSEL_LOW_SPEED_VALUE  0
807 #define SI32_USB_A_TCONTROL_SSEL_LOW_SPEED_U32 \
808    (SI32_USB_A_TCONTROL_SSEL_LOW_SPEED_VALUE << SI32_USB_A_TCONTROL_SSEL_SHIFT)
809 // USB operates as a Full Speed device. If enabled, the internal pull-up resistor
810 // appears on the D+ line.
811 #define SI32_USB_A_TCONTROL_SSEL_FULL_SPEED_VALUE  1
812 #define SI32_USB_A_TCONTROL_SSEL_FULL_SPEED_U32 \
813    (SI32_USB_A_TCONTROL_SSEL_FULL_SPEED_VALUE << SI32_USB_A_TCONTROL_SSEL_SHIFT)
814 
815 #define SI32_USB_A_TCONTROL_PHYEN_MASK  0x00000040
816 #define SI32_USB_A_TCONTROL_PHYEN_SHIFT  6
817 // Disable the USB physical layer Transceiver (suspend).
818 #define SI32_USB_A_TCONTROL_PHYEN_DISABLED_VALUE  0
819 #define SI32_USB_A_TCONTROL_PHYEN_DISABLED_U32 \
820    (SI32_USB_A_TCONTROL_PHYEN_DISABLED_VALUE << SI32_USB_A_TCONTROL_PHYEN_SHIFT)
821 // Enable the USB physical layer Transceiver (normal).
822 #define SI32_USB_A_TCONTROL_PHYEN_ENABLED_VALUE  1
823 #define SI32_USB_A_TCONTROL_PHYEN_ENABLED_U32 \
824    (SI32_USB_A_TCONTROL_PHYEN_ENABLED_VALUE << SI32_USB_A_TCONTROL_PHYEN_SHIFT)
825 
826 #define SI32_USB_A_TCONTROL_PUEN_MASK  0x00000080
827 #define SI32_USB_A_TCONTROL_PUEN_SHIFT  7
828 // Disable the internal pull-up resistor (device effectively detached from the USB
829 // network).
830 #define SI32_USB_A_TCONTROL_PUEN_DISABLED_VALUE  0
831 #define SI32_USB_A_TCONTROL_PUEN_DISABLED_U32 \
832    (SI32_USB_A_TCONTROL_PUEN_DISABLED_VALUE << SI32_USB_A_TCONTROL_PUEN_SHIFT)
833 // Enable the internal pull-up resistor when VBUS is present (device is attached to
834 // the USB network).
835 #define SI32_USB_A_TCONTROL_PUEN_ENABLED_VALUE  1
836 #define SI32_USB_A_TCONTROL_PUEN_ENABLED_U32 \
837    (SI32_USB_A_TCONTROL_PUEN_ENABLED_VALUE << SI32_USB_A_TCONTROL_PUEN_SHIFT)
838 
839 
840 
841 struct SI32_USB_A_CLKSEL_Struct
842 {
843    union
844    {
845       struct
846       {
847          // USB Clock Select
848          volatile uint32_t CLKSEL_BITS: 2;
849                   uint32_t reserved0: 2;
850          // USB Clock Divider
851          volatile uint32_t CLKDIV: 2;
852          // USB Reset
853          volatile uint32_t RESET: 1;
854                   uint32_t reserved1: 25;
855       };
856       volatile uint32_t U32;
857    };
858 };
859 
860 #define SI32_USB_A_CLKSEL_CLKSEL_MASK  0x00000003
861 #define SI32_USB_A_CLKSEL_CLKSEL_SHIFT  0
862 // Select the USB Oscillator as the USB clock.
863 #define SI32_USB_A_CLKSEL_CLKSEL_USBNOSC_VALUE  0
864 #define SI32_USB_A_CLKSEL_CLKSEL_USBNOSC_U32 \
865    (SI32_USB_A_CLKSEL_CLKSEL_USBNOSC_VALUE << SI32_USB_A_CLKSEL_CLKSEL_SHIFT)
866 // Select the PLL output as the USB clock.
867 #define SI32_USB_A_CLKSEL_CLKSEL_PLLNOSC_VALUE  1
868 #define SI32_USB_A_CLKSEL_CLKSEL_PLLNOSC_U32 \
869    (SI32_USB_A_CLKSEL_CLKSEL_PLLNOSC_VALUE << SI32_USB_A_CLKSEL_CLKSEL_SHIFT)
870 // Select the External Oscillator output (EXTOSCn) as the USB clock.
871 #define SI32_USB_A_CLKSEL_CLKSEL_EXTOSCN_VALUE  2
872 #define SI32_USB_A_CLKSEL_CLKSEL_EXTOSCN_U32 \
873    (SI32_USB_A_CLKSEL_CLKSEL_EXTOSCN_VALUE << SI32_USB_A_CLKSEL_CLKSEL_SHIFT)
874 
875 #define SI32_USB_A_CLKSEL_CLKDIV_MASK  0x00000030
876 #define SI32_USB_A_CLKSEL_CLKDIV_SHIFT  4
877 // The USB module uses the selected input clock divided by 1.
878 #define SI32_USB_A_CLKSEL_CLKDIV_DIV1_VALUE  0
879 #define SI32_USB_A_CLKSEL_CLKDIV_DIV1_U32 \
880    (SI32_USB_A_CLKSEL_CLKDIV_DIV1_VALUE << SI32_USB_A_CLKSEL_CLKDIV_SHIFT)
881 // The USB module uses the selected input clock divided by 2.
882 #define SI32_USB_A_CLKSEL_CLKDIV_DIV2_VALUE  1
883 #define SI32_USB_A_CLKSEL_CLKDIV_DIV2_U32 \
884    (SI32_USB_A_CLKSEL_CLKDIV_DIV2_VALUE << SI32_USB_A_CLKSEL_CLKDIV_SHIFT)
885 // The USB module uses the selected input clock divided by 4.
886 #define SI32_USB_A_CLKSEL_CLKDIV_DIV4_VALUE  2
887 #define SI32_USB_A_CLKSEL_CLKDIV_DIV4_U32 \
888    (SI32_USB_A_CLKSEL_CLKDIV_DIV4_VALUE << SI32_USB_A_CLKSEL_CLKDIV_SHIFT)
889 // The USB module uses the selected input clock divided by 8.
890 #define SI32_USB_A_CLKSEL_CLKDIV_DIV8_VALUE  3
891 #define SI32_USB_A_CLKSEL_CLKDIV_DIV8_U32 \
892    (SI32_USB_A_CLKSEL_CLKDIV_DIV8_VALUE << SI32_USB_A_CLKSEL_CLKDIV_SHIFT)
893 
894 #define SI32_USB_A_CLKSEL_RESET_MASK  0x00000040
895 #define SI32_USB_A_CLKSEL_RESET_SHIFT  6
896 // Do not reset the USB module.
897 #define SI32_USB_A_CLKSEL_RESET_NOT_SET_VALUE  0
898 #define SI32_USB_A_CLKSEL_RESET_NOT_SET_U32 \
899    (SI32_USB_A_CLKSEL_RESET_NOT_SET_VALUE << SI32_USB_A_CLKSEL_RESET_SHIFT)
900 // Reset the USB module.
901 #define SI32_USB_A_CLKSEL_RESET_SET_VALUE  1
902 #define SI32_USB_A_CLKSEL_RESET_SET_U32 \
903    (SI32_USB_A_CLKSEL_RESET_SET_VALUE << SI32_USB_A_CLKSEL_RESET_SHIFT)
904 
905 
906 
907 struct SI32_USB_A_OSCCONTROL_Struct
908 {
909    union
910    {
911       struct
912       {
913                   uint32_t reserved0: 5;
914          // USB Oscillator Suspend
915          volatile uint32_t SUSPEND: 1;
916                   uint32_t reserved1: 1;
917          // USB Oscillator Enable
918          volatile uint32_t OSCEN: 1;
919                   uint32_t reserved2: 24;
920       };
921       volatile uint32_t U32;
922    };
923 };
924 
925 #define SI32_USB_A_OSCCONTROL_SUSPEND_MASK  0x00000020
926 #define SI32_USB_A_OSCCONTROL_SUSPEND_SHIFT  5
927 // The USB oscillator is not suspended.
928 #define SI32_USB_A_OSCCONTROL_SUSPEND_DISABLED_VALUE  0
929 #define SI32_USB_A_OSCCONTROL_SUSPEND_DISABLED_U32 \
930    (SI32_USB_A_OSCCONTROL_SUSPEND_DISABLED_VALUE << SI32_USB_A_OSCCONTROL_SUSPEND_SHIFT)
931 // Suspend the USB oscillator.
932 #define SI32_USB_A_OSCCONTROL_SUSPEND_ENABLED_VALUE  1
933 #define SI32_USB_A_OSCCONTROL_SUSPEND_ENABLED_U32 \
934    (SI32_USB_A_OSCCONTROL_SUSPEND_ENABLED_VALUE << SI32_USB_A_OSCCONTROL_SUSPEND_SHIFT)
935 
936 #define SI32_USB_A_OSCCONTROL_OSCEN_MASK  0x00000080
937 #define SI32_USB_A_OSCCONTROL_OSCEN_SHIFT  7
938 // Disable the USB oscillator.
939 #define SI32_USB_A_OSCCONTROL_OSCEN_DISABLED_VALUE  0
940 #define SI32_USB_A_OSCCONTROL_OSCEN_DISABLED_U32 \
941    (SI32_USB_A_OSCCONTROL_OSCEN_DISABLED_VALUE << SI32_USB_A_OSCCONTROL_OSCEN_SHIFT)
942 // Enable the USB oscillator.
943 #define SI32_USB_A_OSCCONTROL_OSCEN_ENABLED_VALUE  1
944 #define SI32_USB_A_OSCCONTROL_OSCEN_ENABLED_U32 \
945    (SI32_USB_A_OSCCONTROL_OSCEN_ENABLED_VALUE << SI32_USB_A_OSCCONTROL_OSCEN_SHIFT)
946 
947 
948 
949 struct SI32_USB_A_AFADJUST_Struct
950 {
951    union
952    {
953       struct
954       {
955          // USB Oscillator Fine Output Frequency Adjust
956          volatile uint32_t FINEFADJ: 6;
957          // USB Oscillator Dithering Enable
958          volatile uint32_t DITHEN: 1;
959                   uint32_t reserved0: 25;
960       };
961       volatile uint32_t U32;
962    };
963 };
964 
965 #define SI32_USB_A_AFADJUST_FINEFADJ_MASK  0x0000003F
966 #define SI32_USB_A_AFADJUST_FINEFADJ_SHIFT  0
967 
968 #define SI32_USB_A_AFADJUST_DITHEN_MASK  0x00000040
969 #define SI32_USB_A_AFADJUST_DITHEN_SHIFT  6
970 // Disable USB oscillator dithering.
971 #define SI32_USB_A_AFADJUST_DITHEN_DISABLED_VALUE  0
972 #define SI32_USB_A_AFADJUST_DITHEN_DISABLED_U32 \
973    (SI32_USB_A_AFADJUST_DITHEN_DISABLED_VALUE << SI32_USB_A_AFADJUST_DITHEN_SHIFT)
974 // Enable USB oscillator dithering.
975 #define SI32_USB_A_AFADJUST_DITHEN_ENABLED_VALUE  1
976 #define SI32_USB_A_AFADJUST_DITHEN_ENABLED_U32 \
977    (SI32_USB_A_AFADJUST_DITHEN_ENABLED_VALUE << SI32_USB_A_AFADJUST_DITHEN_SHIFT)
978 
979 
980 
981 struct SI32_USB_A_FADJUST_Struct
982 {
983    union
984    {
985       struct
986       {
987          // Oscillator Output Frequency Adjust
988          volatile uint32_t FADJ: 7;
989                   uint32_t reserved0: 25;
990       };
991       volatile uint32_t U32;
992    };
993 };
994 
995 #define SI32_USB_A_FADJUST_FADJ_MASK  0x0000007F
996 #define SI32_USB_A_FADJUST_FADJ_SHIFT  0
997 
998 
999 
1000 struct SI32_USB_A_DMAFIFO_Struct
1001 {
1002    union
1003    {
1004       // This is a FIFO register
1005       volatile uint8_t  U8;
1006       volatile uint16_t U16;
1007       volatile uint32_t U32;
1008    };
1009 };
1010 
1011 #define SI32_USB_A_DMAFIFO_DMAFIFO_MASK  0xFFFFFFFF
1012 #define SI32_USB_A_DMAFIFO_DMAFIFO_SHIFT  0
1013 
1014 
1015 
1016 struct SI32_USB_A_DMACONTROL_Struct
1017 {
1018    union
1019    {
1020       struct
1021       {
1022                   uint32_t reserved0: 4;
1023          // USB DMA Debug Mode
1024          volatile uint32_t DBGMD: 1;
1025          // Timeout Error Flag
1026          volatile uint32_t TERRF: 1;
1027          // USB DMA Busy Flag
1028          volatile uint32_t DBUSYF: 1;
1029          // USB DMA Buffer Flush Control
1030          volatile uint32_t DFIFOFL: 1;
1031                   uint32_t reserved1: 24;
1032       };
1033       volatile uint32_t U32;
1034    };
1035 };
1036 
1037 #define SI32_USB_A_DMACONTROL_DBGMD_MASK  0x00000010
1038 #define SI32_USB_A_DMACONTROL_DBGMD_SHIFT  4
1039 // The USB module will continue to operate while the core is halted in debug mode.
1040 #define SI32_USB_A_DMACONTROL_DBGMD_RUN_VALUE  0
1041 #define SI32_USB_A_DMACONTROL_DBGMD_RUN_U32 \
1042    (SI32_USB_A_DMACONTROL_DBGMD_RUN_VALUE << SI32_USB_A_DMACONTROL_DBGMD_SHIFT)
1043 // A debug breakpoint will prevent the USB DMA buffer from transferring data to and
1044 // from the USB FIFOs when the core is halted.
1045 #define SI32_USB_A_DMACONTROL_DBGMD_HALT_VALUE  1
1046 #define SI32_USB_A_DMACONTROL_DBGMD_HALT_U32 \
1047    (SI32_USB_A_DMACONTROL_DBGMD_HALT_VALUE << SI32_USB_A_DMACONTROL_DBGMD_SHIFT)
1048 
1049 #define SI32_USB_A_DMACONTROL_TERRF_MASK  0x00000020
1050 #define SI32_USB_A_DMACONTROL_TERRF_SHIFT  5
1051 // A timeout error has not occurred.
1052 #define SI32_USB_A_DMACONTROL_TERRF_NOT_SET_VALUE  0
1053 #define SI32_USB_A_DMACONTROL_TERRF_NOT_SET_U32 \
1054    (SI32_USB_A_DMACONTROL_TERRF_NOT_SET_VALUE << SI32_USB_A_DMACONTROL_TERRF_SHIFT)
1055 // A timeout error occurred.
1056 #define SI32_USB_A_DMACONTROL_TERRF_SET_VALUE  1
1057 #define SI32_USB_A_DMACONTROL_TERRF_SET_U32 \
1058    (SI32_USB_A_DMACONTROL_TERRF_SET_VALUE << SI32_USB_A_DMACONTROL_TERRF_SHIFT)
1059 
1060 #define SI32_USB_A_DMACONTROL_DBUSYF_MASK  0x00000040
1061 #define SI32_USB_A_DMACONTROL_DBUSYF_SHIFT  6
1062 // The DMA buffer is not busy.
1063 #define SI32_USB_A_DMACONTROL_DBUSYF_NOT_SET_VALUE  0
1064 #define SI32_USB_A_DMACONTROL_DBUSYF_NOT_SET_U32 \
1065    (SI32_USB_A_DMACONTROL_DBUSYF_NOT_SET_VALUE << SI32_USB_A_DMACONTROL_DBUSYF_SHIFT)
1066 // The DMA buffer is busy reading or writing an 8-word packet.
1067 #define SI32_USB_A_DMACONTROL_DBUSYF_SET_VALUE  1
1068 #define SI32_USB_A_DMACONTROL_DBUSYF_SET_U32 \
1069    (SI32_USB_A_DMACONTROL_DBUSYF_SET_VALUE << SI32_USB_A_DMACONTROL_DBUSYF_SHIFT)
1070 
1071 #define SI32_USB_A_DMACONTROL_DFIFOFL_MASK  0x00000080
1072 #define SI32_USB_A_DMACONTROL_DFIFOFL_SHIFT  7
1073 // Flush the USB DMA buffer.
1074 #define SI32_USB_A_DMACONTROL_DFIFOFL_SET_VALUE  1
1075 #define SI32_USB_A_DMACONTROL_DFIFOFL_SET_U32 \
1076    (SI32_USB_A_DMACONTROL_DFIFOFL_SET_VALUE << SI32_USB_A_DMACONTROL_DFIFOFL_SHIFT)
1077 
1078 
1079 
1080 struct SI32_USB_A_EP0CONTROL_Struct
1081 {
1082    union
1083    {
1084       struct
1085       {
1086          // OUT Packet Ready Interrupt Flag
1087          volatile uint32_t OPRDYI: 1;
1088          // IN Packet Ready Indicator
1089          volatile uint32_t IPRDYI: 1;
1090          // Sent Stall Interrupt Flag
1091          volatile uint32_t STSTLI: 1;
1092          // Data End
1093          volatile uint32_t DEND: 1;
1094          // Setup End Interrupt Flag
1095          volatile uint32_t SUENDI: 1;
1096          // Send Stall
1097          volatile uint32_t SDSTL: 1;
1098          // Serviced Out Packet Ready Interrupt Flag
1099          volatile uint32_t OPRDYIS: 1;
1100          // Serviced Setup End Interrupt Flag
1101          volatile uint32_t SUENDIS: 1;
1102                   uint32_t reserved0: 24;
1103       };
1104       volatile uint32_t U32;
1105    };
1106 };
1107 
1108 #define SI32_USB_A_EP0CONTROL_OPRDYI_MASK  0x00000001
1109 #define SI32_USB_A_EP0CONTROL_OPRDYI_SHIFT  0
1110 // A packet is not available.
1111 #define SI32_USB_A_EP0CONTROL_OPRDYI_NOT_SET_VALUE  0
1112 #define SI32_USB_A_EP0CONTROL_OPRDYI_NOT_SET_U32 \
1113    (SI32_USB_A_EP0CONTROL_OPRDYI_NOT_SET_VALUE << SI32_USB_A_EP0CONTROL_OPRDYI_SHIFT)
1114 // A packet is available.
1115 #define SI32_USB_A_EP0CONTROL_OPRDYI_SET_VALUE  1
1116 #define SI32_USB_A_EP0CONTROL_OPRDYI_SET_U32 \
1117    (SI32_USB_A_EP0CONTROL_OPRDYI_SET_VALUE << SI32_USB_A_EP0CONTROL_OPRDYI_SHIFT)
1118 
1119 #define SI32_USB_A_EP0CONTROL_IPRDYI_MASK  0x00000002
1120 #define SI32_USB_A_EP0CONTROL_IPRDYI_SHIFT  1
1121 // A packet is not ready for transmission to host.
1122 #define SI32_USB_A_EP0CONTROL_IPRDYI_NOT_SET_VALUE  0
1123 #define SI32_USB_A_EP0CONTROL_IPRDYI_NOT_SET_U32 \
1124    (SI32_USB_A_EP0CONTROL_IPRDYI_NOT_SET_VALUE << SI32_USB_A_EP0CONTROL_IPRDYI_SHIFT)
1125 // A packet is ready for transmission to host.
1126 #define SI32_USB_A_EP0CONTROL_IPRDYI_SET_VALUE  1
1127 #define SI32_USB_A_EP0CONTROL_IPRDYI_SET_U32 \
1128    (SI32_USB_A_EP0CONTROL_IPRDYI_SET_VALUE << SI32_USB_A_EP0CONTROL_IPRDYI_SHIFT)
1129 
1130 #define SI32_USB_A_EP0CONTROL_STSTLI_MASK  0x00000004
1131 #define SI32_USB_A_EP0CONTROL_STSTLI_SHIFT  2
1132 // Read: A STALL handshake has not been sent or is cleared. Write: Clear the
1133 // interrupt.
1134 #define SI32_USB_A_EP0CONTROL_STSTLI_NOT_SET_VALUE  0
1135 #define SI32_USB_A_EP0CONTROL_STSTLI_NOT_SET_U32 \
1136    (SI32_USB_A_EP0CONTROL_STSTLI_NOT_SET_VALUE << SI32_USB_A_EP0CONTROL_STSTLI_SHIFT)
1137 // Read: STALL handshake sent. Write: No effect.
1138 #define SI32_USB_A_EP0CONTROL_STSTLI_SET_VALUE  1
1139 #define SI32_USB_A_EP0CONTROL_STSTLI_SET_U32 \
1140    (SI32_USB_A_EP0CONTROL_STSTLI_SET_VALUE << SI32_USB_A_EP0CONTROL_STSTLI_SHIFT)
1141 
1142 #define SI32_USB_A_EP0CONTROL_DEND_MASK  0x00000008
1143 #define SI32_USB_A_EP0CONTROL_DEND_SHIFT  3
1144 // The current packet is not the last packet of the transfer.
1145 #define SI32_USB_A_EP0CONTROL_DEND_NOT_SET_VALUE  0
1146 #define SI32_USB_A_EP0CONTROL_DEND_NOT_SET_U32 \
1147    (SI32_USB_A_EP0CONTROL_DEND_NOT_SET_VALUE << SI32_USB_A_EP0CONTROL_DEND_SHIFT)
1148 // The current packet is the last packet of the transfer.
1149 #define SI32_USB_A_EP0CONTROL_DEND_SET_VALUE  1
1150 #define SI32_USB_A_EP0CONTROL_DEND_SET_U32 \
1151    (SI32_USB_A_EP0CONTROL_DEND_SET_VALUE << SI32_USB_A_EP0CONTROL_DEND_SHIFT)
1152 
1153 #define SI32_USB_A_EP0CONTROL_SUENDI_MASK  0x00000010
1154 #define SI32_USB_A_EP0CONTROL_SUENDI_SHIFT  4
1155 // The current packet is not the last packet of setup.
1156 #define SI32_USB_A_EP0CONTROL_SUENDI_NOT_SET_VALUE  0
1157 #define SI32_USB_A_EP0CONTROL_SUENDI_NOT_SET_U32 \
1158    (SI32_USB_A_EP0CONTROL_SUENDI_NOT_SET_VALUE << SI32_USB_A_EP0CONTROL_SUENDI_SHIFT)
1159 // The current packet is the last packet of setup.
1160 #define SI32_USB_A_EP0CONTROL_SUENDI_SET_VALUE  1
1161 #define SI32_USB_A_EP0CONTROL_SUENDI_SET_U32 \
1162    (SI32_USB_A_EP0CONTROL_SUENDI_SET_VALUE << SI32_USB_A_EP0CONTROL_SUENDI_SHIFT)
1163 
1164 #define SI32_USB_A_EP0CONTROL_SDSTL_MASK  0x00000020
1165 #define SI32_USB_A_EP0CONTROL_SDSTL_SHIFT  5
1166 // The STALL handshake has been transmitted or not triggered.
1167 #define SI32_USB_A_EP0CONTROL_SDSTL_NOT_SET_VALUE  0
1168 #define SI32_USB_A_EP0CONTROL_SDSTL_NOT_SET_U32 \
1169    (SI32_USB_A_EP0CONTROL_SDSTL_NOT_SET_VALUE << SI32_USB_A_EP0CONTROL_SDSTL_SHIFT)
1170 // Initiate a STALL condition.
1171 #define SI32_USB_A_EP0CONTROL_SDSTL_SET_VALUE  1
1172 #define SI32_USB_A_EP0CONTROL_SDSTL_SET_U32 \
1173    (SI32_USB_A_EP0CONTROL_SDSTL_SET_VALUE << SI32_USB_A_EP0CONTROL_SDSTL_SHIFT)
1174 
1175 #define SI32_USB_A_EP0CONTROL_OPRDYIS_MASK  0x00000040
1176 #define SI32_USB_A_EP0CONTROL_OPRDYIS_SHIFT  6
1177 // The out packet has not been processed.
1178 #define SI32_USB_A_EP0CONTROL_OPRDYIS_NOT_SET_VALUE  0
1179 #define SI32_USB_A_EP0CONTROL_OPRDYIS_NOT_SET_U32 \
1180    (SI32_USB_A_EP0CONTROL_OPRDYIS_NOT_SET_VALUE << SI32_USB_A_EP0CONTROL_OPRDYIS_SHIFT)
1181 // The out packet has been received and accepted.
1182 #define SI32_USB_A_EP0CONTROL_OPRDYIS_SET_VALUE  1
1183 #define SI32_USB_A_EP0CONTROL_OPRDYIS_SET_U32 \
1184    (SI32_USB_A_EP0CONTROL_OPRDYIS_SET_VALUE << SI32_USB_A_EP0CONTROL_OPRDYIS_SHIFT)
1185 
1186 #define SI32_USB_A_EP0CONTROL_SUENDIS_MASK  0x00000080
1187 #define SI32_USB_A_EP0CONTROL_SUENDIS_SHIFT  7
1188 // Setup end has not been serviced.
1189 #define SI32_USB_A_EP0CONTROL_SUENDIS_NOT_SET_VALUE  0
1190 #define SI32_USB_A_EP0CONTROL_SUENDIS_NOT_SET_U32 \
1191    (SI32_USB_A_EP0CONTROL_SUENDIS_NOT_SET_VALUE << SI32_USB_A_EP0CONTROL_SUENDIS_SHIFT)
1192 // Setup end has been serviced.
1193 #define SI32_USB_A_EP0CONTROL_SUENDIS_SET_VALUE  1
1194 #define SI32_USB_A_EP0CONTROL_SUENDIS_SET_U32 \
1195    (SI32_USB_A_EP0CONTROL_SUENDIS_SET_VALUE << SI32_USB_A_EP0CONTROL_SUENDIS_SHIFT)
1196 
1197 
1198 
1199 struct SI32_USB_A_EP0COUNT_Struct
1200 {
1201    union
1202    {
1203       struct
1204       {
1205          // Endpoint 0 OUT Data Count
1206          volatile uint32_t COUNT: 7;
1207                   uint32_t reserved0: 25;
1208       };
1209       volatile uint32_t U32;
1210    };
1211 };
1212 
1213 #define SI32_USB_A_EP0COUNT_COUNT_MASK  0x0000007F
1214 #define SI32_USB_A_EP0COUNT_COUNT_SHIFT  0
1215 
1216 
1217 
1218 struct SI32_USB_A_EP0FIFO_Struct
1219 {
1220    union
1221    {
1222       // This is a FIFO register
1223       volatile uint8_t  U8;
1224       volatile uint16_t U16;
1225       volatile uint32_t U32;
1226    };
1227 };
1228 
1229 #define SI32_USB_A_EP0FIFO_FIFO_MASK  0xFFFFFFFF
1230 #define SI32_USB_A_EP0FIFO_FIFO_SHIFT  0
1231 
1232 
1233 
1234 typedef struct SI32_USB_A_Struct
1235 {
1236    struct SI32_USB_A_FADDR_Struct                  FADDR          ; // Base Address + 0x0
1237    uint32_t                                        reserved0;
1238    uint32_t                                        reserved1;
1239    uint32_t                                        reserved2;
1240    struct SI32_USB_A_POWER_Struct                  POWER          ; // Base Address + 0x10
1241    uint32_t                                        reserved3;
1242    uint32_t                                        reserved4;
1243    uint32_t                                        reserved5;
1244    struct SI32_USB_A_IOINT_Struct                  IOINT          ; // Base Address + 0x20
1245    uint32_t                                        reserved6;
1246    volatile uint32_t                               IOINT_CLR;
1247    uint32_t                                        reserved7;
1248    struct SI32_USB_A_CMINT_Struct                  CMINT          ; // Base Address + 0x30
1249    uint32_t                                        reserved8;
1250    volatile uint32_t                               CMINT_CLR;
1251    uint32_t                                        reserved9;
1252    struct SI32_USB_A_IOINTE_Struct                 IOINTE         ; // Base Address + 0x40
1253    uint32_t                                        reserved10;
1254    uint32_t                                        reserved11;
1255    uint32_t                                        reserved12;
1256    struct SI32_USB_A_CMINTEPE_Struct               CMINTEPE       ; // Base Address + 0x50
1257    uint32_t                                        reserved13;
1258    uint32_t                                        reserved14;
1259    uint32_t                                        reserved15;
1260    struct SI32_USB_A_CRCONTROL_Struct              CRCONTROL      ; // Base Address + 0x60
1261    uint32_t                                        reserved16;
1262    uint32_t                                        reserved17;
1263    uint32_t                                        reserved18;
1264    struct SI32_USB_A_FRAME_Struct                  FRAME          ; // Base Address + 0x70
1265    uint32_t                                        reserved19;
1266    uint32_t                                        reserved20;
1267    uint32_t                                        reserved21;
1268    uint32_t                                        reserved22[96];
1269    struct SI32_USB_A_TCONTROL_Struct               TCONTROL       ; // Base Address + 0x200
1270    uint32_t                                        reserved23;
1271    uint32_t                                        reserved24;
1272    uint32_t                                        reserved25;
1273    uint32_t                                        reserved26[60];
1274    struct SI32_USB_A_CLKSEL_Struct                 CLKSEL         ; // Base Address + 0x300
1275    uint32_t                                        reserved27;
1276    uint32_t                                        reserved28;
1277    uint32_t                                        reserved29;
1278    struct SI32_USB_A_OSCCONTROL_Struct             OSCCONTROL     ; // Base Address + 0x310
1279    volatile uint32_t                               OSCCONTROL_SET;
1280    volatile uint32_t                               OSCCONTROL_CLR;
1281    uint32_t                                        reserved30;
1282    struct SI32_USB_A_AFADJUST_Struct               AFADJUST       ; // Base Address + 0x320
1283    volatile uint32_t                               AFADJUST_SET;
1284    volatile uint32_t                               AFADJUST_CLR;
1285    uint32_t                                        reserved31;
1286    struct SI32_USB_A_FADJUST_Struct                FADJUST        ; // Base Address + 0x330
1287    uint32_t                                        reserved32;
1288    uint32_t                                        reserved33;
1289    uint32_t                                        reserved34;
1290    uint32_t                                        reserved35[4];
1291    uint32_t                                        reserved36[4];
1292    uint32_t                                        reserved37[40];
1293    struct SI32_USB_A_DMAFIFO_Struct                DMAFIFO        ; // Base Address + 0x400
1294    uint32_t                                        reserved38;
1295    uint32_t                                        reserved39;
1296    uint32_t                                        reserved40;
1297    struct SI32_USB_A_DMACONTROL_Struct             DMACONTROL     ; // Base Address + 0x410
1298    uint32_t                                        reserved41;
1299    uint32_t                                        reserved42;
1300    uint32_t                                        reserved43;
1301    uint32_t                                        reserved44[252];
1302    struct SI32_USB_A_EP0CONTROL_Struct             EP0CONTROL     ; // Base Address + 0x810
1303    uint32_t                                        reserved45;
1304    uint32_t                                        reserved46;
1305    uint32_t                                        reserved47;
1306    struct SI32_USB_A_EP0COUNT_Struct               EP0COUNT       ; // Base Address + 0x820
1307    uint32_t                                        reserved48;
1308    uint32_t                                        reserved49;
1309    uint32_t                                        reserved50;
1310    struct SI32_USB_A_EP0FIFO_Struct                EP0FIFO        ; // Base Address + 0x830
1311    uint32_t                                        reserved51;
1312    uint32_t                                        reserved52;
1313    uint32_t                                        reserved53;
1314 } SI32_USB_A_Type;
1315 
1316 #ifdef __cplusplus
1317 }
1318 #endif
1319 
1320 #endif // __SI32_USB_A_REGISTERS_H__
1321 
1322 //-eof--------------------------------------------------------------------------
1323 
1324