1#[doc = "USB"]
2#[repr(C)]
3pub struct RegisterBlock {
4#[doc = "Identification register"]
5pub ID: crate::RORegister<u32>,
6#[doc = "Hardware General"]
7pub HWGENERAL: crate::RORegister<u32>,
8#[doc = "Host Hardware Parameters"]
9pub HWHOST: crate::RORegister<u32>,
10#[doc = "Device Hardware Parameters"]
11pub HWDEVICE: crate::RORegister<u32>,
12#[doc = "TX Buffer Hardware Parameters"]
13pub HWTXBUF: crate::RORegister<u32>,
14#[doc = "RX Buffer Hardware Parameters"]
15pub HWRXBUF: crate::RORegister<u32>,
16 _reserved0: [u8; 0x68],
17#[doc = "General Purpose Timer #0 Load"]
18pub GPTIMER0LD: crate::RWRegister<u32>,
19#[doc = "General Purpose Timer #0 Controller"]
20pub GPTIMER0CTRL: crate::RWRegister<u32>,
21#[doc = "General Purpose Timer #1 Load"]
22pub GPTIMER1LD: crate::RWRegister<u32>,
23#[doc = "General Purpose Timer #1 Controller"]
24pub GPTIMER1CTRL: crate::RWRegister<u32>,
25#[doc = "System Bus Config"]
26pub SBUSCFG: crate::RWRegister<u32>,
27 _reserved1: [u8; 0x6c],
28#[doc = "Capability Registers Length"]
29pub CAPLENGTH: crate::RORegister<u8>,
30 _reserved2: [u8; 0x01],
31#[doc = "Host Controller Interface Version"]
32pub HCIVERSION: crate::RORegister<u16>,
33#[doc = "Host Controller Structural Parameters"]
34pub HCSPARAMS: crate::RORegister<u32>,
35#[doc = "Host Controller Capability Parameters"]
36pub HCCPARAMS: crate::RORegister<u32>,
37 _reserved3: [u8; 0x14],
38#[doc = "Device Controller Interface Version"]
39pub DCIVERSION: crate::RORegister<u16>,
40 _reserved4: [u8; 0x02],
41#[doc = "Device Controller Capability Parameters"]
42pub DCCPARAMS: crate::RORegister<u32>,
43 _reserved5: [u8; 0x18],
44#[doc = "USB Command Register"]
45pub USBCMD: crate::RWRegister<u32>,
46#[doc = "USB Status Register"]
47pub USBSTS: crate::RWRegister<u32>,
48#[doc = "Interrupt Enable Register"]
49pub USBINTR: crate::RWRegister<u32>,
50#[doc = "USB Frame Index"]
51pub FRINDEX: crate::RWRegister<u32>,
52 _reserved6: [u8; 0x04],
53#[doc = "Device Address"]
54pub DEVICEADDR: crate::RWRegister<u32>,
55#[doc = "Next Asynch. Address"]
56pub ASYNCLISTADDR: crate::RWRegister<u32>,
57 _reserved7: [u8; 0x04],
58#[doc = "Programmable Burst Size"]
59pub BURSTSIZE: crate::RWRegister<u32>,
60#[doc = "TX FIFO Fill Tuning"]
61pub TXFILLTUNING: crate::RWRegister<u32>,
62 _reserved8: [u8; 0x10],
63#[doc = "Endpoint NAK"]
64pub ENDPTNAK: crate::RWRegister<u32>,
65#[doc = "Endpoint NAK Enable"]
66pub ENDPTNAKEN: crate::RWRegister<u32>,
67#[doc = "Configure Flag Register"]
68pub CONFIGFLAG: crate::RORegister<u32>,
69#[doc = "Port Status & Control"]
70pub PORTSC1: crate::RWRegister<u32>,
71 _reserved9: [u8; 0x1c],
72#[doc = "On-The-Go Status & control"]
73pub OTGSC: crate::RWRegister<u32>,
74#[doc = "USB Device Mode"]
75pub USBMODE: crate::RWRegister<u32>,
76#[doc = "Endpoint Setup Status"]
77pub ENDPTSETUPSTAT: crate::RWRegister<u32>,
78#[doc = "Endpoint Prime"]
79pub ENDPTPRIME: crate::RWRegister<u32>,
80#[doc = "Endpoint Flush"]
81pub ENDPTFLUSH: crate::RWRegister<u32>,
82#[doc = "Endpoint Status"]
83pub ENDPTSTAT: crate::RWRegister<u32>,
84#[doc = "Endpoint Complete"]
85pub ENDPTCOMPLETE: crate::RWRegister<u32>,
86#[doc = "Endpoint Control0"]
87pub ENDPTCTRL0: crate::RWRegister<u32>,
88#[doc = "Endpoint Control"]
89pub ENDPTCTRL: [crate::RWRegister<u32>; 7usize],
90}
91#[doc = "Identification register"]
92pub mod ID {
93#[doc = "Configuration number"]
94pub mod ID {
95pub const offset: u32 = 0;
96pub const mask: u32 = 0x3f << offset;
97pub mod R {}
98pub mod W {}
99pub mod RW {}
100 }
101#[doc = "Complement version of ID"]
102pub mod NID {
103pub const offset: u32 = 8;
104pub const mask: u32 = 0x3f << offset;
105pub mod R {}
106pub mod W {}
107pub mod RW {}
108 }
109#[doc = "Revision number of the controller core."]
110pub mod REVISION {
111pub const offset: u32 = 16;
112pub const mask: u32 = 0xff << offset;
113pub mod R {}
114pub mod W {}
115pub mod RW {}
116 }
117}
118#[doc = "Hardware General"]
119pub mod HWGENERAL {
120#[doc = "Data width of the transciever connected to the controller core. PHYW bit reset value is"]
121pub mod PHYW {
122pub const offset: u32 = 4;
123pub const mask: u32 = 0x03 << offset;
124pub mod R {}
125pub mod W {}
126pub mod RW {
127#[doc = "8 bit wide data bus Software non-programmable"]
128pub const PHYW_0: u32 = 0;
129#[doc = "16 bit wide data bus Software non-programmable"]
130pub const PHYW_1: u32 = 0x01;
131#[doc = "Reset to 8 bit wide data bus Software programmable"]
132pub const PHYW_2: u32 = 0x02;
133#[doc = "Reset to 16 bit wide data bus Software programmable"]
134pub const PHYW_3: u32 = 0x03;
135 }
136 }
137#[doc = "Transciever type"]
138pub mod PHYM {
139pub const offset: u32 = 6;
140pub const mask: u32 = 0x07 << offset;
141pub mod R {}
142pub mod W {}
143pub mod RW {
144#[doc = "UTMI/UMTI+"]
145pub const PHYM_0: u32 = 0;
146#[doc = "ULPI DDR"]
147pub const PHYM_1: u32 = 0x01;
148#[doc = "ULPI"]
149pub const PHYM_2: u32 = 0x02;
150#[doc = "Serial Only"]
151pub const PHYM_3: u32 = 0x03;
152#[doc = "Software programmable - reset to UTMI/UTMI+"]
153pub const PHYM_4: u32 = 0x04;
154#[doc = "Software programmable - reset to ULPI DDR"]
155pub const PHYM_5: u32 = 0x05;
156#[doc = "Software programmable - reset to ULPI"]
157pub const PHYM_6: u32 = 0x06;
158#[doc = "Software programmable - reset to Serial"]
159pub const PHYM_7: u32 = 0x07;
160 }
161 }
162#[doc = "Serial interface mode capability"]
163pub mod SM {
164pub const offset: u32 = 9;
165pub const mask: u32 = 0x03 << offset;
166pub mod R {}
167pub mod W {}
168pub mod RW {
169#[doc = "No Serial Engine, always use parallel signalling."]
170pub const SM_0: u32 = 0;
171#[doc = "Serial Engine present, always use serial signalling for FS/LS."]
172pub const SM_1: u32 = 0x01;
173#[doc = "Software programmable - Reset to use parallel signalling for FS/LS"]
174pub const SM_2: u32 = 0x02;
175#[doc = "Software programmable - Reset to use serial signalling for FS/LS"]
176pub const SM_3: u32 = 0x03;
177 }
178 }
179}
180#[doc = "Host Hardware Parameters"]
181pub mod HWHOST {
182#[doc = "Host Capable. Indicating whether host operation mode is supported or not."]
183pub mod HC {
184pub const offset: u32 = 0;
185pub const mask: u32 = 0x01 << offset;
186pub mod R {}
187pub mod W {}
188pub mod RW {
189#[doc = "Not supported"]
190pub const HC_0: u32 = 0;
191#[doc = "Supported"]
192pub const HC_1: u32 = 0x01;
193 }
194 }
195#[doc = "The Nmber of downstream ports supported by the host controller is (NPORT+1)"]
196pub mod NPORT {
197pub const offset: u32 = 1;
198pub const mask: u32 = 0x07 << offset;
199pub mod R {}
200pub mod W {}
201pub mod RW {}
202 }
203}
204#[doc = "Device Hardware Parameters"]
205pub mod HWDEVICE {
206#[doc = "Device Capable. Indicating whether device operation mode is supported or not."]
207pub mod DC {
208pub const offset: u32 = 0;
209pub const mask: u32 = 0x01 << offset;
210pub mod R {}
211pub mod W {}
212pub mod RW {
213#[doc = "Not supported"]
214pub const DC_0: u32 = 0;
215#[doc = "Supported"]
216pub const DC_1: u32 = 0x01;
217 }
218 }
219#[doc = "Device Endpoint Number"]
220pub mod DEVEP {
221pub const offset: u32 = 1;
222pub const mask: u32 = 0x1f << offset;
223pub mod R {}
224pub mod W {}
225pub mod RW {}
226 }
227}
228#[doc = "TX Buffer Hardware Parameters"]
229pub mod HWTXBUF {
230#[doc = "Default burst size for memory to TX buffer transfer"]
231pub mod TXBURST {
232pub const offset: u32 = 0;
233pub const mask: u32 = 0xff << offset;
234pub mod R {}
235pub mod W {}
236pub mod RW {}
237 }
238#[doc = "TX FIFO Buffer size is: (2^TXCHANADD) * 4 Bytes"]
239pub mod TXCHANADD {
240pub const offset: u32 = 16;
241pub const mask: u32 = 0xff << offset;
242pub mod R {}
243pub mod W {}
244pub mod RW {}
245 }
246}
247#[doc = "RX Buffer Hardware Parameters"]
248pub mod HWRXBUF {
249#[doc = "Default burst size for memory to RX buffer transfer"]
250pub mod RXBURST {
251pub const offset: u32 = 0;
252pub const mask: u32 = 0xff << offset;
253pub mod R {}
254pub mod W {}
255pub mod RW {}
256 }
257#[doc = "Buffer total size for all receive endpoints is (2^RXADD)"]
258pub mod RXADD {
259pub const offset: u32 = 8;
260pub const mask: u32 = 0xff << offset;
261pub mod R {}
262pub mod W {}
263pub mod RW {}
264 }
265}
266#[doc = "General Purpose Timer #0 Load"]
267pub mod GPTIMER0LD {
268#[doc = "General Purpose Timer Load Value These bit fields are loaded to GPTCNT bits when GPTRST bit is set '1b'"]
269pub mod GPTLD {
270pub const offset: u32 = 0;
271pub const mask: u32 = 0x00ff_ffff << offset;
272pub mod R {}
273pub mod W {}
274pub mod RW {}
275 }
276}
277#[doc = "General Purpose Timer #0 Controller"]
278pub mod GPTIMER0CTRL {
279#[doc = "General Purpose Timer Counter. This field is the count value of the countdown timer."]
280pub mod GPTCNT {
281pub const offset: u32 = 0;
282pub const mask: u32 = 0x00ff_ffff << offset;
283pub mod R {}
284pub mod W {}
285pub mod RW {}
286 }
287#[doc = "General Purpose Timer Mode In one shot mode, the timer will count down to zero, generate an interrupt, and stop until the counter is reset by software; In repeat mode, the timer will count down to zero, generate an interrupt and automatically reload the counter value from GPTLD bits to start again"]
288pub mod GPTMODE {
289pub const offset: u32 = 24;
290pub const mask: u32 = 0x01 << offset;
291pub mod R {}
292pub mod W {}
293pub mod RW {
294#[doc = "One Shot Mode"]
295pub const GPTMODE_0: u32 = 0;
296#[doc = "Repeat Mode"]
297pub const GPTMODE_1: u32 = 0x01;
298 }
299 }
300#[doc = "General Purpose Timer Reset"]
301pub mod GPTRST {
302pub const offset: u32 = 30;
303pub const mask: u32 = 0x01 << offset;
304pub mod R {}
305pub mod W {}
306pub mod RW {
307#[doc = "No action"]
308pub const GPTRST_0: u32 = 0;
309#[doc = "Load counter value from GPTLD bits in n_GPTIMER0LD"]
310pub const GPTRST_1: u32 = 0x01;
311 }
312 }
313#[doc = "General Purpose Timer Run GPTCNT bits are not effected when setting or clearing this bit."]
314pub mod GPTRUN {
315pub const offset: u32 = 31;
316pub const mask: u32 = 0x01 << offset;
317pub mod R {}
318pub mod W {}
319pub mod RW {
320#[doc = "Stop counting"]
321pub const GPTRUN_0: u32 = 0;
322#[doc = "Run"]
323pub const GPTRUN_1: u32 = 0x01;
324 }
325 }
326}
327#[doc = "General Purpose Timer #1 Load"]
328pub mod GPTIMER1LD {
329#[doc = "General Purpose Timer Load Value These bit fields are loaded to GPTCNT bits when GPTRST bit is set '1b'"]
330pub mod GPTLD {
331pub const offset: u32 = 0;
332pub const mask: u32 = 0x00ff_ffff << offset;
333pub mod R {}
334pub mod W {}
335pub mod RW {}
336 }
337}
338#[doc = "General Purpose Timer #1 Controller"]
339pub mod GPTIMER1CTRL {
340#[doc = "General Purpose Timer Counter. This field is the count value of the countdown timer."]
341pub mod GPTCNT {
342pub const offset: u32 = 0;
343pub const mask: u32 = 0x00ff_ffff << offset;
344pub mod R {}
345pub mod W {}
346pub mod RW {}
347 }
348#[doc = "General Purpose Timer Mode In one shot mode, the timer will count down to zero, generate an interrupt, and stop until the counter is reset by software"]
349pub mod GPTMODE {
350pub const offset: u32 = 24;
351pub const mask: u32 = 0x01 << offset;
352pub mod R {}
353pub mod W {}
354pub mod RW {
355#[doc = "One Shot Mode"]
356pub const GPTMODE_0: u32 = 0;
357#[doc = "Repeat Mode"]
358pub const GPTMODE_1: u32 = 0x01;
359 }
360 }
361#[doc = "General Purpose Timer Reset"]
362pub mod GPTRST {
363pub const offset: u32 = 30;
364pub const mask: u32 = 0x01 << offset;
365pub mod R {}
366pub mod W {}
367pub mod RW {
368#[doc = "No action"]
369pub const GPTRST_0: u32 = 0;
370#[doc = "Load counter value from GPTLD bits in USB_n_GPTIMER0LD"]
371pub const GPTRST_1: u32 = 0x01;
372 }
373 }
374#[doc = "General Purpose Timer Run GPTCNT bits are not effected when setting or clearing this bit."]
375pub mod GPTRUN {
376pub const offset: u32 = 31;
377pub const mask: u32 = 0x01 << offset;
378pub mod R {}
379pub mod W {}
380pub mod RW {
381#[doc = "Stop counting"]
382pub const GPTRUN_0: u32 = 0;
383#[doc = "Run"]
384pub const GPTRUN_1: u32 = 0x01;
385 }
386 }
387}
388#[doc = "System Bus Config"]
389pub mod SBUSCFG {
390#[doc = "AHB master interface Burst configuration These bits control AHB master transfer type sequence (or priority)"]
391pub mod AHBBRST {
392pub const offset: u32 = 0;
393pub const mask: u32 = 0x07 << offset;
394pub mod R {}
395pub mod W {}
396pub mod RW {
397#[doc = "Incremental burst of unspecified length only"]
398pub const AHBBRST_0: u32 = 0;
399#[doc = "INCR4 burst, then single transfer"]
400pub const AHBBRST_1: u32 = 0x01;
401#[doc = "INCR8 burst, INCR4 burst, then single transfer"]
402pub const AHBBRST_2: u32 = 0x02;
403#[doc = "INCR16 burst, INCR8 burst, INCR4 burst, then single transfer"]
404pub const AHBBRST_3: u32 = 0x03;
405#[doc = "INCR4 burst, then incremental burst of unspecified length"]
406pub const AHBBRST_5: u32 = 0x05;
407#[doc = "INCR8 burst, INCR4 burst, then incremental burst of unspecified length"]
408pub const AHBBRST_6: u32 = 0x06;
409#[doc = "INCR16 burst, INCR8 burst, INCR4 burst, then incremental burst of unspecified length"]
410pub const AHBBRST_7: u32 = 0x07;
411 }
412 }
413}
414#[doc = "Capability Registers Length"]
415pub mod CAPLENGTH {
416#[doc = "These bits are used as an offset to add to register base to find the beginning of the Operational Register"]
417pub mod CAPLENGTH {
418pub const offset: u8 = 0;
419pub const mask: u8 = 0xff << offset;
420pub mod R {}
421pub mod W {}
422pub mod RW {}
423 }
424}
425#[doc = "Host Controller Interface Version"]
426pub mod HCIVERSION {
427#[doc = "Host Controller Interface Version Number Default value is '10h', which means EHCI rev1.0."]
428pub mod HCIVERSION {
429pub const offset: u16 = 0;
430pub const mask: u16 = 0xffff << offset;
431pub mod R {}
432pub mod W {}
433pub mod RW {}
434 }
435}
436#[doc = "Host Controller Structural Parameters"]
437pub mod HCSPARAMS {
438#[doc = "Number of downstream ports"]
439pub mod N_PORTS {
440pub const offset: u32 = 0;
441pub const mask: u32 = 0x0f << offset;
442pub mod R {}
443pub mod W {}
444pub mod RW {}
445 }
446#[doc = "Port Power Control This field indicates whether the host controller implementation includes port power control"]
447pub mod PPC {
448pub const offset: u32 = 4;
449pub const mask: u32 = 0x01 << offset;
450pub mod R {}
451pub mod W {}
452pub mod RW {}
453 }
454#[doc = "Number of Ports per Companion Controller This field indicates the number of ports supported per internal Companion Controller"]
455pub mod N_PCC {
456pub const offset: u32 = 8;
457pub const mask: u32 = 0x0f << offset;
458pub mod R {}
459pub mod W {}
460pub mod RW {}
461 }
462#[doc = "Number of Companion Controller (N_CC)"]
463pub mod N_CC {
464pub const offset: u32 = 12;
465pub const mask: u32 = 0x0f << offset;
466pub mod R {}
467pub mod W {}
468pub mod RW {
469#[doc = "There is no internal Companion Controller and port-ownership hand-off is not supported."]
470pub const N_CC_0: u32 = 0;
471#[doc = "There are internal companion controller(s) and port-ownership hand-offs is supported."]
472pub const N_CC_1: u32 = 0x01;
473 }
474 }
475#[doc = "Port Indicators (P INDICATOR) This bit indicates whether the ports support port indicator control"]
476pub mod PI {
477pub const offset: u32 = 16;
478pub const mask: u32 = 0x01 << offset;
479pub mod R {}
480pub mod W {}
481pub mod RW {}
482 }
483#[doc = "Number of Ports per Transaction Translator (N_PTT)"]
484pub mod N_PTT {
485pub const offset: u32 = 20;
486pub const mask: u32 = 0x0f << offset;
487pub mod R {}
488pub mod W {}
489pub mod RW {}
490 }
491#[doc = "Number of Transaction Translators (N_TT)"]
492pub mod N_TT {
493pub const offset: u32 = 24;
494pub const mask: u32 = 0x0f << offset;
495pub mod R {}
496pub mod W {}
497pub mod RW {}
498 }
499}
500#[doc = "Host Controller Capability Parameters"]
501pub mod HCCPARAMS {
502#[doc = "64-bit Addressing Capability This bit is set '0b' in all controller core, no 64-bit addressing capability is supported"]
503pub mod ADC {
504pub const offset: u32 = 0;
505pub const mask: u32 = 0x01 << offset;
506pub mod R {}
507pub mod W {}
508pub mod RW {}
509 }
510#[doc = "Programmable Frame List Flag If this bit is set to zero, then the system software must use a frame list length of 1024 elements with this host controller"]
511pub mod PFL {
512pub const offset: u32 = 1;
513pub const mask: u32 = 0x01 << offset;
514pub mod R {}
515pub mod W {}
516pub mod RW {}
517 }
518#[doc = "Asynchronous Schedule Park Capability If this bit is set to a one, then the host controller supports the park feature for high-speed queue heads in the Asynchronous Schedule"]
519pub mod ASP {
520pub const offset: u32 = 2;
521pub const mask: u32 = 0x01 << offset;
522pub mod R {}
523pub mod W {}
524pub mod RW {}
525 }
526#[doc = "Isochronous Scheduling Threshold"]
527pub mod IST {
528pub const offset: u32 = 4;
529pub const mask: u32 = 0x0f << offset;
530pub mod R {}
531pub mod W {}
532pub mod RW {}
533 }
534#[doc = "EHCI Extended Capabilities Pointer"]
535pub mod EECP {
536pub const offset: u32 = 8;
537pub const mask: u32 = 0xff << offset;
538pub mod R {}
539pub mod W {}
540pub mod RW {}
541 }
542}
543#[doc = "Device Controller Interface Version"]
544pub mod DCIVERSION {
545#[doc = "Device Controller Interface Version Number Default value is '01h', which means rev0.1."]
546pub mod DCIVERSION {
547pub const offset: u16 = 0;
548pub const mask: u16 = 0xffff << offset;
549pub mod R {}
550pub mod W {}
551pub mod RW {}
552 }
553}
554#[doc = "Device Controller Capability Parameters"]
555pub mod DCCPARAMS {
556#[doc = "Device Endpoint Number This field indicates the number of endpoints built into the device controller"]
557pub mod DEN {
558pub const offset: u32 = 0;
559pub const mask: u32 = 0x1f << offset;
560pub mod R {}
561pub mod W {}
562pub mod RW {}
563 }
564#[doc = "Device Capable When this bit is 1, this controller is capable of operating as a USB 2.0 device."]
565pub mod DC {
566pub const offset: u32 = 7;
567pub const mask: u32 = 0x01 << offset;
568pub mod R {}
569pub mod W {}
570pub mod RW {}
571 }
572#[doc = "Host Capable When this bit is 1, this controller is capable of operating as an EHCI compatible USB 2"]
573pub mod HC {
574pub const offset: u32 = 8;
575pub const mask: u32 = 0x01 << offset;
576pub mod R {}
577pub mod W {}
578pub mod RW {}
579 }
580}
581#[doc = "USB Command Register"]
582pub mod USBCMD {
583#[doc = "Run/Stop (RS) - Read/Write"]
584pub mod RS {
585pub const offset: u32 = 0;
586pub const mask: u32 = 0x01 << offset;
587pub mod R {}
588pub mod W {}
589pub mod RW {}
590 }
591#[doc = "Controller Reset (RESET) - Read/Write"]
592pub mod RST {
593pub const offset: u32 = 1;
594pub const mask: u32 = 0x01 << offset;
595pub mod R {}
596pub mod W {}
597pub mod RW {}
598 }
599#[doc = "See description at bit 15"]
600pub mod FS_1 {
601pub const offset: u32 = 2;
602pub const mask: u32 = 0x03 << offset;
603pub mod R {}
604pub mod W {}
605pub mod RW {}
606 }
607#[doc = "Periodic Schedule Enable- Read/Write"]
608pub mod PSE {
609pub const offset: u32 = 4;
610pub const mask: u32 = 0x01 << offset;
611pub mod R {}
612pub mod W {}
613pub mod RW {
614#[doc = "Do not process the Periodic Schedule"]
615pub const PSE_0: u32 = 0;
616#[doc = "Use the PERIODICLISTBASE register to access the Periodic Schedule."]
617pub const PSE_1: u32 = 0x01;
618 }
619 }
620#[doc = "Asynchronous Schedule Enable - Read/Write"]
621pub mod ASE {
622pub const offset: u32 = 5;
623pub const mask: u32 = 0x01 << offset;
624pub mod R {}
625pub mod W {}
626pub mod RW {
627#[doc = "Do not process the Asynchronous Schedule."]
628pub const ASE_0: u32 = 0;
629#[doc = "Use the ASYNCLISTADDR register to access the Asynchronous Schedule."]
630pub const ASE_1: u32 = 0x01;
631 }
632 }
633#[doc = "Interrupt on Async Advance Doorbell - Read/Write"]
634pub mod IAA {
635pub const offset: u32 = 6;
636pub const mask: u32 = 0x01 << offset;
637pub mod R {}
638pub mod W {}
639pub mod RW {}
640 }
641#[doc = "Asynchronous Schedule Park Mode Count - Read/Write"]
642pub mod ASP {
643pub const offset: u32 = 8;
644pub const mask: u32 = 0x03 << offset;
645pub mod R {}
646pub mod W {}
647pub mod RW {}
648 }
649#[doc = "Asynchronous Schedule Park Mode Enable - Read/Write"]
650pub mod ASPE {
651pub const offset: u32 = 11;
652pub const mask: u32 = 0x01 << offset;
653pub mod R {}
654pub mod W {}
655pub mod RW {}
656 }
657#[doc = "Setup TripWire - Read/Write"]
658pub mod SUTW {
659pub const offset: u32 = 13;
660pub const mask: u32 = 0x01 << offset;
661pub mod R {}
662pub mod W {}
663pub mod RW {}
664 }
665#[doc = "Add dTD TripWire - Read/Write"]
666pub mod ATDTW {
667pub const offset: u32 = 14;
668pub const mask: u32 = 0x01 << offset;
669pub mod R {}
670pub mod W {}
671pub mod RW {}
672 }
673#[doc = "Frame List Size - (Read/Write or Read Only)"]
674pub mod FS_2 {
675pub const offset: u32 = 15;
676pub const mask: u32 = 0x01 << offset;
677pub mod R {}
678pub mod W {}
679pub mod RW {}
680 }
681#[doc = "Interrupt Threshold Control -Read/Write"]
682pub mod ITC {
683pub const offset: u32 = 16;
684pub const mask: u32 = 0xff << offset;
685pub mod R {}
686pub mod W {}
687pub mod RW {
688#[doc = "Immediate (no threshold)"]
689pub const ITC_0: u32 = 0;
690#[doc = "1 micro-frame"]
691pub const ITC_1: u32 = 0x01;
692#[doc = "2 micro-frames"]
693pub const ITC_2: u32 = 0x02;
694#[doc = "4 micro-frames"]
695pub const ITC_4: u32 = 0x04;
696#[doc = "8 micro-frames"]
697pub const ITC_8: u32 = 0x08;
698#[doc = "16 micro-frames"]
699pub const ITC_16: u32 = 0x10;
700#[doc = "32 micro-frames"]
701pub const ITC_32: u32 = 0x20;
702#[doc = "64 micro-frames"]
703pub const ITC_64: u32 = 0x40;
704 }
705 }
706}
707#[doc = "USB Status Register"]
708pub mod USBSTS {
709#[doc = "USB Interrupt (USBINT) - R/WC"]
710pub mod UI {
711pub const offset: u32 = 0;
712pub const mask: u32 = 0x01 << offset;
713pub mod R {}
714pub mod W {}
715pub mod RW {}
716 }
717#[doc = "USB Error Interrupt (USBERRINT) - R/WC"]
718pub mod UEI {
719pub const offset: u32 = 1;
720pub const mask: u32 = 0x01 << offset;
721pub mod R {}
722pub mod W {}
723pub mod RW {}
724 }
725#[doc = "Port Change Detect - R/WC"]
726pub mod PCI {
727pub const offset: u32 = 2;
728pub const mask: u32 = 0x01 << offset;
729pub mod R {}
730pub mod W {}
731pub mod RW {}
732 }
733#[doc = "Frame List Rollover - R/WC"]
734pub mod FRI {
735pub const offset: u32 = 3;
736pub const mask: u32 = 0x01 << offset;
737pub mod R {}
738pub mod W {}
739pub mod RW {}
740 }
741#[doc = "System Error- R/WC"]
742pub mod SEI {
743pub const offset: u32 = 4;
744pub const mask: u32 = 0x01 << offset;
745pub mod R {}
746pub mod W {}
747pub mod RW {}
748 }
749#[doc = "Interrupt on Async Advance - R/WC"]
750pub mod AAI {
751pub const offset: u32 = 5;
752pub const mask: u32 = 0x01 << offset;
753pub mod R {}
754pub mod W {}
755pub mod RW {}
756 }
757#[doc = "USB Reset Received - R/WC"]
758pub mod URI {
759pub const offset: u32 = 6;
760pub const mask: u32 = 0x01 << offset;
761pub mod R {}
762pub mod W {}
763pub mod RW {}
764 }
765#[doc = "SOF Received - R/WC"]
766pub mod SRI {
767pub const offset: u32 = 7;
768pub const mask: u32 = 0x01 << offset;
769pub mod R {}
770pub mod W {}
771pub mod RW {}
772 }
773#[doc = "DCSuspend - R/WC"]
774pub mod SLI {
775pub const offset: u32 = 8;
776pub const mask: u32 = 0x01 << offset;
777pub mod R {}
778pub mod W {}
779pub mod RW {}
780 }
781#[doc = "ULPI Interrupt - R/WC"]
782pub mod ULPII {
783pub const offset: u32 = 10;
784pub const mask: u32 = 0x01 << offset;
785pub mod R {}
786pub mod W {}
787pub mod RW {}
788 }
789#[doc = "HCHaIted - Read Only"]
790pub mod HCH {
791pub const offset: u32 = 12;
792pub const mask: u32 = 0x01 << offset;
793pub mod R {}
794pub mod W {}
795pub mod RW {}
796 }
797#[doc = "Reclamation - Read Only"]
798pub mod RCL {
799pub const offset: u32 = 13;
800pub const mask: u32 = 0x01 << offset;
801pub mod R {}
802pub mod W {}
803pub mod RW {}
804 }
805#[doc = "Periodic Schedule Status - Read Only"]
806pub mod PS {
807pub const offset: u32 = 14;
808pub const mask: u32 = 0x01 << offset;
809pub mod R {}
810pub mod W {}
811pub mod RW {}
812 }
813#[doc = "Asynchronous Schedule Status - Read Only"]
814pub mod AS {
815pub const offset: u32 = 15;
816pub const mask: u32 = 0x01 << offset;
817pub mod R {}
818pub mod W {}
819pub mod RW {}
820 }
821#[doc = "NAK Interrupt Bit--RO"]
822pub mod NAKI {
823pub const offset: u32 = 16;
824pub const mask: u32 = 0x01 << offset;
825pub mod R {}
826pub mod W {}
827pub mod RW {}
828 }
829#[doc = "General Purpose Timer Interrupt 0(GPTINT0)--R/WC"]
830pub mod TI0 {
831pub const offset: u32 = 24;
832pub const mask: u32 = 0x01 << offset;
833pub mod R {}
834pub mod W {}
835pub mod RW {}
836 }
837#[doc = "General Purpose Timer Interrupt 1(GPTINT1)--R/WC"]
838pub mod TI1 {
839pub const offset: u32 = 25;
840pub const mask: u32 = 0x01 << offset;
841pub mod R {}
842pub mod W {}
843pub mod RW {}
844 }
845}
846#[doc = "Interrupt Enable Register"]
847pub mod USBINTR {
848#[doc = "USB Interrupt Enable When this bit is one and the UI bit in n_USBSTS register is a one the controller will issue an interrupt"]
849pub mod UE {
850pub const offset: u32 = 0;
851pub const mask: u32 = 0x01 << offset;
852pub mod R {}
853pub mod W {}
854pub mod RW {}
855 }
856#[doc = "USB Error Interrupt Enable When this bit is one and the UEI bit in n_USBSTS register is a one the controller will issue an interrupt"]
857pub mod UEE {
858pub const offset: u32 = 1;
859pub const mask: u32 = 0x01 << offset;
860pub mod R {}
861pub mod W {}
862pub mod RW {}
863 }
864#[doc = "Port Change Detect Interrupt Enable When this bit is one and the PCI bit in n_USBSTS register is a one the controller will issue an interrupt"]
865pub mod PCE {
866pub const offset: u32 = 2;
867pub const mask: u32 = 0x01 << offset;
868pub mod R {}
869pub mod W {}
870pub mod RW {}
871 }
872#[doc = "Frame List Rollover Interrupt Enable When this bit is one and the FRI bit in n_USBSTS register is a one the controller will issue an interrupt"]
873pub mod FRE {
874pub const offset: u32 = 3;
875pub const mask: u32 = 0x01 << offset;
876pub mod R {}
877pub mod W {}
878pub mod RW {}
879 }
880#[doc = "System Error Interrupt Enable When this bit is one and the SEI bit in n_USBSTS register is a one the controller will issue an interrupt"]
881pub mod SEE {
882pub const offset: u32 = 4;
883pub const mask: u32 = 0x01 << offset;
884pub mod R {}
885pub mod W {}
886pub mod RW {}
887 }
888#[doc = "Async Advance Interrupt Enable When this bit is one and the AAI bit in n_USBSTS register is a one the controller will issue an interrupt"]
889pub mod AAE {
890pub const offset: u32 = 5;
891pub const mask: u32 = 0x01 << offset;
892pub mod R {}
893pub mod W {}
894pub mod RW {}
895 }
896#[doc = "USB Reset Interrupt Enable When this bit is one and the URI bit in n_USBSTS register is a one the controller will issue an interrupt"]
897pub mod URE {
898pub const offset: u32 = 6;
899pub const mask: u32 = 0x01 << offset;
900pub mod R {}
901pub mod W {}
902pub mod RW {}
903 }
904#[doc = "SOF Received Interrupt Enable When this bit is one and the SRI bit in n_USBSTS register is a one the controller will issue an interrupt"]
905pub mod SRE {
906pub const offset: u32 = 7;
907pub const mask: u32 = 0x01 << offset;
908pub mod R {}
909pub mod W {}
910pub mod RW {}
911 }
912#[doc = "Sleep Interrupt Enable When this bit is one and the SLI bit in n_n_USBSTS register is a one the controller will issue an interrupt"]
913pub mod SLE {
914pub const offset: u32 = 8;
915pub const mask: u32 = 0x01 << offset;
916pub mod R {}
917pub mod W {}
918pub mod RW {}
919 }
920#[doc = "ULPI Interrupt Enable When this bit is one and the UPLII bit in n_USBSTS register is a one the controller will issue an interrupt"]
921pub mod ULPIE {
922pub const offset: u32 = 10;
923pub const mask: u32 = 0x01 << offset;
924pub mod R {}
925pub mod W {}
926pub mod RW {}
927 }
928#[doc = "NAK Interrupt Enable When this bit is one and the NAKI bit in n_USBSTS register is a one the controller will issue an interrupt"]
929pub mod NAKE {
930pub const offset: u32 = 16;
931pub const mask: u32 = 0x01 << offset;
932pub mod R {}
933pub mod W {}
934pub mod RW {}
935 }
936#[doc = "USB Host Asynchronous Interrupt Enable When this bit is one, and the UAI bit in the n_USBSTS register is one, host controller will issue an interrupt at the next interrupt threshold"]
937pub mod UAIE {
938pub const offset: u32 = 18;
939pub const mask: u32 = 0x01 << offset;
940pub mod R {}
941pub mod W {}
942pub mod RW {}
943 }
944#[doc = "USB Host Periodic Interrupt Enable When this bit is one, and the UPI bit in the n_USBSTS register is one, host controller will issue an interrupt at the next interrupt threshold"]
945pub mod UPIE {
946pub const offset: u32 = 19;
947pub const mask: u32 = 0x01 << offset;
948pub mod R {}
949pub mod W {}
950pub mod RW {}
951 }
952#[doc = "General Purpose Timer #0 Interrupt Enable When this bit is one and the TI0 bit in n_USBSTS register is a one the controller will issue an interrupt"]
953pub mod TIE0 {
954pub const offset: u32 = 24;
955pub const mask: u32 = 0x01 << offset;
956pub mod R {}
957pub mod W {}
958pub mod RW {}
959 }
960#[doc = "General Purpose Timer #1 Interrupt Enable When this bit is one and the TI1 bit in n_USBSTS register is a one the controller will issue an interrupt"]
961pub mod TIE1 {
962pub const offset: u32 = 25;
963pub const mask: u32 = 0x01 << offset;
964pub mod R {}
965pub mod W {}
966pub mod RW {}
967 }
968}
969#[doc = "USB Frame Index"]
970pub mod FRINDEX {
971#[doc = "Frame Index"]
972pub mod FRINDEX {
973pub const offset: u32 = 0;
974pub const mask: u32 = 0x3fff << offset;
975pub mod R {}
976pub mod W {}
977pub mod RW {
978#[doc = "(1024) 12"]
979pub const FRINDEX_0: u32 = 0;
980#[doc = "(512) 11"]
981pub const FRINDEX_1: u32 = 0x01;
982#[doc = "(256) 10"]
983pub const FRINDEX_2: u32 = 0x02;
984#[doc = "(128) 9"]
985pub const FRINDEX_3: u32 = 0x03;
986#[doc = "(64) 8"]
987pub const FRINDEX_4: u32 = 0x04;
988#[doc = "(32) 7"]
989pub const FRINDEX_5: u32 = 0x05;
990#[doc = "(16) 6"]
991pub const FRINDEX_6: u32 = 0x06;
992#[doc = "(8) 5"]
993pub const FRINDEX_7: u32 = 0x07;
994 }
995 }
996}
997#[doc = "Device Address"]
998pub mod DEVICEADDR {
999#[doc = "Device Address Advance"]
1000pub mod USBADRA {
1001pub const offset: u32 = 24;
1002pub const mask: u32 = 0x01 << offset;
1003pub mod R {}
1004pub mod W {}
1005pub mod RW {}
1006 }
1007#[doc = "Device Address. These bits correspond to the USB device address"]
1008pub mod USBADR {
1009pub const offset: u32 = 25;
1010pub const mask: u32 = 0x7f << offset;
1011pub mod R {}
1012pub mod W {}
1013pub mod RW {}
1014 }
1015}
1016#[doc = "Next Asynch. Address"]
1017pub mod ASYNCLISTADDR {
1018#[doc = "Link Pointer Low (LPL)"]
1019pub mod ASYBASE {
1020pub const offset: u32 = 5;
1021pub const mask: u32 = 0x07ff_ffff << offset;
1022pub mod R {}
1023pub mod W {}
1024pub mod RW {}
1025 }
1026}
1027#[doc = "Programmable Burst Size"]
1028pub mod BURSTSIZE {
1029#[doc = "Programmable RX Burst Size"]
1030pub mod RXPBURST {
1031pub const offset: u32 = 0;
1032pub const mask: u32 = 0xff << offset;
1033pub mod R {}
1034pub mod W {}
1035pub mod RW {}
1036 }
1037#[doc = "Programmable TX Burst Size"]
1038pub mod TXPBURST {
1039pub const offset: u32 = 8;
1040pub const mask: u32 = 0x01ff << offset;
1041pub mod R {}
1042pub mod W {}
1043pub mod RW {}
1044 }
1045}
1046#[doc = "TX FIFO Fill Tuning"]
1047pub mod TXFILLTUNING {
1048#[doc = "Scheduler Overhead"]
1049pub mod TXSCHOH {
1050pub const offset: u32 = 0;
1051pub const mask: u32 = 0xff << offset;
1052pub mod R {}
1053pub mod W {}
1054pub mod RW {}
1055 }
1056#[doc = "Scheduler Health Counter"]
1057pub mod TXSCHHEALTH {
1058pub const offset: u32 = 8;
1059pub const mask: u32 = 0x1f << offset;
1060pub mod R {}
1061pub mod W {}
1062pub mod RW {}
1063 }
1064#[doc = "FIFO Burst Threshold"]
1065pub mod TXFIFOTHRES {
1066pub const offset: u32 = 16;
1067pub const mask: u32 = 0x3f << offset;
1068pub mod R {}
1069pub mod W {}
1070pub mod RW {}
1071 }
1072}
1073#[doc = "Endpoint NAK"]
1074pub mod ENDPTNAK {
1075#[doc = "RX Endpoint NAK - R/WC"]
1076pub mod EPRN {
1077pub const offset: u32 = 0;
1078pub const mask: u32 = 0xff << offset;
1079pub mod R {}
1080pub mod W {}
1081pub mod RW {}
1082 }
1083#[doc = "TX Endpoint NAK - R/WC"]
1084pub mod EPTN {
1085pub const offset: u32 = 16;
1086pub const mask: u32 = 0xff << offset;
1087pub mod R {}
1088pub mod W {}
1089pub mod RW {}
1090 }
1091}
1092#[doc = "Endpoint NAK Enable"]
1093pub mod ENDPTNAKEN {
1094#[doc = "RX Endpoint NAK Enable - R/W"]
1095pub mod EPRNE {
1096pub const offset: u32 = 0;
1097pub const mask: u32 = 0xff << offset;
1098pub mod R {}
1099pub mod W {}
1100pub mod RW {}
1101 }
1102#[doc = "TX Endpoint NAK Enable - R/W"]
1103pub mod EPTNE {
1104pub const offset: u32 = 16;
1105pub const mask: u32 = 0xff << offset;
1106pub mod R {}
1107pub mod W {}
1108pub mod RW {}
1109 }
1110}
1111#[doc = "Configure Flag Register"]
1112pub mod CONFIGFLAG {
1113#[doc = "Configure Flag Host software sets this bit as the last action in its process of configuring the Host Controller"]
1114pub mod CF {
1115pub const offset: u32 = 0;
1116pub const mask: u32 = 0x01 << offset;
1117pub mod R {}
1118pub mod W {}
1119pub mod RW {
1120#[doc = "Port routing control logic default-routes each port to an implementation dependent classic host controller."]
1121pub const CF_0: u32 = 0;
1122#[doc = "Port routing control logic default-routes all ports to this host controller."]
1123pub const CF_1: u32 = 0x01;
1124 }
1125 }
1126}
1127#[doc = "Port Status & Control"]
1128pub mod PORTSC1 {
1129#[doc = "Current Connect Status-Read Only"]
1130pub mod CCS {
1131pub const offset: u32 = 0;
1132pub const mask: u32 = 0x01 << offset;
1133pub mod R {}
1134pub mod W {}
1135pub mod RW {}
1136 }
1137#[doc = "Connect Status Change-R/WC"]
1138pub mod CSC {
1139pub const offset: u32 = 1;
1140pub const mask: u32 = 0x01 << offset;
1141pub mod R {}
1142pub mod W {}
1143pub mod RW {}
1144 }
1145#[doc = "Port Enabled/Disabled-Read/Write"]
1146pub mod PE {
1147pub const offset: u32 = 2;
1148pub const mask: u32 = 0x01 << offset;
1149pub mod R {}
1150pub mod W {}
1151pub mod RW {}
1152 }
1153#[doc = "Port Enable/Disable Change-R/WC"]
1154pub mod PEC {
1155pub const offset: u32 = 3;
1156pub const mask: u32 = 0x01 << offset;
1157pub mod R {}
1158pub mod W {}
1159pub mod RW {}
1160 }
1161#[doc = "Over-current Active-Read Only"]
1162pub mod OCA {
1163pub const offset: u32 = 4;
1164pub const mask: u32 = 0x01 << offset;
1165pub mod R {}
1166pub mod W {}
1167pub mod RW {
1168#[doc = "This port does not have an over-current condition."]
1169pub const OCA_0: u32 = 0;
1170#[doc = "This port currently has an over-current condition"]
1171pub const OCA_1: u32 = 0x01;
1172 }
1173 }
1174#[doc = "Over-current Change-R/WC"]
1175pub mod OCC {
1176pub const offset: u32 = 5;
1177pub const mask: u32 = 0x01 << offset;
1178pub mod R {}
1179pub mod W {}
1180pub mod RW {}
1181 }
1182#[doc = "Force Port Resume -Read/Write"]
1183pub mod FPR {
1184pub const offset: u32 = 6;
1185pub const mask: u32 = 0x01 << offset;
1186pub mod R {}
1187pub mod W {}
1188pub mod RW {}
1189 }
1190#[doc = "Suspend - Read/Write or Read Only"]
1191pub mod SUSP {
1192pub const offset: u32 = 7;
1193pub const mask: u32 = 0x01 << offset;
1194pub mod R {}
1195pub mod W {}
1196pub mod RW {}
1197 }
1198#[doc = "Port Reset - Read/Write or Read Only"]
1199pub mod PR {
1200pub const offset: u32 = 8;
1201pub const mask: u32 = 0x01 << offset;
1202pub mod R {}
1203pub mod W {}
1204pub mod RW {}
1205 }
1206#[doc = "High-Speed Port - Read Only"]
1207pub mod HSP {
1208pub const offset: u32 = 9;
1209pub const mask: u32 = 0x01 << offset;
1210pub mod R {}
1211pub mod W {}
1212pub mod RW {}
1213 }
1214#[doc = "Line Status-Read Only"]
1215pub mod LS {
1216pub const offset: u32 = 10;
1217pub const mask: u32 = 0x03 << offset;
1218pub mod R {}
1219pub mod W {}
1220pub mod RW {
1221#[doc = "SE0"]
1222pub const LS_0: u32 = 0;
1223#[doc = "K-state"]
1224pub const LS_1: u32 = 0x01;
1225#[doc = "J-state"]
1226pub const LS_2: u32 = 0x02;
1227#[doc = "Undefined"]
1228pub const LS_3: u32 = 0x03;
1229 }
1230 }
1231#[doc = "Port Power (PP)-Read/Write or Read Only"]
1232pub mod PP {
1233pub const offset: u32 = 12;
1234pub const mask: u32 = 0x01 << offset;
1235pub mod R {}
1236pub mod W {}
1237pub mod RW {}
1238 }
1239#[doc = "Port Owner-Read/Write"]
1240pub mod PO {
1241pub const offset: u32 = 13;
1242pub const mask: u32 = 0x01 << offset;
1243pub mod R {}
1244pub mod W {}
1245pub mod RW {}
1246 }
1247#[doc = "Port Indicator Control - Read/Write"]
1248pub mod PIC {
1249pub const offset: u32 = 14;
1250pub const mask: u32 = 0x03 << offset;
1251pub mod R {}
1252pub mod W {}
1253pub mod RW {
1254#[doc = "Port indicators are off"]
1255pub const PIC_0: u32 = 0;
1256#[doc = "Amber"]
1257pub const PIC_1: u32 = 0x01;
1258#[doc = "Green"]
1259pub const PIC_2: u32 = 0x02;
1260#[doc = "Undefined"]
1261pub const PIC_3: u32 = 0x03;
1262 }
1263 }
1264#[doc = "Port Test Control - Read/Write"]
1265pub mod PTC {
1266pub const offset: u32 = 16;
1267pub const mask: u32 = 0x0f << offset;
1268pub mod R {}
1269pub mod W {}
1270pub mod RW {
1271#[doc = "TEST_MODE_DISABLE"]
1272pub const PTC_0: u32 = 0;
1273#[doc = "J_STATE"]
1274pub const PTC_1: u32 = 0x01;
1275#[doc = "K_STATE"]
1276pub const PTC_2: u32 = 0x02;
1277#[doc = "SE0 (host) / NAK (device)"]
1278pub const PTC_3: u32 = 0x03;
1279#[doc = "Packet"]
1280pub const PTC_4: u32 = 0x04;
1281#[doc = "FORCE_ENABLE_HS"]
1282pub const PTC_5: u32 = 0x05;
1283#[doc = "FORCE_ENABLE_FS"]
1284pub const PTC_6: u32 = 0x06;
1285#[doc = "FORCE_ENABLE_LS"]
1286pub const PTC_7: u32 = 0x07;
1287 }
1288 }
1289#[doc = "Wake on Connect Enable (WKCNNT_E) - Read/Write"]
1290pub mod WKCN {
1291pub const offset: u32 = 20;
1292pub const mask: u32 = 0x01 << offset;
1293pub mod R {}
1294pub mod W {}
1295pub mod RW {}
1296 }
1297#[doc = "Wake on Disconnect Enable (WKDSCNNT_E) - Read/Write"]
1298pub mod WKDC {
1299pub const offset: u32 = 21;
1300pub const mask: u32 = 0x01 << offset;
1301pub mod R {}
1302pub mod W {}
1303pub mod RW {}
1304 }
1305#[doc = "Wake on Over-current Enable (WKOC_E) - Read/Write"]
1306pub mod WKOC {
1307pub const offset: u32 = 22;
1308pub const mask: u32 = 0x01 << offset;
1309pub mod R {}
1310pub mod W {}
1311pub mod RW {}
1312 }
1313#[doc = "PHY Low Power Suspend - Clock Disable (PLPSCD) - Read/Write"]
1314pub mod PHCD {
1315pub const offset: u32 = 23;
1316pub const mask: u32 = 0x01 << offset;
1317pub mod R {}
1318pub mod W {}
1319pub mod RW {
1320#[doc = "Enable PHY clock"]
1321pub const PHCD_0: u32 = 0;
1322#[doc = "Disable PHY clock"]
1323pub const PHCD_1: u32 = 0x01;
1324 }
1325 }
1326#[doc = "Port Force Full Speed Connect - Read/Write"]
1327pub mod PFSC {
1328pub const offset: u32 = 24;
1329pub const mask: u32 = 0x01 << offset;
1330pub mod R {}
1331pub mod W {}
1332pub mod RW {
1333#[doc = "Normal operation"]
1334pub const PFSC_0: u32 = 0;
1335#[doc = "Forced to full speed"]
1336pub const PFSC_1: u32 = 0x01;
1337 }
1338 }
1339#[doc = "See description at bits 31-30"]
1340pub mod PTS_2 {
1341pub const offset: u32 = 25;
1342pub const mask: u32 = 0x01 << offset;
1343pub mod R {}
1344pub mod W {}
1345pub mod RW {}
1346 }
1347#[doc = "Port Speed - Read Only. This register field indicates the speed at which the port is operating."]
1348pub mod PSPD {
1349pub const offset: u32 = 26;
1350pub const mask: u32 = 0x03 << offset;
1351pub mod R {}
1352pub mod W {}
1353pub mod RW {
1354#[doc = "Full Speed"]
1355pub const PSPD_0: u32 = 0;
1356#[doc = "Low Speed"]
1357pub const PSPD_1: u32 = 0x01;
1358#[doc = "High Speed"]
1359pub const PSPD_2: u32 = 0x02;
1360#[doc = "Undefined"]
1361pub const PSPD_3: u32 = 0x03;
1362 }
1363 }
1364#[doc = "Parallel Transceiver Width This bit has no effect if serial interface engine is used"]
1365pub mod PTW {
1366pub const offset: u32 = 28;
1367pub const mask: u32 = 0x01 << offset;
1368pub mod R {}
1369pub mod W {}
1370pub mod RW {
1371#[doc = "Select the 8-bit UTMI interface \\[60MHz\\]"]
1372pub const PTW_0: u32 = 0;
1373#[doc = "Select the 16-bit UTMI interface \\[30MHz\\]"]
1374pub const PTW_1: u32 = 0x01;
1375 }
1376 }
1377#[doc = "Serial Transceiver Select 1 Serial Interface Engine is selected 0 Parallel Interface signals is selected Serial Interface Engine can be used in combination with UTMI+/ULPI physical interface to provide FS/LS signaling instead of the parallel interface signals"]
1378pub mod STS {
1379pub const offset: u32 = 29;
1380pub const mask: u32 = 0x01 << offset;
1381pub mod R {}
1382pub mod W {}
1383pub mod RW {}
1384 }
1385#[doc = "All USB port interface modes are listed in this field description, but not all are supported"]
1386pub mod PTS_1 {
1387pub const offset: u32 = 30;
1388pub const mask: u32 = 0x03 << offset;
1389pub mod R {}
1390pub mod W {}
1391pub mod RW {}
1392 }
1393}
1394#[doc = "On-The-Go Status & control"]
1395pub mod OTGSC {
1396#[doc = "VBUS_Discharge - Read/Write. Setting this bit causes VBus to discharge through a resistor."]
1397pub mod VD {
1398pub const offset: u32 = 0;
1399pub const mask: u32 = 0x01 << offset;
1400pub mod R {}
1401pub mod W {}
1402pub mod RW {}
1403 }
1404#[doc = "VBUS Charge - Read/Write"]
1405pub mod VC {
1406pub const offset: u32 = 1;
1407pub const mask: u32 = 0x01 << offset;
1408pub mod R {}
1409pub mod W {}
1410pub mod RW {}
1411 }
1412#[doc = "OTG Termination - Read/Write"]
1413pub mod OT {
1414pub const offset: u32 = 3;
1415pub const mask: u32 = 0x01 << offset;
1416pub mod R {}
1417pub mod W {}
1418pub mod RW {}
1419 }
1420#[doc = "Data Pulsing - Read/Write"]
1421pub mod DP {
1422pub const offset: u32 = 4;
1423pub const mask: u32 = 0x01 << offset;
1424pub mod R {}
1425pub mod W {}
1426pub mod RW {}
1427 }
1428#[doc = "ID Pullup - Read/Write This bit provide control over the ID pull-up resistor; 0 = off, 1 = on \\[default\\]"]
1429pub mod IDPU {
1430pub const offset: u32 = 5;
1431pub const mask: u32 = 0x01 << offset;
1432pub mod R {}
1433pub mod W {}
1434pub mod RW {}
1435 }
1436#[doc = "USB ID - Read Only. 0 = A device, 1 = B device"]
1437pub mod ID {
1438pub const offset: u32 = 8;
1439pub const mask: u32 = 0x01 << offset;
1440pub mod R {}
1441pub mod W {}
1442pub mod RW {}
1443 }
1444#[doc = "A VBus Valid - Read Only. Indicates VBus is above the A VBus valid threshold."]
1445pub mod AVV {
1446pub const offset: u32 = 9;
1447pub const mask: u32 = 0x01 << offset;
1448pub mod R {}
1449pub mod W {}
1450pub mod RW {}
1451 }
1452#[doc = "A Session Valid - Read Only. Indicates VBus is above the A session valid threshold."]
1453pub mod ASV {
1454pub const offset: u32 = 10;
1455pub const mask: u32 = 0x01 << offset;
1456pub mod R {}
1457pub mod W {}
1458pub mod RW {}
1459 }
1460#[doc = "B Session Valid - Read Only. Indicates VBus is above the B session valid threshold."]
1461pub mod BSV {
1462pub const offset: u32 = 11;
1463pub const mask: u32 = 0x01 << offset;
1464pub mod R {}
1465pub mod W {}
1466pub mod RW {}
1467 }
1468#[doc = "B Session End - Read Only. Indicates VBus is below the B session end threshold."]
1469pub mod BSE {
1470pub const offset: u32 = 12;
1471pub const mask: u32 = 0x01 << offset;
1472pub mod R {}
1473pub mod W {}
1474pub mod RW {}
1475 }
1476#[doc = "1 millisecond timer toggle - Read Only. This bit toggles once per millisecond."]
1477pub mod TOG_1MS {
1478pub const offset: u32 = 13;
1479pub const mask: u32 = 0x01 << offset;
1480pub mod R {}
1481pub mod W {}
1482pub mod RW {}
1483 }
1484#[doc = "Data Bus Pulsing Status - Read Only"]
1485pub mod DPS {
1486pub const offset: u32 = 14;
1487pub const mask: u32 = 0x01 << offset;
1488pub mod R {}
1489pub mod W {}
1490pub mod RW {}
1491 }
1492#[doc = "USB ID Interrupt Status - Read/Write"]
1493pub mod IDIS {
1494pub const offset: u32 = 16;
1495pub const mask: u32 = 0x01 << offset;
1496pub mod R {}
1497pub mod W {}
1498pub mod RW {}
1499 }
1500#[doc = "A VBus Valid Interrupt Status - Read/Write to Clear"]
1501pub mod AVVIS {
1502pub const offset: u32 = 17;
1503pub const mask: u32 = 0x01 << offset;
1504pub mod R {}
1505pub mod W {}
1506pub mod RW {}
1507 }
1508#[doc = "A Session Valid Interrupt Status - Read/Write to Clear"]
1509pub mod ASVIS {
1510pub const offset: u32 = 18;
1511pub const mask: u32 = 0x01 << offset;
1512pub mod R {}
1513pub mod W {}
1514pub mod RW {}
1515 }
1516#[doc = "B Session Valid Interrupt Status - Read/Write to Clear"]
1517pub mod BSVIS {
1518pub const offset: u32 = 19;
1519pub const mask: u32 = 0x01 << offset;
1520pub mod R {}
1521pub mod W {}
1522pub mod RW {}
1523 }
1524#[doc = "B Session End Interrupt Status - Read/Write to Clear"]
1525pub mod BSEIS {
1526pub const offset: u32 = 20;
1527pub const mask: u32 = 0x01 << offset;
1528pub mod R {}
1529pub mod W {}
1530pub mod RW {}
1531 }
1532#[doc = "1 millisecond timer Interrupt Status - Read/Write to Clear"]
1533pub mod STATUS_1MS {
1534pub const offset: u32 = 21;
1535pub const mask: u32 = 0x01 << offset;
1536pub mod R {}
1537pub mod W {}
1538pub mod RW {}
1539 }
1540#[doc = "Data Pulse Interrupt Status - Read/Write to Clear"]
1541pub mod DPIS {
1542pub const offset: u32 = 22;
1543pub const mask: u32 = 0x01 << offset;
1544pub mod R {}
1545pub mod W {}
1546pub mod RW {}
1547 }
1548#[doc = "USB ID Interrupt Enable - Read/Write. Setting this bit enables the USB ID interrupt."]
1549pub mod IDIE {
1550pub const offset: u32 = 24;
1551pub const mask: u32 = 0x01 << offset;
1552pub mod R {}
1553pub mod W {}
1554pub mod RW {}
1555 }
1556#[doc = "A VBus Valid Interrupt Enable - Read/Write. Setting this bit enables the A VBus valid interrupt."]
1557pub mod AVVIE {
1558pub const offset: u32 = 25;
1559pub const mask: u32 = 0x01 << offset;
1560pub mod R {}
1561pub mod W {}
1562pub mod RW {}
1563 }
1564#[doc = "A Session Valid Interrupt Enable - Read/Write"]
1565pub mod ASVIE {
1566pub const offset: u32 = 26;
1567pub const mask: u32 = 0x01 << offset;
1568pub mod R {}
1569pub mod W {}
1570pub mod RW {}
1571 }
1572#[doc = "B Session Valid Interrupt Enable - Read/Write"]
1573pub mod BSVIE {
1574pub const offset: u32 = 27;
1575pub const mask: u32 = 0x01 << offset;
1576pub mod R {}
1577pub mod W {}
1578pub mod RW {}
1579 }
1580#[doc = "B Session End Interrupt Enable - Read/Write. Setting this bit enables the B session end interrupt."]
1581pub mod BSEIE {
1582pub const offset: u32 = 28;
1583pub const mask: u32 = 0x01 << offset;
1584pub mod R {}
1585pub mod W {}
1586pub mod RW {}
1587 }
1588#[doc = "1 millisecond timer Interrupt Enable - Read/Write"]
1589pub mod EN_1MS {
1590pub const offset: u32 = 29;
1591pub const mask: u32 = 0x01 << offset;
1592pub mod R {}
1593pub mod W {}
1594pub mod RW {}
1595 }
1596#[doc = "Data Pulse Interrupt Enable"]
1597pub mod DPIE {
1598pub const offset: u32 = 30;
1599pub const mask: u32 = 0x01 << offset;
1600pub mod R {}
1601pub mod W {}
1602pub mod RW {}
1603 }
1604}
1605#[doc = "USB Device Mode"]
1606pub mod USBMODE {
1607#[doc = "Controller Mode - R/WO"]
1608pub mod CM {
1609pub const offset: u32 = 0;
1610pub const mask: u32 = 0x03 << offset;
1611pub mod R {}
1612pub mod W {}
1613pub mod RW {
1614#[doc = "Idle \\[Default for combination host/device\\]"]
1615pub const CM_0: u32 = 0;
1616#[doc = "Device Controller \\[Default for device only controller\\]"]
1617pub const CM_2: u32 = 0x02;
1618#[doc = "Host Controller \\[Default for host only controller\\]"]
1619pub const CM_3: u32 = 0x03;
1620 }
1621 }
1622#[doc = "Endian Select - Read/Write"]
1623pub mod ES {
1624pub const offset: u32 = 2;
1625pub const mask: u32 = 0x01 << offset;
1626pub mod R {}
1627pub mod W {}
1628pub mod RW {
1629#[doc = "Little Endian \\[Default\\]"]
1630pub const ES_0: u32 = 0;
1631#[doc = "Big Endian"]
1632pub const ES_1: u32 = 0x01;
1633 }
1634 }
1635#[doc = "Setup Lockout Mode"]
1636pub mod SLOM {
1637pub const offset: u32 = 3;
1638pub const mask: u32 = 0x01 << offset;
1639pub mod R {}
1640pub mod W {}
1641pub mod RW {
1642#[doc = "Setup Lockouts On (default);"]
1643pub const SLOM_0: u32 = 0;
1644#[doc = "Setup Lockouts Off (DCD requires use of Setup Data Buffer Tripwire in USBCMDUSB Command Register ."]
1645pub const SLOM_1: u32 = 0x01;
1646 }
1647 }
1648#[doc = "Stream Disable Mode"]
1649pub mod SDIS {
1650pub const offset: u32 = 4;
1651pub const mask: u32 = 0x01 << offset;
1652pub mod R {}
1653pub mod W {}
1654pub mod RW {}
1655 }
1656}
1657#[doc = "Endpoint Setup Status"]
1658pub mod ENDPTSETUPSTAT {
1659#[doc = "Setup Endpoint Status"]
1660pub mod ENDPTSETUPSTAT {
1661pub const offset: u32 = 0;
1662pub const mask: u32 = 0xffff << offset;
1663pub mod R {}
1664pub mod W {}
1665pub mod RW {}
1666 }
1667}
1668#[doc = "Endpoint Prime"]
1669pub mod ENDPTPRIME {
1670#[doc = "Prime Endpoint Receive Buffer - R/WS"]
1671pub mod PERB {
1672pub const offset: u32 = 0;
1673pub const mask: u32 = 0xff << offset;
1674pub mod R {}
1675pub mod W {}
1676pub mod RW {}
1677 }
1678#[doc = "Prime Endpoint Transmit Buffer - R/WS"]
1679pub mod PETB {
1680pub const offset: u32 = 16;
1681pub const mask: u32 = 0xff << offset;
1682pub mod R {}
1683pub mod W {}
1684pub mod RW {}
1685 }
1686}
1687#[doc = "Endpoint Flush"]
1688pub mod ENDPTFLUSH {
1689#[doc = "Flush Endpoint Receive Buffer - R/WS"]
1690pub mod FERB {
1691pub const offset: u32 = 0;
1692pub const mask: u32 = 0xff << offset;
1693pub mod R {}
1694pub mod W {}
1695pub mod RW {}
1696 }
1697#[doc = "Flush Endpoint Transmit Buffer - R/WS"]
1698pub mod FETB {
1699pub const offset: u32 = 16;
1700pub const mask: u32 = 0xff << offset;
1701pub mod R {}
1702pub mod W {}
1703pub mod RW {}
1704 }
1705}
1706#[doc = "Endpoint Status"]
1707pub mod ENDPTSTAT {
1708#[doc = "Endpoint Receive Buffer Ready -- Read Only"]
1709pub mod ERBR {
1710pub const offset: u32 = 0;
1711pub const mask: u32 = 0xff << offset;
1712pub mod R {}
1713pub mod W {}
1714pub mod RW {}
1715 }
1716#[doc = "Endpoint Transmit Buffer Ready -- Read Only"]
1717pub mod ETBR {
1718pub const offset: u32 = 16;
1719pub const mask: u32 = 0xff << offset;
1720pub mod R {}
1721pub mod W {}
1722pub mod RW {}
1723 }
1724}
1725#[doc = "Endpoint Complete"]
1726pub mod ENDPTCOMPLETE {
1727#[doc = "Endpoint Receive Complete Event - RW/C"]
1728pub mod ERCE {
1729pub const offset: u32 = 0;
1730pub const mask: u32 = 0xff << offset;
1731pub mod R {}
1732pub mod W {}
1733pub mod RW {}
1734 }
1735#[doc = "Endpoint Transmit Complete Event - R/WC"]
1736pub mod ETCE {
1737pub const offset: u32 = 16;
1738pub const mask: u32 = 0xff << offset;
1739pub mod R {}
1740pub mod W {}
1741pub mod RW {}
1742 }
1743}
1744#[doc = "Endpoint Control0"]
1745pub mod ENDPTCTRL0 {
1746#[doc = "RX Endpoint Stall - Read/Write 0 End Point OK"]
1747pub mod RXS {
1748pub const offset: u32 = 0;
1749pub const mask: u32 = 0x01 << offset;
1750pub mod R {}
1751pub mod W {}
1752pub mod RW {}
1753 }
1754#[doc = "RX Endpoint Type - Read/Write 00 Control Endpoint0 is fixed as a Control End Point."]
1755pub mod RXT {
1756pub const offset: u32 = 2;
1757pub const mask: u32 = 0x03 << offset;
1758pub mod R {}
1759pub mod W {}
1760pub mod RW {}
1761 }
1762#[doc = "RX Endpoint Enable 1 Enabled Endpoint0 is always enabled."]
1763pub mod RXE {
1764pub const offset: u32 = 7;
1765pub const mask: u32 = 0x01 << offset;
1766pub mod R {}
1767pub mod W {}
1768pub mod RW {}
1769 }
1770#[doc = "TX Endpoint Stall - Read/Write 0 End Point OK \\[Default\\] 1 End Point Stalled Software can write a one to this bit to force the endpoint to return a STALL handshake to the Host"]
1771pub mod TXS {
1772pub const offset: u32 = 16;
1773pub const mask: u32 = 0x01 << offset;
1774pub mod R {}
1775pub mod W {}
1776pub mod RW {}
1777 }
1778#[doc = "TX Endpoint Type - Read/Write 00 - Control Endpoint0 is fixed as a Control End Point."]
1779pub mod TXT {
1780pub const offset: u32 = 18;
1781pub const mask: u32 = 0x03 << offset;
1782pub mod R {}
1783pub mod W {}
1784pub mod RW {}
1785 }
1786#[doc = "TX Endpoint Enable 1 Enabled Endpoint0 is always enabled."]
1787pub mod TXE {
1788pub const offset: u32 = 23;
1789pub const mask: u32 = 0x01 << offset;
1790pub mod R {}
1791pub mod W {}
1792pub mod RW {}
1793 }
1794}
1795#[doc = "Endpoint Control"]
1796pub mod ENDPTCTRL {
1797#[doc = "RX Endpoint Stall - Read/Write 0 End Point OK"]
1798pub mod RXS {
1799pub const offset: u32 = 0;
1800pub const mask: u32 = 0x01 << offset;
1801pub mod R {}
1802pub mod W {}
1803pub mod RW {}
1804 }
1805#[doc = "RX Endpoint Data Sink - Read/Write 0 Dual Port Memory Buffer/DMA Engine \\[Default\\] Should always be written as zero"]
1806pub mod RXD {
1807pub const offset: u32 = 1;
1808pub const mask: u32 = 0x01 << offset;
1809pub mod R {}
1810pub mod W {}
1811pub mod RW {}
1812 }
1813#[doc = "RX Endpoint Type - Read/Write 00 Control 01 Isochronous 10 Bulk 11 Interrupt"]
1814pub mod RXT {
1815pub const offset: u32 = 2;
1816pub const mask: u32 = 0x03 << offset;
1817pub mod R {}
1818pub mod W {}
1819pub mod RW {}
1820 }
1821#[doc = "RX Data Toggle Inhibit 0 Disabled \\[Default\\] 1 Enabled This bit is only used for test and should always be written as zero"]
1822pub mod RXI {
1823pub const offset: u32 = 5;
1824pub const mask: u32 = 0x01 << offset;
1825pub mod R {}
1826pub mod W {}
1827pub mod RW {}
1828 }
1829#[doc = "RX Data Toggle Reset (WS) Write 1 - Reset PID Sequence Whenever a configuration event is received for this Endpoint, software must write a one to this bit in order to synchronize the data PID's between the host and device"]
1830pub mod RXR {
1831pub const offset: u32 = 6;
1832pub const mask: u32 = 0x01 << offset;
1833pub mod R {}
1834pub mod W {}
1835pub mod RW {}
1836 }
1837#[doc = "RX Endpoint Enable 0 Disabled \\[Default\\] 1 Enabled An Endpoint should be enabled only after it has been configured"]
1838pub mod RXE {
1839pub const offset: u32 = 7;
1840pub const mask: u32 = 0x01 << offset;
1841pub mod R {}
1842pub mod W {}
1843pub mod RW {}
1844 }
1845#[doc = "TX Endpoint Stall - Read/Write 0 End Point OK 1 End Point Stalled This bit will be cleared automatically upon receipt of a SETUP request if this Endpoint is configured as a Control Endpoint and this bit will continue to be cleared by hardware until the associated ENDPTSETUPSTAT bit is cleared"]
1846pub mod TXS {
1847pub const offset: u32 = 16;
1848pub const mask: u32 = 0x01 << offset;
1849pub mod R {}
1850pub mod W {}
1851pub mod RW {}
1852 }
1853#[doc = "TX Endpoint Data Source - Read/Write 0 Dual Port Memory Buffer/DMA Engine \\[DEFAULT\\] Should always be written as 0"]
1854pub mod TXD {
1855pub const offset: u32 = 17;
1856pub const mask: u32 = 0x01 << offset;
1857pub mod R {}
1858pub mod W {}
1859pub mod RW {}
1860 }
1861#[doc = "TX Endpoint Type - Read/Write 00 Control 01 Isochronous 10 Bulk 11 Interrupt"]
1862pub mod TXT {
1863pub const offset: u32 = 18;
1864pub const mask: u32 = 0x03 << offset;
1865pub mod R {}
1866pub mod W {}
1867pub mod RW {}
1868 }
1869#[doc = "TX Data Toggle Inhibit 0 PID Sequencing Enabled"]
1870pub mod TXI {
1871pub const offset: u32 = 21;
1872pub const mask: u32 = 0x01 << offset;
1873pub mod R {}
1874pub mod W {}
1875pub mod RW {}
1876 }
1877#[doc = "TX Data Toggle Reset (WS) Write 1 - Reset PID Sequence Whenever a configuration event is received for this Endpoint, software must write a one to this bit in order to synchronize the data PID's between the Host and device"]
1878pub mod TXR {
1879pub const offset: u32 = 22;
1880pub const mask: u32 = 0x01 << offset;
1881pub mod R {}
1882pub mod W {}
1883pub mod RW {}
1884 }
1885#[doc = "TX Endpoint Enable 0 Disabled \\[Default\\] 1 Enabled An Endpoint should be enabled only after it has been configured"]
1886pub mod TXE {
1887pub const offset: u32 = 23;
1888pub const mask: u32 = 0x01 << offset;
1889pub mod R {}
1890pub mod W {}
1891pub mod RW {}
1892 }
1893}