moondancer_pac/
generated.rs

1#![doc = "Peripheral access API for SOC microcontrollers (generated using svd2rust v0.35.0 ( ))\n\nYou can find an overview of the generated API [here].\n\nAPI features to be included in the [next]
2svd2rust release can be generated by cloning the svd2rust [repository], checking out the above commit, and running `cargo doc --open`.\n\n[here]: https://docs.rs/svd2rust/0.35.0/svd2rust/#peripheral-api\n[next]: https://github.com/rust-embedded/svd2rust/blob/master/CHANGELOG.md#unreleased\n[repository]: https://github.com/rust-embedded/svd2rust"]
3use core::marker::PhantomData;
4use core::ops::Deref;
5#[allow(unused_imports)]
6use generic::*;
7#[doc = r"Common register and bit access and modify traits"]
8pub mod generic;
9#[cfg(feature = "rt")]
10extern "C" {
11    fn TIMER0();
12    fn TIMER1();
13    fn USB0();
14    fn USB0_EP_CONTROL();
15    fn USB0_EP_IN();
16    fn USB0_EP_OUT();
17    fn USB1();
18    fn USB1_EP_CONTROL();
19    fn USB1_EP_IN();
20    fn USB1_EP_OUT();
21    fn USB2();
22    fn USB2_EP_CONTROL();
23    fn USB2_EP_IN();
24    fn USB2_EP_OUT();
25}
26#[doc(hidden)]
27#[repr(C)]
28pub union Vector {
29    pub _handler: unsafe extern "C" fn(),
30    pub _reserved: usize,
31}
32#[cfg(feature = "rt")]
33#[doc(hidden)]
34#[no_mangle]
35pub static __EXTERNAL_INTERRUPTS: [Vector; 14] = [
36    Vector { _handler: TIMER0 },
37    Vector { _handler: TIMER1 },
38    Vector { _handler: USB0 },
39    Vector {
40        _handler: USB0_EP_CONTROL,
41    },
42    Vector {
43        _handler: USB0_EP_IN,
44    },
45    Vector {
46        _handler: USB0_EP_OUT,
47    },
48    Vector { _handler: USB1 },
49    Vector {
50        _handler: USB1_EP_CONTROL,
51    },
52    Vector {
53        _handler: USB1_EP_IN,
54    },
55    Vector {
56        _handler: USB1_EP_OUT,
57    },
58    Vector { _handler: USB2 },
59    Vector {
60        _handler: USB2_EP_CONTROL,
61    },
62    Vector {
63        _handler: USB2_EP_IN,
64    },
65    Vector {
66        _handler: USB2_EP_OUT,
67    },
68];
69#[doc(hidden)]
70pub mod interrupt;
71pub use self::interrupt::Interrupt;
72#[doc = "leds"]
73pub struct LEDS {
74    _marker: PhantomData<*const ()>,
75}
76unsafe impl Send for LEDS {}
77impl LEDS {
78    #[doc = r"Pointer to the register block"]
79    pub const PTR: *const leds::RegisterBlock = 0xf000_0000 as *const _;
80    #[doc = r"Return the pointer to the register block"]
81    #[inline(always)]
82    pub const fn ptr() -> *const leds::RegisterBlock {
83        Self::PTR
84    }
85    #[doc = r" Steal an instance of this peripheral"]
86    #[doc = r""]
87    #[doc = r" # Safety"]
88    #[doc = r""]
89    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
90    #[doc = r" that may race with any existing instances, for example by only"]
91    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
92    #[doc = r" original peripheral and using critical sections to coordinate"]
93    #[doc = r" access between multiple new instances."]
94    #[doc = r""]
95    #[doc = r" Additionally, other software such as HALs may rely on only one"]
96    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
97    #[doc = r" no stolen instances are passed to such software."]
98    pub unsafe fn steal() -> Self {
99        Self {
100            _marker: PhantomData,
101        }
102    }
103}
104impl Deref for LEDS {
105    type Target = leds::RegisterBlock;
106    #[inline(always)]
107    fn deref(&self) -> &Self::Target {
108        unsafe { &*Self::PTR }
109    }
110}
111impl core::fmt::Debug for LEDS {
112    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
113        f.debug_struct("LEDS").finish()
114    }
115}
116#[doc = "leds"]
117pub mod leds;
118#[doc = "gpio0"]
119pub struct GPIO0 {
120    _marker: PhantomData<*const ()>,
121}
122unsafe impl Send for GPIO0 {}
123impl GPIO0 {
124    #[doc = r"Pointer to the register block"]
125    pub const PTR: *const gpio0::RegisterBlock = 0xf000_0100 as *const _;
126    #[doc = r"Return the pointer to the register block"]
127    #[inline(always)]
128    pub const fn ptr() -> *const gpio0::RegisterBlock {
129        Self::PTR
130    }
131    #[doc = r" Steal an instance of this peripheral"]
132    #[doc = r""]
133    #[doc = r" # Safety"]
134    #[doc = r""]
135    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
136    #[doc = r" that may race with any existing instances, for example by only"]
137    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
138    #[doc = r" original peripheral and using critical sections to coordinate"]
139    #[doc = r" access between multiple new instances."]
140    #[doc = r""]
141    #[doc = r" Additionally, other software such as HALs may rely on only one"]
142    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
143    #[doc = r" no stolen instances are passed to such software."]
144    pub unsafe fn steal() -> Self {
145        Self {
146            _marker: PhantomData,
147        }
148    }
149}
150impl Deref for GPIO0 {
151    type Target = gpio0::RegisterBlock;
152    #[inline(always)]
153    fn deref(&self) -> &Self::Target {
154        unsafe { &*Self::PTR }
155    }
156}
157impl core::fmt::Debug for GPIO0 {
158    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
159        f.debug_struct("GPIO0").finish()
160    }
161}
162#[doc = "gpio0"]
163pub mod gpio0;
164#[doc = "gpio1"]
165pub struct GPIO1 {
166    _marker: PhantomData<*const ()>,
167}
168unsafe impl Send for GPIO1 {}
169impl GPIO1 {
170    #[doc = r"Pointer to the register block"]
171    pub const PTR: *const gpio1::RegisterBlock = 0xf000_0200 as *const _;
172    #[doc = r"Return the pointer to the register block"]
173    #[inline(always)]
174    pub const fn ptr() -> *const gpio1::RegisterBlock {
175        Self::PTR
176    }
177    #[doc = r" Steal an instance of this peripheral"]
178    #[doc = r""]
179    #[doc = r" # Safety"]
180    #[doc = r""]
181    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
182    #[doc = r" that may race with any existing instances, for example by only"]
183    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
184    #[doc = r" original peripheral and using critical sections to coordinate"]
185    #[doc = r" access between multiple new instances."]
186    #[doc = r""]
187    #[doc = r" Additionally, other software such as HALs may rely on only one"]
188    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
189    #[doc = r" no stolen instances are passed to such software."]
190    pub unsafe fn steal() -> Self {
191        Self {
192            _marker: PhantomData,
193        }
194    }
195}
196impl Deref for GPIO1 {
197    type Target = gpio1::RegisterBlock;
198    #[inline(always)]
199    fn deref(&self) -> &Self::Target {
200        unsafe { &*Self::PTR }
201    }
202}
203impl core::fmt::Debug for GPIO1 {
204    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
205        f.debug_struct("GPIO1").finish()
206    }
207}
208#[doc = "gpio1"]
209pub mod gpio1;
210#[doc = "uart0"]
211pub struct UART0 {
212    _marker: PhantomData<*const ()>,
213}
214unsafe impl Send for UART0 {}
215impl UART0 {
216    #[doc = r"Pointer to the register block"]
217    pub const PTR: *const uart0::RegisterBlock = 0xf000_0300 as *const _;
218    #[doc = r"Return the pointer to the register block"]
219    #[inline(always)]
220    pub const fn ptr() -> *const uart0::RegisterBlock {
221        Self::PTR
222    }
223    #[doc = r" Steal an instance of this peripheral"]
224    #[doc = r""]
225    #[doc = r" # Safety"]
226    #[doc = r""]
227    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
228    #[doc = r" that may race with any existing instances, for example by only"]
229    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
230    #[doc = r" original peripheral and using critical sections to coordinate"]
231    #[doc = r" access between multiple new instances."]
232    #[doc = r""]
233    #[doc = r" Additionally, other software such as HALs may rely on only one"]
234    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
235    #[doc = r" no stolen instances are passed to such software."]
236    pub unsafe fn steal() -> Self {
237        Self {
238            _marker: PhantomData,
239        }
240    }
241}
242impl Deref for UART0 {
243    type Target = uart0::RegisterBlock;
244    #[inline(always)]
245    fn deref(&self) -> &Self::Target {
246        unsafe { &*Self::PTR }
247    }
248}
249impl core::fmt::Debug for UART0 {
250    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
251        f.debug_struct("UART0").finish()
252    }
253}
254#[doc = "uart0"]
255pub mod uart0;
256#[doc = "uart1"]
257pub struct UART1 {
258    _marker: PhantomData<*const ()>,
259}
260unsafe impl Send for UART1 {}
261impl UART1 {
262    #[doc = r"Pointer to the register block"]
263    pub const PTR: *const uart1::RegisterBlock = 0xf000_0400 as *const _;
264    #[doc = r"Return the pointer to the register block"]
265    #[inline(always)]
266    pub const fn ptr() -> *const uart1::RegisterBlock {
267        Self::PTR
268    }
269    #[doc = r" Steal an instance of this peripheral"]
270    #[doc = r""]
271    #[doc = r" # Safety"]
272    #[doc = r""]
273    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
274    #[doc = r" that may race with any existing instances, for example by only"]
275    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
276    #[doc = r" original peripheral and using critical sections to coordinate"]
277    #[doc = r" access between multiple new instances."]
278    #[doc = r""]
279    #[doc = r" Additionally, other software such as HALs may rely on only one"]
280    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
281    #[doc = r" no stolen instances are passed to such software."]
282    pub unsafe fn steal() -> Self {
283        Self {
284            _marker: PhantomData,
285        }
286    }
287}
288impl Deref for UART1 {
289    type Target = uart1::RegisterBlock;
290    #[inline(always)]
291    fn deref(&self) -> &Self::Target {
292        unsafe { &*Self::PTR }
293    }
294}
295impl core::fmt::Debug for UART1 {
296    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
297        f.debug_struct("UART1").finish()
298    }
299}
300#[doc = "uart1"]
301pub mod uart1;
302#[doc = "timer0"]
303pub struct TIMER0 {
304    _marker: PhantomData<*const ()>,
305}
306unsafe impl Send for TIMER0 {}
307impl TIMER0 {
308    #[doc = r"Pointer to the register block"]
309    pub const PTR: *const timer0::RegisterBlock = 0xf000_0500 as *const _;
310    #[doc = r"Return the pointer to the register block"]
311    #[inline(always)]
312    pub const fn ptr() -> *const timer0::RegisterBlock {
313        Self::PTR
314    }
315    #[doc = r" Steal an instance of this peripheral"]
316    #[doc = r""]
317    #[doc = r" # Safety"]
318    #[doc = r""]
319    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
320    #[doc = r" that may race with any existing instances, for example by only"]
321    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
322    #[doc = r" original peripheral and using critical sections to coordinate"]
323    #[doc = r" access between multiple new instances."]
324    #[doc = r""]
325    #[doc = r" Additionally, other software such as HALs may rely on only one"]
326    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
327    #[doc = r" no stolen instances are passed to such software."]
328    pub unsafe fn steal() -> Self {
329        Self {
330            _marker: PhantomData,
331        }
332    }
333}
334impl Deref for TIMER0 {
335    type Target = timer0::RegisterBlock;
336    #[inline(always)]
337    fn deref(&self) -> &Self::Target {
338        unsafe { &*Self::PTR }
339    }
340}
341impl core::fmt::Debug for TIMER0 {
342    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
343        f.debug_struct("TIMER0").finish()
344    }
345}
346#[doc = "timer0"]
347pub mod timer0;
348#[doc = "timer1"]
349pub struct TIMER1 {
350    _marker: PhantomData<*const ()>,
351}
352unsafe impl Send for TIMER1 {}
353impl TIMER1 {
354    #[doc = r"Pointer to the register block"]
355    pub const PTR: *const timer1::RegisterBlock = 0xf000_0600 as *const _;
356    #[doc = r"Return the pointer to the register block"]
357    #[inline(always)]
358    pub const fn ptr() -> *const timer1::RegisterBlock {
359        Self::PTR
360    }
361    #[doc = r" Steal an instance of this peripheral"]
362    #[doc = r""]
363    #[doc = r" # Safety"]
364    #[doc = r""]
365    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
366    #[doc = r" that may race with any existing instances, for example by only"]
367    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
368    #[doc = r" original peripheral and using critical sections to coordinate"]
369    #[doc = r" access between multiple new instances."]
370    #[doc = r""]
371    #[doc = r" Additionally, other software such as HALs may rely on only one"]
372    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
373    #[doc = r" no stolen instances are passed to such software."]
374    pub unsafe fn steal() -> Self {
375        Self {
376            _marker: PhantomData,
377        }
378    }
379}
380impl Deref for TIMER1 {
381    type Target = timer1::RegisterBlock;
382    #[inline(always)]
383    fn deref(&self) -> &Self::Target {
384        unsafe { &*Self::PTR }
385    }
386}
387impl core::fmt::Debug for TIMER1 {
388    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
389        f.debug_struct("TIMER1").finish()
390    }
391}
392#[doc = "timer1"]
393pub mod timer1;
394#[doc = "spi0"]
395pub struct SPI0 {
396    _marker: PhantomData<*const ()>,
397}
398unsafe impl Send for SPI0 {}
399impl SPI0 {
400    #[doc = r"Pointer to the register block"]
401    pub const PTR: *const spi0::RegisterBlock = 0xf000_0700 as *const _;
402    #[doc = r"Return the pointer to the register block"]
403    #[inline(always)]
404    pub const fn ptr() -> *const spi0::RegisterBlock {
405        Self::PTR
406    }
407    #[doc = r" Steal an instance of this peripheral"]
408    #[doc = r""]
409    #[doc = r" # Safety"]
410    #[doc = r""]
411    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
412    #[doc = r" that may race with any existing instances, for example by only"]
413    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
414    #[doc = r" original peripheral and using critical sections to coordinate"]
415    #[doc = r" access between multiple new instances."]
416    #[doc = r""]
417    #[doc = r" Additionally, other software such as HALs may rely on only one"]
418    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
419    #[doc = r" no stolen instances are passed to such software."]
420    pub unsafe fn steal() -> Self {
421        Self {
422            _marker: PhantomData,
423        }
424    }
425}
426impl Deref for SPI0 {
427    type Target = spi0::RegisterBlock;
428    #[inline(always)]
429    fn deref(&self) -> &Self::Target {
430        unsafe { &*Self::PTR }
431    }
432}
433impl core::fmt::Debug for SPI0 {
434    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
435        f.debug_struct("SPI0").finish()
436    }
437}
438#[doc = "spi0"]
439pub mod spi0;
440#[doc = "usb0"]
441pub struct USB0 {
442    _marker: PhantomData<*const ()>,
443}
444unsafe impl Send for USB0 {}
445impl USB0 {
446    #[doc = r"Pointer to the register block"]
447    pub const PTR: *const usb0::RegisterBlock = 0xf000_0800 as *const _;
448    #[doc = r"Return the pointer to the register block"]
449    #[inline(always)]
450    pub const fn ptr() -> *const usb0::RegisterBlock {
451        Self::PTR
452    }
453    #[doc = r" Steal an instance of this peripheral"]
454    #[doc = r""]
455    #[doc = r" # Safety"]
456    #[doc = r""]
457    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
458    #[doc = r" that may race with any existing instances, for example by only"]
459    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
460    #[doc = r" original peripheral and using critical sections to coordinate"]
461    #[doc = r" access between multiple new instances."]
462    #[doc = r""]
463    #[doc = r" Additionally, other software such as HALs may rely on only one"]
464    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
465    #[doc = r" no stolen instances are passed to such software."]
466    pub unsafe fn steal() -> Self {
467        Self {
468            _marker: PhantomData,
469        }
470    }
471}
472impl Deref for USB0 {
473    type Target = usb0::RegisterBlock;
474    #[inline(always)]
475    fn deref(&self) -> &Self::Target {
476        unsafe { &*Self::PTR }
477    }
478}
479impl core::fmt::Debug for USB0 {
480    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
481        f.debug_struct("USB0").finish()
482    }
483}
484#[doc = "usb0"]
485pub mod usb0;
486#[doc = "usb0_ep_control"]
487pub struct USB0_EP_CONTROL {
488    _marker: PhantomData<*const ()>,
489}
490unsafe impl Send for USB0_EP_CONTROL {}
491impl USB0_EP_CONTROL {
492    #[doc = r"Pointer to the register block"]
493    pub const PTR: *const usb0_ep_control::RegisterBlock = 0xf000_0900 as *const _;
494    #[doc = r"Return the pointer to the register block"]
495    #[inline(always)]
496    pub const fn ptr() -> *const usb0_ep_control::RegisterBlock {
497        Self::PTR
498    }
499    #[doc = r" Steal an instance of this peripheral"]
500    #[doc = r""]
501    #[doc = r" # Safety"]
502    #[doc = r""]
503    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
504    #[doc = r" that may race with any existing instances, for example by only"]
505    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
506    #[doc = r" original peripheral and using critical sections to coordinate"]
507    #[doc = r" access between multiple new instances."]
508    #[doc = r""]
509    #[doc = r" Additionally, other software such as HALs may rely on only one"]
510    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
511    #[doc = r" no stolen instances are passed to such software."]
512    pub unsafe fn steal() -> Self {
513        Self {
514            _marker: PhantomData,
515        }
516    }
517}
518impl Deref for USB0_EP_CONTROL {
519    type Target = usb0_ep_control::RegisterBlock;
520    #[inline(always)]
521    fn deref(&self) -> &Self::Target {
522        unsafe { &*Self::PTR }
523    }
524}
525impl core::fmt::Debug for USB0_EP_CONTROL {
526    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
527        f.debug_struct("USB0_EP_CONTROL").finish()
528    }
529}
530#[doc = "usb0_ep_control"]
531pub mod usb0_ep_control;
532#[doc = "usb0_ep_in"]
533pub struct USB0_EP_IN {
534    _marker: PhantomData<*const ()>,
535}
536unsafe impl Send for USB0_EP_IN {}
537impl USB0_EP_IN {
538    #[doc = r"Pointer to the register block"]
539    pub const PTR: *const usb0_ep_in::RegisterBlock = 0xf000_0a00 as *const _;
540    #[doc = r"Return the pointer to the register block"]
541    #[inline(always)]
542    pub const fn ptr() -> *const usb0_ep_in::RegisterBlock {
543        Self::PTR
544    }
545    #[doc = r" Steal an instance of this peripheral"]
546    #[doc = r""]
547    #[doc = r" # Safety"]
548    #[doc = r""]
549    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
550    #[doc = r" that may race with any existing instances, for example by only"]
551    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
552    #[doc = r" original peripheral and using critical sections to coordinate"]
553    #[doc = r" access between multiple new instances."]
554    #[doc = r""]
555    #[doc = r" Additionally, other software such as HALs may rely on only one"]
556    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
557    #[doc = r" no stolen instances are passed to such software."]
558    pub unsafe fn steal() -> Self {
559        Self {
560            _marker: PhantomData,
561        }
562    }
563}
564impl Deref for USB0_EP_IN {
565    type Target = usb0_ep_in::RegisterBlock;
566    #[inline(always)]
567    fn deref(&self) -> &Self::Target {
568        unsafe { &*Self::PTR }
569    }
570}
571impl core::fmt::Debug for USB0_EP_IN {
572    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
573        f.debug_struct("USB0_EP_IN").finish()
574    }
575}
576#[doc = "usb0_ep_in"]
577pub mod usb0_ep_in;
578#[doc = "usb0_ep_out"]
579pub struct USB0_EP_OUT {
580    _marker: PhantomData<*const ()>,
581}
582unsafe impl Send for USB0_EP_OUT {}
583impl USB0_EP_OUT {
584    #[doc = r"Pointer to the register block"]
585    pub const PTR: *const usb0_ep_out::RegisterBlock = 0xf000_0b00 as *const _;
586    #[doc = r"Return the pointer to the register block"]
587    #[inline(always)]
588    pub const fn ptr() -> *const usb0_ep_out::RegisterBlock {
589        Self::PTR
590    }
591    #[doc = r" Steal an instance of this peripheral"]
592    #[doc = r""]
593    #[doc = r" # Safety"]
594    #[doc = r""]
595    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
596    #[doc = r" that may race with any existing instances, for example by only"]
597    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
598    #[doc = r" original peripheral and using critical sections to coordinate"]
599    #[doc = r" access between multiple new instances."]
600    #[doc = r""]
601    #[doc = r" Additionally, other software such as HALs may rely on only one"]
602    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
603    #[doc = r" no stolen instances are passed to such software."]
604    pub unsafe fn steal() -> Self {
605        Self {
606            _marker: PhantomData,
607        }
608    }
609}
610impl Deref for USB0_EP_OUT {
611    type Target = usb0_ep_out::RegisterBlock;
612    #[inline(always)]
613    fn deref(&self) -> &Self::Target {
614        unsafe { &*Self::PTR }
615    }
616}
617impl core::fmt::Debug for USB0_EP_OUT {
618    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
619        f.debug_struct("USB0_EP_OUT").finish()
620    }
621}
622#[doc = "usb0_ep_out"]
623pub mod usb0_ep_out;
624#[doc = "usb1"]
625pub struct USB1 {
626    _marker: PhantomData<*const ()>,
627}
628unsafe impl Send for USB1 {}
629impl USB1 {
630    #[doc = r"Pointer to the register block"]
631    pub const PTR: *const usb1::RegisterBlock = 0xf000_0c00 as *const _;
632    #[doc = r"Return the pointer to the register block"]
633    #[inline(always)]
634    pub const fn ptr() -> *const usb1::RegisterBlock {
635        Self::PTR
636    }
637    #[doc = r" Steal an instance of this peripheral"]
638    #[doc = r""]
639    #[doc = r" # Safety"]
640    #[doc = r""]
641    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
642    #[doc = r" that may race with any existing instances, for example by only"]
643    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
644    #[doc = r" original peripheral and using critical sections to coordinate"]
645    #[doc = r" access between multiple new instances."]
646    #[doc = r""]
647    #[doc = r" Additionally, other software such as HALs may rely on only one"]
648    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
649    #[doc = r" no stolen instances are passed to such software."]
650    pub unsafe fn steal() -> Self {
651        Self {
652            _marker: PhantomData,
653        }
654    }
655}
656impl Deref for USB1 {
657    type Target = usb1::RegisterBlock;
658    #[inline(always)]
659    fn deref(&self) -> &Self::Target {
660        unsafe { &*Self::PTR }
661    }
662}
663impl core::fmt::Debug for USB1 {
664    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
665        f.debug_struct("USB1").finish()
666    }
667}
668#[doc = "usb1"]
669pub mod usb1;
670#[doc = "usb1_ep_control"]
671pub struct USB1_EP_CONTROL {
672    _marker: PhantomData<*const ()>,
673}
674unsafe impl Send for USB1_EP_CONTROL {}
675impl USB1_EP_CONTROL {
676    #[doc = r"Pointer to the register block"]
677    pub const PTR: *const usb1_ep_control::RegisterBlock = 0xf000_0d00 as *const _;
678    #[doc = r"Return the pointer to the register block"]
679    #[inline(always)]
680    pub const fn ptr() -> *const usb1_ep_control::RegisterBlock {
681        Self::PTR
682    }
683    #[doc = r" Steal an instance of this peripheral"]
684    #[doc = r""]
685    #[doc = r" # Safety"]
686    #[doc = r""]
687    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
688    #[doc = r" that may race with any existing instances, for example by only"]
689    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
690    #[doc = r" original peripheral and using critical sections to coordinate"]
691    #[doc = r" access between multiple new instances."]
692    #[doc = r""]
693    #[doc = r" Additionally, other software such as HALs may rely on only one"]
694    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
695    #[doc = r" no stolen instances are passed to such software."]
696    pub unsafe fn steal() -> Self {
697        Self {
698            _marker: PhantomData,
699        }
700    }
701}
702impl Deref for USB1_EP_CONTROL {
703    type Target = usb1_ep_control::RegisterBlock;
704    #[inline(always)]
705    fn deref(&self) -> &Self::Target {
706        unsafe { &*Self::PTR }
707    }
708}
709impl core::fmt::Debug for USB1_EP_CONTROL {
710    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
711        f.debug_struct("USB1_EP_CONTROL").finish()
712    }
713}
714#[doc = "usb1_ep_control"]
715pub mod usb1_ep_control;
716#[doc = "usb1_ep_in"]
717pub struct USB1_EP_IN {
718    _marker: PhantomData<*const ()>,
719}
720unsafe impl Send for USB1_EP_IN {}
721impl USB1_EP_IN {
722    #[doc = r"Pointer to the register block"]
723    pub const PTR: *const usb1_ep_in::RegisterBlock = 0xf000_0e00 as *const _;
724    #[doc = r"Return the pointer to the register block"]
725    #[inline(always)]
726    pub const fn ptr() -> *const usb1_ep_in::RegisterBlock {
727        Self::PTR
728    }
729    #[doc = r" Steal an instance of this peripheral"]
730    #[doc = r""]
731    #[doc = r" # Safety"]
732    #[doc = r""]
733    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
734    #[doc = r" that may race with any existing instances, for example by only"]
735    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
736    #[doc = r" original peripheral and using critical sections to coordinate"]
737    #[doc = r" access between multiple new instances."]
738    #[doc = r""]
739    #[doc = r" Additionally, other software such as HALs may rely on only one"]
740    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
741    #[doc = r" no stolen instances are passed to such software."]
742    pub unsafe fn steal() -> Self {
743        Self {
744            _marker: PhantomData,
745        }
746    }
747}
748impl Deref for USB1_EP_IN {
749    type Target = usb1_ep_in::RegisterBlock;
750    #[inline(always)]
751    fn deref(&self) -> &Self::Target {
752        unsafe { &*Self::PTR }
753    }
754}
755impl core::fmt::Debug for USB1_EP_IN {
756    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
757        f.debug_struct("USB1_EP_IN").finish()
758    }
759}
760#[doc = "usb1_ep_in"]
761pub mod usb1_ep_in;
762#[doc = "usb1_ep_out"]
763pub struct USB1_EP_OUT {
764    _marker: PhantomData<*const ()>,
765}
766unsafe impl Send for USB1_EP_OUT {}
767impl USB1_EP_OUT {
768    #[doc = r"Pointer to the register block"]
769    pub const PTR: *const usb1_ep_out::RegisterBlock = 0xf000_0f00 as *const _;
770    #[doc = r"Return the pointer to the register block"]
771    #[inline(always)]
772    pub const fn ptr() -> *const usb1_ep_out::RegisterBlock {
773        Self::PTR
774    }
775    #[doc = r" Steal an instance of this peripheral"]
776    #[doc = r""]
777    #[doc = r" # Safety"]
778    #[doc = r""]
779    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
780    #[doc = r" that may race with any existing instances, for example by only"]
781    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
782    #[doc = r" original peripheral and using critical sections to coordinate"]
783    #[doc = r" access between multiple new instances."]
784    #[doc = r""]
785    #[doc = r" Additionally, other software such as HALs may rely on only one"]
786    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
787    #[doc = r" no stolen instances are passed to such software."]
788    pub unsafe fn steal() -> Self {
789        Self {
790            _marker: PhantomData,
791        }
792    }
793}
794impl Deref for USB1_EP_OUT {
795    type Target = usb1_ep_out::RegisterBlock;
796    #[inline(always)]
797    fn deref(&self) -> &Self::Target {
798        unsafe { &*Self::PTR }
799    }
800}
801impl core::fmt::Debug for USB1_EP_OUT {
802    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
803        f.debug_struct("USB1_EP_OUT").finish()
804    }
805}
806#[doc = "usb1_ep_out"]
807pub mod usb1_ep_out;
808#[doc = "usb2"]
809pub struct USB2 {
810    _marker: PhantomData<*const ()>,
811}
812unsafe impl Send for USB2 {}
813impl USB2 {
814    #[doc = r"Pointer to the register block"]
815    pub const PTR: *const usb2::RegisterBlock = 0xf000_1000 as *const _;
816    #[doc = r"Return the pointer to the register block"]
817    #[inline(always)]
818    pub const fn ptr() -> *const usb2::RegisterBlock {
819        Self::PTR
820    }
821    #[doc = r" Steal an instance of this peripheral"]
822    #[doc = r""]
823    #[doc = r" # Safety"]
824    #[doc = r""]
825    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
826    #[doc = r" that may race with any existing instances, for example by only"]
827    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
828    #[doc = r" original peripheral and using critical sections to coordinate"]
829    #[doc = r" access between multiple new instances."]
830    #[doc = r""]
831    #[doc = r" Additionally, other software such as HALs may rely on only one"]
832    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
833    #[doc = r" no stolen instances are passed to such software."]
834    pub unsafe fn steal() -> Self {
835        Self {
836            _marker: PhantomData,
837        }
838    }
839}
840impl Deref for USB2 {
841    type Target = usb2::RegisterBlock;
842    #[inline(always)]
843    fn deref(&self) -> &Self::Target {
844        unsafe { &*Self::PTR }
845    }
846}
847impl core::fmt::Debug for USB2 {
848    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
849        f.debug_struct("USB2").finish()
850    }
851}
852#[doc = "usb2"]
853pub mod usb2;
854#[doc = "usb2_ep_control"]
855pub struct USB2_EP_CONTROL {
856    _marker: PhantomData<*const ()>,
857}
858unsafe impl Send for USB2_EP_CONTROL {}
859impl USB2_EP_CONTROL {
860    #[doc = r"Pointer to the register block"]
861    pub const PTR: *const usb2_ep_control::RegisterBlock = 0xf000_1100 as *const _;
862    #[doc = r"Return the pointer to the register block"]
863    #[inline(always)]
864    pub const fn ptr() -> *const usb2_ep_control::RegisterBlock {
865        Self::PTR
866    }
867    #[doc = r" Steal an instance of this peripheral"]
868    #[doc = r""]
869    #[doc = r" # Safety"]
870    #[doc = r""]
871    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
872    #[doc = r" that may race with any existing instances, for example by only"]
873    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
874    #[doc = r" original peripheral and using critical sections to coordinate"]
875    #[doc = r" access between multiple new instances."]
876    #[doc = r""]
877    #[doc = r" Additionally, other software such as HALs may rely on only one"]
878    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
879    #[doc = r" no stolen instances are passed to such software."]
880    pub unsafe fn steal() -> Self {
881        Self {
882            _marker: PhantomData,
883        }
884    }
885}
886impl Deref for USB2_EP_CONTROL {
887    type Target = usb2_ep_control::RegisterBlock;
888    #[inline(always)]
889    fn deref(&self) -> &Self::Target {
890        unsafe { &*Self::PTR }
891    }
892}
893impl core::fmt::Debug for USB2_EP_CONTROL {
894    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
895        f.debug_struct("USB2_EP_CONTROL").finish()
896    }
897}
898#[doc = "usb2_ep_control"]
899pub mod usb2_ep_control;
900#[doc = "usb2_ep_in"]
901pub struct USB2_EP_IN {
902    _marker: PhantomData<*const ()>,
903}
904unsafe impl Send for USB2_EP_IN {}
905impl USB2_EP_IN {
906    #[doc = r"Pointer to the register block"]
907    pub const PTR: *const usb2_ep_in::RegisterBlock = 0xf000_1200 as *const _;
908    #[doc = r"Return the pointer to the register block"]
909    #[inline(always)]
910    pub const fn ptr() -> *const usb2_ep_in::RegisterBlock {
911        Self::PTR
912    }
913    #[doc = r" Steal an instance of this peripheral"]
914    #[doc = r""]
915    #[doc = r" # Safety"]
916    #[doc = r""]
917    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
918    #[doc = r" that may race with any existing instances, for example by only"]
919    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
920    #[doc = r" original peripheral and using critical sections to coordinate"]
921    #[doc = r" access between multiple new instances."]
922    #[doc = r""]
923    #[doc = r" Additionally, other software such as HALs may rely on only one"]
924    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
925    #[doc = r" no stolen instances are passed to such software."]
926    pub unsafe fn steal() -> Self {
927        Self {
928            _marker: PhantomData,
929        }
930    }
931}
932impl Deref for USB2_EP_IN {
933    type Target = usb2_ep_in::RegisterBlock;
934    #[inline(always)]
935    fn deref(&self) -> &Self::Target {
936        unsafe { &*Self::PTR }
937    }
938}
939impl core::fmt::Debug for USB2_EP_IN {
940    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
941        f.debug_struct("USB2_EP_IN").finish()
942    }
943}
944#[doc = "usb2_ep_in"]
945pub mod usb2_ep_in;
946#[doc = "usb2_ep_out"]
947pub struct USB2_EP_OUT {
948    _marker: PhantomData<*const ()>,
949}
950unsafe impl Send for USB2_EP_OUT {}
951impl USB2_EP_OUT {
952    #[doc = r"Pointer to the register block"]
953    pub const PTR: *const usb2_ep_out::RegisterBlock = 0xf000_1300 as *const _;
954    #[doc = r"Return the pointer to the register block"]
955    #[inline(always)]
956    pub const fn ptr() -> *const usb2_ep_out::RegisterBlock {
957        Self::PTR
958    }
959    #[doc = r" Steal an instance of this peripheral"]
960    #[doc = r""]
961    #[doc = r" # Safety"]
962    #[doc = r""]
963    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
964    #[doc = r" that may race with any existing instances, for example by only"]
965    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
966    #[doc = r" original peripheral and using critical sections to coordinate"]
967    #[doc = r" access between multiple new instances."]
968    #[doc = r""]
969    #[doc = r" Additionally, other software such as HALs may rely on only one"]
970    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
971    #[doc = r" no stolen instances are passed to such software."]
972    pub unsafe fn steal() -> Self {
973        Self {
974            _marker: PhantomData,
975        }
976    }
977}
978impl Deref for USB2_EP_OUT {
979    type Target = usb2_ep_out::RegisterBlock;
980    #[inline(always)]
981    fn deref(&self) -> &Self::Target {
982        unsafe { &*Self::PTR }
983    }
984}
985impl core::fmt::Debug for USB2_EP_OUT {
986    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
987        f.debug_struct("USB2_EP_OUT").finish()
988    }
989}
990#[doc = "usb2_ep_out"]
991pub mod usb2_ep_out;
992#[doc = "advertiser"]
993pub struct ADVERTISER {
994    _marker: PhantomData<*const ()>,
995}
996unsafe impl Send for ADVERTISER {}
997impl ADVERTISER {
998    #[doc = r"Pointer to the register block"]
999    pub const PTR: *const advertiser::RegisterBlock = 0xf000_1400 as *const _;
1000    #[doc = r"Return the pointer to the register block"]
1001    #[inline(always)]
1002    pub const fn ptr() -> *const advertiser::RegisterBlock {
1003        Self::PTR
1004    }
1005    #[doc = r" Steal an instance of this peripheral"]
1006    #[doc = r""]
1007    #[doc = r" # Safety"]
1008    #[doc = r""]
1009    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1010    #[doc = r" that may race with any existing instances, for example by only"]
1011    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1012    #[doc = r" original peripheral and using critical sections to coordinate"]
1013    #[doc = r" access between multiple new instances."]
1014    #[doc = r""]
1015    #[doc = r" Additionally, other software such as HALs may rely on only one"]
1016    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1017    #[doc = r" no stolen instances are passed to such software."]
1018    pub unsafe fn steal() -> Self {
1019        Self {
1020            _marker: PhantomData,
1021        }
1022    }
1023}
1024impl Deref for ADVERTISER {
1025    type Target = advertiser::RegisterBlock;
1026    #[inline(always)]
1027    fn deref(&self) -> &Self::Target {
1028        unsafe { &*Self::PTR }
1029    }
1030}
1031impl core::fmt::Debug for ADVERTISER {
1032    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1033        f.debug_struct("ADVERTISER").finish()
1034    }
1035}
1036#[doc = "advertiser"]
1037pub mod advertiser;
1038#[doc = "info"]
1039pub struct INFO {
1040    _marker: PhantomData<*const ()>,
1041}
1042unsafe impl Send for INFO {}
1043impl INFO {
1044    #[doc = r"Pointer to the register block"]
1045    pub const PTR: *const info::RegisterBlock = 0xf000_1500 as *const _;
1046    #[doc = r"Return the pointer to the register block"]
1047    #[inline(always)]
1048    pub const fn ptr() -> *const info::RegisterBlock {
1049        Self::PTR
1050    }
1051    #[doc = r" Steal an instance of this peripheral"]
1052    #[doc = r""]
1053    #[doc = r" # Safety"]
1054    #[doc = r""]
1055    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1056    #[doc = r" that may race with any existing instances, for example by only"]
1057    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1058    #[doc = r" original peripheral and using critical sections to coordinate"]
1059    #[doc = r" access between multiple new instances."]
1060    #[doc = r""]
1061    #[doc = r" Additionally, other software such as HALs may rely on only one"]
1062    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1063    #[doc = r" no stolen instances are passed to such software."]
1064    pub unsafe fn steal() -> Self {
1065        Self {
1066            _marker: PhantomData,
1067        }
1068    }
1069}
1070impl Deref for INFO {
1071    type Target = info::RegisterBlock;
1072    #[inline(always)]
1073    fn deref(&self) -> &Self::Target {
1074        unsafe { &*Self::PTR }
1075    }
1076}
1077impl core::fmt::Debug for INFO {
1078    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1079        f.debug_struct("INFO").finish()
1080    }
1081}
1082#[doc = "info"]
1083pub mod info;
1084#[doc = "user0"]
1085pub struct USER0 {
1086    _marker: PhantomData<*const ()>,
1087}
1088unsafe impl Send for USER0 {}
1089impl USER0 {
1090    #[doc = r"Pointer to the register block"]
1091    pub const PTR: *const user0::RegisterBlock = 0xf000_1600 as *const _;
1092    #[doc = r"Return the pointer to the register block"]
1093    #[inline(always)]
1094    pub const fn ptr() -> *const user0::RegisterBlock {
1095        Self::PTR
1096    }
1097    #[doc = r" Steal an instance of this peripheral"]
1098    #[doc = r""]
1099    #[doc = r" # Safety"]
1100    #[doc = r""]
1101    #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1102    #[doc = r" that may race with any existing instances, for example by only"]
1103    #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1104    #[doc = r" original peripheral and using critical sections to coordinate"]
1105    #[doc = r" access between multiple new instances."]
1106    #[doc = r""]
1107    #[doc = r" Additionally, other software such as HALs may rely on only one"]
1108    #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1109    #[doc = r" no stolen instances are passed to such software."]
1110    pub unsafe fn steal() -> Self {
1111        Self {
1112            _marker: PhantomData,
1113        }
1114    }
1115}
1116impl Deref for USER0 {
1117    type Target = user0::RegisterBlock;
1118    #[inline(always)]
1119    fn deref(&self) -> &Self::Target {
1120        unsafe { &*Self::PTR }
1121    }
1122}
1123impl core::fmt::Debug for USER0 {
1124    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1125        f.debug_struct("USER0").finish()
1126    }
1127}
1128#[doc = "user0"]
1129pub mod user0;
1130#[no_mangle]
1131static mut DEVICE_PERIPHERALS: bool = false;
1132#[doc = r" All the peripherals."]
1133#[allow(non_snake_case)]
1134pub struct Peripherals {
1135    #[doc = "leds"]
1136    pub LEDS: LEDS,
1137    #[doc = "gpio0"]
1138    pub GPIO0: GPIO0,
1139    #[doc = "gpio1"]
1140    pub GPIO1: GPIO1,
1141    #[doc = "uart0"]
1142    pub UART0: UART0,
1143    #[doc = "uart1"]
1144    pub UART1: UART1,
1145    #[doc = "timer0"]
1146    pub TIMER0: TIMER0,
1147    #[doc = "timer1"]
1148    pub TIMER1: TIMER1,
1149    #[doc = "spi0"]
1150    pub SPI0: SPI0,
1151    #[doc = "usb0"]
1152    pub USB0: USB0,
1153    #[doc = "usb0_ep_control"]
1154    pub USB0_EP_CONTROL: USB0_EP_CONTROL,
1155    #[doc = "usb0_ep_in"]
1156    pub USB0_EP_IN: USB0_EP_IN,
1157    #[doc = "usb0_ep_out"]
1158    pub USB0_EP_OUT: USB0_EP_OUT,
1159    #[doc = "usb1"]
1160    pub USB1: USB1,
1161    #[doc = "usb1_ep_control"]
1162    pub USB1_EP_CONTROL: USB1_EP_CONTROL,
1163    #[doc = "usb1_ep_in"]
1164    pub USB1_EP_IN: USB1_EP_IN,
1165    #[doc = "usb1_ep_out"]
1166    pub USB1_EP_OUT: USB1_EP_OUT,
1167    #[doc = "usb2"]
1168    pub USB2: USB2,
1169    #[doc = "usb2_ep_control"]
1170    pub USB2_EP_CONTROL: USB2_EP_CONTROL,
1171    #[doc = "usb2_ep_in"]
1172    pub USB2_EP_IN: USB2_EP_IN,
1173    #[doc = "usb2_ep_out"]
1174    pub USB2_EP_OUT: USB2_EP_OUT,
1175    #[doc = "advertiser"]
1176    pub ADVERTISER: ADVERTISER,
1177    #[doc = "info"]
1178    pub INFO: INFO,
1179    #[doc = "user0"]
1180    pub USER0: USER0,
1181}
1182impl Peripherals {
1183    #[doc = r" Returns all the peripherals *once*."]
1184    #[cfg(feature = "critical-section")]
1185    #[inline]
1186    pub fn take() -> Option<Self> {
1187        critical_section::with(|_| {
1188            if unsafe { DEVICE_PERIPHERALS } {
1189                return None;
1190            }
1191            Some(unsafe { Peripherals::steal() })
1192        })
1193    }
1194    #[doc = r" Unchecked version of `Peripherals::take`."]
1195    #[doc = r""]
1196    #[doc = r" # Safety"]
1197    #[doc = r""]
1198    #[doc = r" Each of the returned peripherals must be used at most once."]
1199    #[inline]
1200    pub unsafe fn steal() -> Self {
1201        DEVICE_PERIPHERALS = true;
1202        Peripherals {
1203            LEDS: LEDS::steal(),
1204            GPIO0: GPIO0::steal(),
1205            GPIO1: GPIO1::steal(),
1206            UART0: UART0::steal(),
1207            UART1: UART1::steal(),
1208            TIMER0: TIMER0::steal(),
1209            TIMER1: TIMER1::steal(),
1210            SPI0: SPI0::steal(),
1211            USB0: USB0::steal(),
1212            USB0_EP_CONTROL: USB0_EP_CONTROL::steal(),
1213            USB0_EP_IN: USB0_EP_IN::steal(),
1214            USB0_EP_OUT: USB0_EP_OUT::steal(),
1215            USB1: USB1::steal(),
1216            USB1_EP_CONTROL: USB1_EP_CONTROL::steal(),
1217            USB1_EP_IN: USB1_EP_IN::steal(),
1218            USB1_EP_OUT: USB1_EP_OUT::steal(),
1219            USB2: USB2::steal(),
1220            USB2_EP_CONTROL: USB2_EP_CONTROL::steal(),
1221            USB2_EP_IN: USB2_EP_IN::steal(),
1222            USB2_EP_OUT: USB2_EP_OUT::steal(),
1223            ADVERTISER: ADVERTISER::steal(),
1224            INFO: INFO::steal(),
1225            USER0: USER0::steal(),
1226        }
1227    }
1228}