atsaml21g18b/
lib.rs

1#![doc = "Peripheral access API for ATSAML21G18B microcontrollers (generated using svd2rust v0.27.2 ( ))\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.27.2/svd2rust/#peripheral-api\n[next]: https://github.com/rust-embedded/svd2rust/blob/master/CHANGELOG.md#unreleased\n[repository]: https://github.com/rust-embedded/svd2rust"]
3#![deny(dead_code)]
4#![deny(improper_ctypes)]
5#![deny(missing_docs)]
6#![deny(no_mangle_generic_items)]
7#![deny(non_shorthand_field_patterns)]
8#![deny(overflowing_literals)]
9#![deny(path_statements)]
10#![deny(patterns_in_fns_without_body)]
11#![deny(private_in_public)]
12#![deny(unconditional_recursion)]
13#![deny(unused_allocation)]
14#![deny(unused_comparisons)]
15#![deny(unused_parens)]
16#![deny(while_true)]
17#![allow(non_camel_case_types)]
18#![allow(non_snake_case)]
19#![no_std]
20use core::marker::PhantomData;
21use core::ops::Deref;
22#[doc = r"Number available in the NVIC for configuring priority"]
23pub const NVIC_PRIO_BITS: u8 = 2;
24#[cfg(feature = "rt")]
25pub use self::Interrupt as interrupt;
26pub use cortex_m::peripheral::Peripherals as CorePeripherals;
27pub use cortex_m::peripheral::{CBP, CPUID, DCB, DWT, FPB, ITM, MPU, NVIC, SCB, SYST, TPIU};
28#[cfg(feature = "rt")]
29pub use cortex_m_rt::interrupt;
30#[allow(unused_imports)]
31use generic::*;
32#[doc = r"Common register and bit access and modify traits"]
33pub mod generic;
34#[cfg(feature = "rt")]
35extern "C" {
36    fn SYSTEM();
37    fn WDT();
38    fn RTC();
39    fn EIC();
40    fn NVMCTRL();
41    fn DMAC();
42    fn USB();
43    fn EVSYS();
44    fn SERCOM0();
45    fn SERCOM1();
46    fn SERCOM2();
47    fn SERCOM3();
48    fn SERCOM4();
49    fn SERCOM5();
50    fn TCC0();
51    fn TCC1();
52    fn TCC2();
53    fn TC0();
54    fn TC1();
55    fn TC4();
56    fn ADC();
57    fn AC();
58    fn DAC();
59    fn AES();
60    fn TRNG();
61}
62#[doc(hidden)]
63pub union Vector {
64    _handler: unsafe extern "C" fn(),
65    _reserved: u32,
66}
67#[cfg(feature = "rt")]
68#[doc(hidden)]
69#[link_section = ".vector_table.interrupts"]
70#[no_mangle]
71pub static __INTERRUPTS: [Vector; 28] = [
72    Vector { _handler: SYSTEM },
73    Vector { _handler: WDT },
74    Vector { _handler: RTC },
75    Vector { _handler: EIC },
76    Vector { _handler: NVMCTRL },
77    Vector { _handler: DMAC },
78    Vector { _handler: USB },
79    Vector { _handler: EVSYS },
80    Vector { _handler: SERCOM0 },
81    Vector { _handler: SERCOM1 },
82    Vector { _handler: SERCOM2 },
83    Vector { _handler: SERCOM3 },
84    Vector { _handler: SERCOM4 },
85    Vector { _handler: SERCOM5 },
86    Vector { _handler: TCC0 },
87    Vector { _handler: TCC1 },
88    Vector { _handler: TCC2 },
89    Vector { _handler: TC0 },
90    Vector { _handler: TC1 },
91    Vector { _reserved: 0 },
92    Vector { _reserved: 0 },
93    Vector { _handler: TC4 },
94    Vector { _handler: ADC },
95    Vector { _handler: AC },
96    Vector { _handler: DAC },
97    Vector { _reserved: 0 },
98    Vector { _handler: AES },
99    Vector { _handler: TRNG },
100];
101#[doc = r"Enumeration of all the interrupts."]
102#[derive(Copy, Clone, Debug, PartialEq, Eq)]
103#[repr(u16)]
104pub enum Interrupt {
105    #[doc = "0 - SYSTEM"]
106    SYSTEM = 0,
107    #[doc = "1 - WDT"]
108    WDT = 1,
109    #[doc = "2 - RTC"]
110    RTC = 2,
111    #[doc = "3 - EIC"]
112    EIC = 3,
113    #[doc = "4 - NVMCTRL"]
114    NVMCTRL = 4,
115    #[doc = "5 - DMAC"]
116    DMAC = 5,
117    #[doc = "6 - USB"]
118    USB = 6,
119    #[doc = "7 - EVSYS"]
120    EVSYS = 7,
121    #[doc = "8 - SERCOM0"]
122    SERCOM0 = 8,
123    #[doc = "9 - SERCOM1"]
124    SERCOM1 = 9,
125    #[doc = "10 - SERCOM2"]
126    SERCOM2 = 10,
127    #[doc = "11 - SERCOM3"]
128    SERCOM3 = 11,
129    #[doc = "12 - SERCOM4"]
130    SERCOM4 = 12,
131    #[doc = "13 - SERCOM5"]
132    SERCOM5 = 13,
133    #[doc = "14 - TCC0"]
134    TCC0 = 14,
135    #[doc = "15 - TCC1"]
136    TCC1 = 15,
137    #[doc = "16 - TCC2"]
138    TCC2 = 16,
139    #[doc = "17 - TC0"]
140    TC0 = 17,
141    #[doc = "18 - TC1"]
142    TC1 = 18,
143    #[doc = "21 - TC4"]
144    TC4 = 21,
145    #[doc = "22 - ADC"]
146    ADC = 22,
147    #[doc = "23 - AC"]
148    AC = 23,
149    #[doc = "24 - DAC"]
150    DAC = 24,
151    #[doc = "26 - AES"]
152    AES = 26,
153    #[doc = "27 - TRNG"]
154    TRNG = 27,
155}
156unsafe impl cortex_m::interrupt::InterruptNumber for Interrupt {
157    #[inline(always)]
158    fn number(self) -> u16 {
159        self as u16
160    }
161}
162#[doc = "Analog Comparators"]
163pub struct AC {
164    _marker: PhantomData<*const ()>,
165}
166unsafe impl Send for AC {}
167impl AC {
168    #[doc = r"Pointer to the register block"]
169    pub const PTR: *const ac::RegisterBlock = 0x4300_1000 as *const _;
170    #[doc = r"Return the pointer to the register block"]
171    #[inline(always)]
172    pub const fn ptr() -> *const ac::RegisterBlock {
173        Self::PTR
174    }
175}
176impl Deref for AC {
177    type Target = ac::RegisterBlock;
178    #[inline(always)]
179    fn deref(&self) -> &Self::Target {
180        unsafe { &*Self::PTR }
181    }
182}
183impl core::fmt::Debug for AC {
184    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
185        f.debug_struct("AC").finish()
186    }
187}
188#[doc = "Analog Comparators"]
189pub mod ac;
190#[doc = "Analog Digital Converter"]
191pub struct ADC {
192    _marker: PhantomData<*const ()>,
193}
194unsafe impl Send for ADC {}
195impl ADC {
196    #[doc = r"Pointer to the register block"]
197    pub const PTR: *const adc::RegisterBlock = 0x4300_0c00 as *const _;
198    #[doc = r"Return the pointer to the register block"]
199    #[inline(always)]
200    pub const fn ptr() -> *const adc::RegisterBlock {
201        Self::PTR
202    }
203}
204impl Deref for ADC {
205    type Target = adc::RegisterBlock;
206    #[inline(always)]
207    fn deref(&self) -> &Self::Target {
208        unsafe { &*Self::PTR }
209    }
210}
211impl core::fmt::Debug for ADC {
212    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
213        f.debug_struct("ADC").finish()
214    }
215}
216#[doc = "Analog Digital Converter"]
217pub mod adc;
218#[doc = "Advanced Encryption Standard"]
219pub struct AES {
220    _marker: PhantomData<*const ()>,
221}
222unsafe impl Send for AES {}
223impl AES {
224    #[doc = r"Pointer to the register block"]
225    pub const PTR: *const aes::RegisterBlock = 0x4200_3400 as *const _;
226    #[doc = r"Return the pointer to the register block"]
227    #[inline(always)]
228    pub const fn ptr() -> *const aes::RegisterBlock {
229        Self::PTR
230    }
231}
232impl Deref for AES {
233    type Target = aes::RegisterBlock;
234    #[inline(always)]
235    fn deref(&self) -> &Self::Target {
236        unsafe { &*Self::PTR }
237    }
238}
239impl core::fmt::Debug for AES {
240    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
241        f.debug_struct("AES").finish()
242    }
243}
244#[doc = "Advanced Encryption Standard"]
245pub mod aes;
246#[doc = "Configurable Custom Logic"]
247pub struct CCL {
248    _marker: PhantomData<*const ()>,
249}
250unsafe impl Send for CCL {}
251impl CCL {
252    #[doc = r"Pointer to the register block"]
253    pub const PTR: *const ccl::RegisterBlock = 0x4300_1c00 as *const _;
254    #[doc = r"Return the pointer to the register block"]
255    #[inline(always)]
256    pub const fn ptr() -> *const ccl::RegisterBlock {
257        Self::PTR
258    }
259}
260impl Deref for CCL {
261    type Target = ccl::RegisterBlock;
262    #[inline(always)]
263    fn deref(&self) -> &Self::Target {
264        unsafe { &*Self::PTR }
265    }
266}
267impl core::fmt::Debug for CCL {
268    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
269        f.debug_struct("CCL").finish()
270    }
271}
272#[doc = "Configurable Custom Logic"]
273pub mod ccl;
274#[doc = "Digital-to-Analog Converter"]
275pub struct DAC {
276    _marker: PhantomData<*const ()>,
277}
278unsafe impl Send for DAC {}
279impl DAC {
280    #[doc = r"Pointer to the register block"]
281    pub const PTR: *const dac::RegisterBlock = 0x4200_3000 as *const _;
282    #[doc = r"Return the pointer to the register block"]
283    #[inline(always)]
284    pub const fn ptr() -> *const dac::RegisterBlock {
285        Self::PTR
286    }
287}
288impl Deref for DAC {
289    type Target = dac::RegisterBlock;
290    #[inline(always)]
291    fn deref(&self) -> &Self::Target {
292        unsafe { &*Self::PTR }
293    }
294}
295impl core::fmt::Debug for DAC {
296    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
297        f.debug_struct("DAC").finish()
298    }
299}
300#[doc = "Digital-to-Analog Converter"]
301pub mod dac;
302#[doc = "Direct Memory Access Controller"]
303pub struct DMAC {
304    _marker: PhantomData<*const ()>,
305}
306unsafe impl Send for DMAC {}
307impl DMAC {
308    #[doc = r"Pointer to the register block"]
309    pub const PTR: *const dmac::RegisterBlock = 0x4400_0400 as *const _;
310    #[doc = r"Return the pointer to the register block"]
311    #[inline(always)]
312    pub const fn ptr() -> *const dmac::RegisterBlock {
313        Self::PTR
314    }
315}
316impl Deref for DMAC {
317    type Target = dmac::RegisterBlock;
318    #[inline(always)]
319    fn deref(&self) -> &Self::Target {
320        unsafe { &*Self::PTR }
321    }
322}
323impl core::fmt::Debug for DMAC {
324    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
325        f.debug_struct("DMAC").finish()
326    }
327}
328#[doc = "Direct Memory Access Controller"]
329pub mod dmac;
330#[doc = "Device Service Unit"]
331pub struct DSU {
332    _marker: PhantomData<*const ()>,
333}
334unsafe impl Send for DSU {}
335impl DSU {
336    #[doc = r"Pointer to the register block"]
337    pub const PTR: *const dsu::RegisterBlock = 0x4100_2000 as *const _;
338    #[doc = r"Return the pointer to the register block"]
339    #[inline(always)]
340    pub const fn ptr() -> *const dsu::RegisterBlock {
341        Self::PTR
342    }
343}
344impl Deref for DSU {
345    type Target = dsu::RegisterBlock;
346    #[inline(always)]
347    fn deref(&self) -> &Self::Target {
348        unsafe { &*Self::PTR }
349    }
350}
351impl core::fmt::Debug for DSU {
352    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
353        f.debug_struct("DSU").finish()
354    }
355}
356#[doc = "Device Service Unit"]
357pub mod dsu;
358#[doc = "External Interrupt Controller"]
359pub struct EIC {
360    _marker: PhantomData<*const ()>,
361}
362unsafe impl Send for EIC {}
363impl EIC {
364    #[doc = r"Pointer to the register block"]
365    pub const PTR: *const eic::RegisterBlock = 0x4000_2400 as *const _;
366    #[doc = r"Return the pointer to the register block"]
367    #[inline(always)]
368    pub const fn ptr() -> *const eic::RegisterBlock {
369        Self::PTR
370    }
371}
372impl Deref for EIC {
373    type Target = eic::RegisterBlock;
374    #[inline(always)]
375    fn deref(&self) -> &Self::Target {
376        unsafe { &*Self::PTR }
377    }
378}
379impl core::fmt::Debug for EIC {
380    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
381        f.debug_struct("EIC").finish()
382    }
383}
384#[doc = "External Interrupt Controller"]
385pub mod eic;
386#[doc = "Event System Interface"]
387pub struct EVSYS {
388    _marker: PhantomData<*const ()>,
389}
390unsafe impl Send for EVSYS {}
391impl EVSYS {
392    #[doc = r"Pointer to the register block"]
393    pub const PTR: *const evsys::RegisterBlock = 0x4300_0000 as *const _;
394    #[doc = r"Return the pointer to the register block"]
395    #[inline(always)]
396    pub const fn ptr() -> *const evsys::RegisterBlock {
397        Self::PTR
398    }
399}
400impl Deref for EVSYS {
401    type Target = evsys::RegisterBlock;
402    #[inline(always)]
403    fn deref(&self) -> &Self::Target {
404        unsafe { &*Self::PTR }
405    }
406}
407impl core::fmt::Debug for EVSYS {
408    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
409        f.debug_struct("EVSYS").finish()
410    }
411}
412#[doc = "Event System Interface"]
413pub mod evsys;
414#[doc = "Generic Clock Generator"]
415pub struct GCLK {
416    _marker: PhantomData<*const ()>,
417}
418unsafe impl Send for GCLK {}
419impl GCLK {
420    #[doc = r"Pointer to the register block"]
421    pub const PTR: *const gclk::RegisterBlock = 0x4000_1800 as *const _;
422    #[doc = r"Return the pointer to the register block"]
423    #[inline(always)]
424    pub const fn ptr() -> *const gclk::RegisterBlock {
425        Self::PTR
426    }
427}
428impl Deref for GCLK {
429    type Target = gclk::RegisterBlock;
430    #[inline(always)]
431    fn deref(&self) -> &Self::Target {
432        unsafe { &*Self::PTR }
433    }
434}
435impl core::fmt::Debug for GCLK {
436    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
437        f.debug_struct("GCLK").finish()
438    }
439}
440#[doc = "Generic Clock Generator"]
441pub mod gclk;
442#[doc = "Main Clock"]
443pub struct MCLK {
444    _marker: PhantomData<*const ()>,
445}
446unsafe impl Send for MCLK {}
447impl MCLK {
448    #[doc = r"Pointer to the register block"]
449    pub const PTR: *const mclk::RegisterBlock = 0x4000_0400 as *const _;
450    #[doc = r"Return the pointer to the register block"]
451    #[inline(always)]
452    pub const fn ptr() -> *const mclk::RegisterBlock {
453        Self::PTR
454    }
455}
456impl Deref for MCLK {
457    type Target = mclk::RegisterBlock;
458    #[inline(always)]
459    fn deref(&self) -> &Self::Target {
460        unsafe { &*Self::PTR }
461    }
462}
463impl core::fmt::Debug for MCLK {
464    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
465        f.debug_struct("MCLK").finish()
466    }
467}
468#[doc = "Main Clock"]
469pub mod mclk;
470#[doc = "Cortex-M0+ Micro-Trace Buffer"]
471pub struct MTB {
472    _marker: PhantomData<*const ()>,
473}
474unsafe impl Send for MTB {}
475impl MTB {
476    #[doc = r"Pointer to the register block"]
477    pub const PTR: *const mtb::RegisterBlock = 0x4100_6000 as *const _;
478    #[doc = r"Return the pointer to the register block"]
479    #[inline(always)]
480    pub const fn ptr() -> *const mtb::RegisterBlock {
481        Self::PTR
482    }
483}
484impl Deref for MTB {
485    type Target = mtb::RegisterBlock;
486    #[inline(always)]
487    fn deref(&self) -> &Self::Target {
488        unsafe { &*Self::PTR }
489    }
490}
491impl core::fmt::Debug for MTB {
492    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
493        f.debug_struct("MTB").finish()
494    }
495}
496#[doc = "Cortex-M0+ Micro-Trace Buffer"]
497pub mod mtb;
498#[doc = "Non-Volatile Memory Controller"]
499pub struct NVMCTRL {
500    _marker: PhantomData<*const ()>,
501}
502unsafe impl Send for NVMCTRL {}
503impl NVMCTRL {
504    #[doc = r"Pointer to the register block"]
505    pub const PTR: *const nvmctrl::RegisterBlock = 0x4100_4000 as *const _;
506    #[doc = r"Return the pointer to the register block"]
507    #[inline(always)]
508    pub const fn ptr() -> *const nvmctrl::RegisterBlock {
509        Self::PTR
510    }
511}
512impl Deref for NVMCTRL {
513    type Target = nvmctrl::RegisterBlock;
514    #[inline(always)]
515    fn deref(&self) -> &Self::Target {
516        unsafe { &*Self::PTR }
517    }
518}
519impl core::fmt::Debug for NVMCTRL {
520    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
521        f.debug_struct("NVMCTRL").finish()
522    }
523}
524#[doc = "Non-Volatile Memory Controller"]
525pub mod nvmctrl;
526#[doc = "Operational Amplifier"]
527pub struct OPAMP {
528    _marker: PhantomData<*const ()>,
529}
530unsafe impl Send for OPAMP {}
531impl OPAMP {
532    #[doc = r"Pointer to the register block"]
533    pub const PTR: *const opamp::RegisterBlock = 0x4300_1800 as *const _;
534    #[doc = r"Return the pointer to the register block"]
535    #[inline(always)]
536    pub const fn ptr() -> *const opamp::RegisterBlock {
537        Self::PTR
538    }
539}
540impl Deref for OPAMP {
541    type Target = opamp::RegisterBlock;
542    #[inline(always)]
543    fn deref(&self) -> &Self::Target {
544        unsafe { &*Self::PTR }
545    }
546}
547impl core::fmt::Debug for OPAMP {
548    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
549        f.debug_struct("OPAMP").finish()
550    }
551}
552#[doc = "Operational Amplifier"]
553pub mod opamp;
554#[doc = "Oscillators Control"]
555pub struct OSCCTRL {
556    _marker: PhantomData<*const ()>,
557}
558unsafe impl Send for OSCCTRL {}
559impl OSCCTRL {
560    #[doc = r"Pointer to the register block"]
561    pub const PTR: *const oscctrl::RegisterBlock = 0x4000_0c00 as *const _;
562    #[doc = r"Return the pointer to the register block"]
563    #[inline(always)]
564    pub const fn ptr() -> *const oscctrl::RegisterBlock {
565        Self::PTR
566    }
567}
568impl Deref for OSCCTRL {
569    type Target = oscctrl::RegisterBlock;
570    #[inline(always)]
571    fn deref(&self) -> &Self::Target {
572        unsafe { &*Self::PTR }
573    }
574}
575impl core::fmt::Debug for OSCCTRL {
576    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
577        f.debug_struct("OSCCTRL").finish()
578    }
579}
580#[doc = "Oscillators Control"]
581pub mod oscctrl;
582#[doc = "32k Oscillators Control"]
583pub struct OSC32KCTRL {
584    _marker: PhantomData<*const ()>,
585}
586unsafe impl Send for OSC32KCTRL {}
587impl OSC32KCTRL {
588    #[doc = r"Pointer to the register block"]
589    pub const PTR: *const osc32kctrl::RegisterBlock = 0x4000_1000 as *const _;
590    #[doc = r"Return the pointer to the register block"]
591    #[inline(always)]
592    pub const fn ptr() -> *const osc32kctrl::RegisterBlock {
593        Self::PTR
594    }
595}
596impl Deref for OSC32KCTRL {
597    type Target = osc32kctrl::RegisterBlock;
598    #[inline(always)]
599    fn deref(&self) -> &Self::Target {
600        unsafe { &*Self::PTR }
601    }
602}
603impl core::fmt::Debug for OSC32KCTRL {
604    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
605        f.debug_struct("OSC32KCTRL").finish()
606    }
607}
608#[doc = "32k Oscillators Control"]
609pub mod osc32kctrl;
610#[doc = "Peripheral Access Controller"]
611pub struct PAC {
612    _marker: PhantomData<*const ()>,
613}
614unsafe impl Send for PAC {}
615impl PAC {
616    #[doc = r"Pointer to the register block"]
617    pub const PTR: *const pac::RegisterBlock = 0x4400_0000 as *const _;
618    #[doc = r"Return the pointer to the register block"]
619    #[inline(always)]
620    pub const fn ptr() -> *const pac::RegisterBlock {
621        Self::PTR
622    }
623}
624impl Deref for PAC {
625    type Target = pac::RegisterBlock;
626    #[inline(always)]
627    fn deref(&self) -> &Self::Target {
628        unsafe { &*Self::PTR }
629    }
630}
631impl core::fmt::Debug for PAC {
632    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
633        f.debug_struct("PAC").finish()
634    }
635}
636#[doc = "Peripheral Access Controller"]
637pub mod pac;
638#[doc = "Power Manager"]
639pub struct PM {
640    _marker: PhantomData<*const ()>,
641}
642unsafe impl Send for PM {}
643impl PM {
644    #[doc = r"Pointer to the register block"]
645    pub const PTR: *const pm::RegisterBlock = 0x4000_0000 as *const _;
646    #[doc = r"Return the pointer to the register block"]
647    #[inline(always)]
648    pub const fn ptr() -> *const pm::RegisterBlock {
649        Self::PTR
650    }
651}
652impl Deref for PM {
653    type Target = pm::RegisterBlock;
654    #[inline(always)]
655    fn deref(&self) -> &Self::Target {
656        unsafe { &*Self::PTR }
657    }
658}
659impl core::fmt::Debug for PM {
660    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
661        f.debug_struct("PM").finish()
662    }
663}
664#[doc = "Power Manager"]
665pub mod pm;
666#[doc = "Port Module"]
667pub struct PORT {
668    _marker: PhantomData<*const ()>,
669}
670unsafe impl Send for PORT {}
671impl PORT {
672    #[doc = r"Pointer to the register block"]
673    pub const PTR: *const port::RegisterBlock = 0x4000_2800 as *const _;
674    #[doc = r"Return the pointer to the register block"]
675    #[inline(always)]
676    pub const fn ptr() -> *const port::RegisterBlock {
677        Self::PTR
678    }
679}
680impl Deref for PORT {
681    type Target = port::RegisterBlock;
682    #[inline(always)]
683    fn deref(&self) -> &Self::Target {
684        unsafe { &*Self::PTR }
685    }
686}
687impl core::fmt::Debug for PORT {
688    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
689        f.debug_struct("PORT").finish()
690    }
691}
692#[doc = "Port Module"]
693pub mod port;
694#[doc = "Port Module (IOBUS)"]
695pub struct PORT_IOBUS {
696    _marker: PhantomData<*const ()>,
697}
698unsafe impl Send for PORT_IOBUS {}
699impl PORT_IOBUS {
700    #[doc = r"Pointer to the register block"]
701    pub const PTR: *const port::RegisterBlock = 0x6000_0000 as *const _;
702    #[doc = r"Return the pointer to the register block"]
703    #[inline(always)]
704    pub const fn ptr() -> *const port::RegisterBlock {
705        Self::PTR
706    }
707}
708impl Deref for PORT_IOBUS {
709    type Target = port::RegisterBlock;
710    #[inline(always)]
711    fn deref(&self) -> &Self::Target {
712        unsafe { &*Self::PTR }
713    }
714}
715impl core::fmt::Debug for PORT_IOBUS {
716    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
717        f.debug_struct("PORT_IOBUS").finish()
718    }
719}
720#[doc = "Port Module (IOBUS)"]
721pub use self::port as port_iobus;
722#[doc = "Reset Controller"]
723pub struct RSTC {
724    _marker: PhantomData<*const ()>,
725}
726unsafe impl Send for RSTC {}
727impl RSTC {
728    #[doc = r"Pointer to the register block"]
729    pub const PTR: *const rstc::RegisterBlock = 0x4000_0800 as *const _;
730    #[doc = r"Return the pointer to the register block"]
731    #[inline(always)]
732    pub const fn ptr() -> *const rstc::RegisterBlock {
733        Self::PTR
734    }
735}
736impl Deref for RSTC {
737    type Target = rstc::RegisterBlock;
738    #[inline(always)]
739    fn deref(&self) -> &Self::Target {
740        unsafe { &*Self::PTR }
741    }
742}
743impl core::fmt::Debug for RSTC {
744    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
745        f.debug_struct("RSTC").finish()
746    }
747}
748#[doc = "Reset Controller"]
749pub mod rstc;
750#[doc = "Real-Time Counter"]
751pub struct RTC {
752    _marker: PhantomData<*const ()>,
753}
754unsafe impl Send for RTC {}
755impl RTC {
756    #[doc = r"Pointer to the register block"]
757    pub const PTR: *const rtc::RegisterBlock = 0x4000_2000 as *const _;
758    #[doc = r"Return the pointer to the register block"]
759    #[inline(always)]
760    pub const fn ptr() -> *const rtc::RegisterBlock {
761        Self::PTR
762    }
763}
764impl Deref for RTC {
765    type Target = rtc::RegisterBlock;
766    #[inline(always)]
767    fn deref(&self) -> &Self::Target {
768        unsafe { &*Self::PTR }
769    }
770}
771impl core::fmt::Debug for RTC {
772    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
773        f.debug_struct("RTC").finish()
774    }
775}
776#[doc = "Real-Time Counter"]
777pub mod rtc;
778#[doc = "Serial Communication Interface 0"]
779pub struct SERCOM0 {
780    _marker: PhantomData<*const ()>,
781}
782unsafe impl Send for SERCOM0 {}
783impl SERCOM0 {
784    #[doc = r"Pointer to the register block"]
785    pub const PTR: *const sercom0::RegisterBlock = 0x4200_0000 as *const _;
786    #[doc = r"Return the pointer to the register block"]
787    #[inline(always)]
788    pub const fn ptr() -> *const sercom0::RegisterBlock {
789        Self::PTR
790    }
791}
792impl Deref for SERCOM0 {
793    type Target = sercom0::RegisterBlock;
794    #[inline(always)]
795    fn deref(&self) -> &Self::Target {
796        unsafe { &*Self::PTR }
797    }
798}
799impl core::fmt::Debug for SERCOM0 {
800    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
801        f.debug_struct("SERCOM0").finish()
802    }
803}
804#[doc = "Serial Communication Interface 0"]
805pub mod sercom0;
806#[doc = "Serial Communication Interface 1"]
807pub struct SERCOM1 {
808    _marker: PhantomData<*const ()>,
809}
810unsafe impl Send for SERCOM1 {}
811impl SERCOM1 {
812    #[doc = r"Pointer to the register block"]
813    pub const PTR: *const sercom0::RegisterBlock = 0x4200_0400 as *const _;
814    #[doc = r"Return the pointer to the register block"]
815    #[inline(always)]
816    pub const fn ptr() -> *const sercom0::RegisterBlock {
817        Self::PTR
818    }
819}
820impl Deref for SERCOM1 {
821    type Target = sercom0::RegisterBlock;
822    #[inline(always)]
823    fn deref(&self) -> &Self::Target {
824        unsafe { &*Self::PTR }
825    }
826}
827impl core::fmt::Debug for SERCOM1 {
828    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
829        f.debug_struct("SERCOM1").finish()
830    }
831}
832#[doc = "Serial Communication Interface 1"]
833pub use self::sercom0 as sercom1;
834#[doc = "Serial Communication Interface 2"]
835pub struct SERCOM2 {
836    _marker: PhantomData<*const ()>,
837}
838unsafe impl Send for SERCOM2 {}
839impl SERCOM2 {
840    #[doc = r"Pointer to the register block"]
841    pub const PTR: *const sercom0::RegisterBlock = 0x4200_0800 as *const _;
842    #[doc = r"Return the pointer to the register block"]
843    #[inline(always)]
844    pub const fn ptr() -> *const sercom0::RegisterBlock {
845        Self::PTR
846    }
847}
848impl Deref for SERCOM2 {
849    type Target = sercom0::RegisterBlock;
850    #[inline(always)]
851    fn deref(&self) -> &Self::Target {
852        unsafe { &*Self::PTR }
853    }
854}
855impl core::fmt::Debug for SERCOM2 {
856    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
857        f.debug_struct("SERCOM2").finish()
858    }
859}
860#[doc = "Serial Communication Interface 2"]
861pub use self::sercom0 as sercom2;
862#[doc = "Serial Communication Interface 3"]
863pub struct SERCOM3 {
864    _marker: PhantomData<*const ()>,
865}
866unsafe impl Send for SERCOM3 {}
867impl SERCOM3 {
868    #[doc = r"Pointer to the register block"]
869    pub const PTR: *const sercom0::RegisterBlock = 0x4200_0c00 as *const _;
870    #[doc = r"Return the pointer to the register block"]
871    #[inline(always)]
872    pub const fn ptr() -> *const sercom0::RegisterBlock {
873        Self::PTR
874    }
875}
876impl Deref for SERCOM3 {
877    type Target = sercom0::RegisterBlock;
878    #[inline(always)]
879    fn deref(&self) -> &Self::Target {
880        unsafe { &*Self::PTR }
881    }
882}
883impl core::fmt::Debug for SERCOM3 {
884    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
885        f.debug_struct("SERCOM3").finish()
886    }
887}
888#[doc = "Serial Communication Interface 3"]
889pub use self::sercom0 as sercom3;
890#[doc = "Serial Communication Interface 4"]
891pub struct SERCOM4 {
892    _marker: PhantomData<*const ()>,
893}
894unsafe impl Send for SERCOM4 {}
895impl SERCOM4 {
896    #[doc = r"Pointer to the register block"]
897    pub const PTR: *const sercom0::RegisterBlock = 0x4200_1000 as *const _;
898    #[doc = r"Return the pointer to the register block"]
899    #[inline(always)]
900    pub const fn ptr() -> *const sercom0::RegisterBlock {
901        Self::PTR
902    }
903}
904impl Deref for SERCOM4 {
905    type Target = sercom0::RegisterBlock;
906    #[inline(always)]
907    fn deref(&self) -> &Self::Target {
908        unsafe { &*Self::PTR }
909    }
910}
911impl core::fmt::Debug for SERCOM4 {
912    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
913        f.debug_struct("SERCOM4").finish()
914    }
915}
916#[doc = "Serial Communication Interface 4"]
917pub use self::sercom0 as sercom4;
918#[doc = "Serial Communication Interface 5"]
919pub struct SERCOM5 {
920    _marker: PhantomData<*const ()>,
921}
922unsafe impl Send for SERCOM5 {}
923impl SERCOM5 {
924    #[doc = r"Pointer to the register block"]
925    pub const PTR: *const sercom0::RegisterBlock = 0x4300_0400 as *const _;
926    #[doc = r"Return the pointer to the register block"]
927    #[inline(always)]
928    pub const fn ptr() -> *const sercom0::RegisterBlock {
929        Self::PTR
930    }
931}
932impl Deref for SERCOM5 {
933    type Target = sercom0::RegisterBlock;
934    #[inline(always)]
935    fn deref(&self) -> &Self::Target {
936        unsafe { &*Self::PTR }
937    }
938}
939impl core::fmt::Debug for SERCOM5 {
940    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
941        f.debug_struct("SERCOM5").finish()
942    }
943}
944#[doc = "Serial Communication Interface 5"]
945pub use self::sercom0 as sercom5;
946#[doc = "Supply Controller"]
947pub struct SUPC {
948    _marker: PhantomData<*const ()>,
949}
950unsafe impl Send for SUPC {}
951impl SUPC {
952    #[doc = r"Pointer to the register block"]
953    pub const PTR: *const supc::RegisterBlock = 0x4000_1400 as *const _;
954    #[doc = r"Return the pointer to the register block"]
955    #[inline(always)]
956    pub const fn ptr() -> *const supc::RegisterBlock {
957        Self::PTR
958    }
959}
960impl Deref for SUPC {
961    type Target = supc::RegisterBlock;
962    #[inline(always)]
963    fn deref(&self) -> &Self::Target {
964        unsafe { &*Self::PTR }
965    }
966}
967impl core::fmt::Debug for SUPC {
968    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
969        f.debug_struct("SUPC").finish()
970    }
971}
972#[doc = "Supply Controller"]
973pub mod supc;
974#[doc = "Basic Timer Counter 0"]
975pub struct TC0 {
976    _marker: PhantomData<*const ()>,
977}
978unsafe impl Send for TC0 {}
979impl TC0 {
980    #[doc = r"Pointer to the register block"]
981    pub const PTR: *const tc0::RegisterBlock = 0x4200_2000 as *const _;
982    #[doc = r"Return the pointer to the register block"]
983    #[inline(always)]
984    pub const fn ptr() -> *const tc0::RegisterBlock {
985        Self::PTR
986    }
987}
988impl Deref for TC0 {
989    type Target = tc0::RegisterBlock;
990    #[inline(always)]
991    fn deref(&self) -> &Self::Target {
992        unsafe { &*Self::PTR }
993    }
994}
995impl core::fmt::Debug for TC0 {
996    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
997        f.debug_struct("TC0").finish()
998    }
999}
1000#[doc = "Basic Timer Counter 0"]
1001pub mod tc0;
1002#[doc = "Basic Timer Counter 1"]
1003pub struct TC1 {
1004    _marker: PhantomData<*const ()>,
1005}
1006unsafe impl Send for TC1 {}
1007impl TC1 {
1008    #[doc = r"Pointer to the register block"]
1009    pub const PTR: *const tc0::RegisterBlock = 0x4200_2400 as *const _;
1010    #[doc = r"Return the pointer to the register block"]
1011    #[inline(always)]
1012    pub const fn ptr() -> *const tc0::RegisterBlock {
1013        Self::PTR
1014    }
1015}
1016impl Deref for TC1 {
1017    type Target = tc0::RegisterBlock;
1018    #[inline(always)]
1019    fn deref(&self) -> &Self::Target {
1020        unsafe { &*Self::PTR }
1021    }
1022}
1023impl core::fmt::Debug for TC1 {
1024    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1025        f.debug_struct("TC1").finish()
1026    }
1027}
1028#[doc = "Basic Timer Counter 1"]
1029pub use self::tc0 as tc1;
1030#[doc = "Basic Timer Counter 4"]
1031pub struct TC4 {
1032    _marker: PhantomData<*const ()>,
1033}
1034unsafe impl Send for TC4 {}
1035impl TC4 {
1036    #[doc = r"Pointer to the register block"]
1037    pub const PTR: *const tc0::RegisterBlock = 0x4300_0800 as *const _;
1038    #[doc = r"Return the pointer to the register block"]
1039    #[inline(always)]
1040    pub const fn ptr() -> *const tc0::RegisterBlock {
1041        Self::PTR
1042    }
1043}
1044impl Deref for TC4 {
1045    type Target = tc0::RegisterBlock;
1046    #[inline(always)]
1047    fn deref(&self) -> &Self::Target {
1048        unsafe { &*Self::PTR }
1049    }
1050}
1051impl core::fmt::Debug for TC4 {
1052    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1053        f.debug_struct("TC4").finish()
1054    }
1055}
1056#[doc = "Basic Timer Counter 4"]
1057pub use self::tc0 as tc4;
1058#[doc = "Timer Counter Control 0"]
1059pub struct TCC0 {
1060    _marker: PhantomData<*const ()>,
1061}
1062unsafe impl Send for TCC0 {}
1063impl TCC0 {
1064    #[doc = r"Pointer to the register block"]
1065    pub const PTR: *const tcc0::RegisterBlock = 0x4200_1400 as *const _;
1066    #[doc = r"Return the pointer to the register block"]
1067    #[inline(always)]
1068    pub const fn ptr() -> *const tcc0::RegisterBlock {
1069        Self::PTR
1070    }
1071}
1072impl Deref for TCC0 {
1073    type Target = tcc0::RegisterBlock;
1074    #[inline(always)]
1075    fn deref(&self) -> &Self::Target {
1076        unsafe { &*Self::PTR }
1077    }
1078}
1079impl core::fmt::Debug for TCC0 {
1080    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1081        f.debug_struct("TCC0").finish()
1082    }
1083}
1084#[doc = "Timer Counter Control 0"]
1085pub mod tcc0;
1086#[doc = "Timer Counter Control 1"]
1087pub struct TCC1 {
1088    _marker: PhantomData<*const ()>,
1089}
1090unsafe impl Send for TCC1 {}
1091impl TCC1 {
1092    #[doc = r"Pointer to the register block"]
1093    pub const PTR: *const tcc0::RegisterBlock = 0x4200_1800 as *const _;
1094    #[doc = r"Return the pointer to the register block"]
1095    #[inline(always)]
1096    pub const fn ptr() -> *const tcc0::RegisterBlock {
1097        Self::PTR
1098    }
1099}
1100impl Deref for TCC1 {
1101    type Target = tcc0::RegisterBlock;
1102    #[inline(always)]
1103    fn deref(&self) -> &Self::Target {
1104        unsafe { &*Self::PTR }
1105    }
1106}
1107impl core::fmt::Debug for TCC1 {
1108    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1109        f.debug_struct("TCC1").finish()
1110    }
1111}
1112#[doc = "Timer Counter Control 1"]
1113pub use self::tcc0 as tcc1;
1114#[doc = "Timer Counter Control 2"]
1115pub struct TCC2 {
1116    _marker: PhantomData<*const ()>,
1117}
1118unsafe impl Send for TCC2 {}
1119impl TCC2 {
1120    #[doc = r"Pointer to the register block"]
1121    pub const PTR: *const tcc0::RegisterBlock = 0x4200_1c00 as *const _;
1122    #[doc = r"Return the pointer to the register block"]
1123    #[inline(always)]
1124    pub const fn ptr() -> *const tcc0::RegisterBlock {
1125        Self::PTR
1126    }
1127}
1128impl Deref for TCC2 {
1129    type Target = tcc0::RegisterBlock;
1130    #[inline(always)]
1131    fn deref(&self) -> &Self::Target {
1132        unsafe { &*Self::PTR }
1133    }
1134}
1135impl core::fmt::Debug for TCC2 {
1136    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1137        f.debug_struct("TCC2").finish()
1138    }
1139}
1140#[doc = "Timer Counter Control 2"]
1141pub use self::tcc0 as tcc2;
1142#[doc = "True Random Generator"]
1143pub struct TRNG {
1144    _marker: PhantomData<*const ()>,
1145}
1146unsafe impl Send for TRNG {}
1147impl TRNG {
1148    #[doc = r"Pointer to the register block"]
1149    pub const PTR: *const trng::RegisterBlock = 0x4200_3800 as *const _;
1150    #[doc = r"Return the pointer to the register block"]
1151    #[inline(always)]
1152    pub const fn ptr() -> *const trng::RegisterBlock {
1153        Self::PTR
1154    }
1155}
1156impl Deref for TRNG {
1157    type Target = trng::RegisterBlock;
1158    #[inline(always)]
1159    fn deref(&self) -> &Self::Target {
1160        unsafe { &*Self::PTR }
1161    }
1162}
1163impl core::fmt::Debug for TRNG {
1164    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1165        f.debug_struct("TRNG").finish()
1166    }
1167}
1168#[doc = "True Random Generator"]
1169pub mod trng;
1170#[doc = "Universal Serial Bus"]
1171pub struct USB {
1172    _marker: PhantomData<*const ()>,
1173}
1174unsafe impl Send for USB {}
1175impl USB {
1176    #[doc = r"Pointer to the register block"]
1177    pub const PTR: *const usb::RegisterBlock = 0x4100_0000 as *const _;
1178    #[doc = r"Return the pointer to the register block"]
1179    #[inline(always)]
1180    pub const fn ptr() -> *const usb::RegisterBlock {
1181        Self::PTR
1182    }
1183}
1184impl Deref for USB {
1185    type Target = usb::RegisterBlock;
1186    #[inline(always)]
1187    fn deref(&self) -> &Self::Target {
1188        unsafe { &*Self::PTR }
1189    }
1190}
1191impl core::fmt::Debug for USB {
1192    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1193        f.debug_struct("USB").finish()
1194    }
1195}
1196#[doc = "Universal Serial Bus"]
1197pub mod usb;
1198#[doc = "Watchdog Timer"]
1199pub struct WDT {
1200    _marker: PhantomData<*const ()>,
1201}
1202unsafe impl Send for WDT {}
1203impl WDT {
1204    #[doc = r"Pointer to the register block"]
1205    pub const PTR: *const wdt::RegisterBlock = 0x4000_1c00 as *const _;
1206    #[doc = r"Return the pointer to the register block"]
1207    #[inline(always)]
1208    pub const fn ptr() -> *const wdt::RegisterBlock {
1209        Self::PTR
1210    }
1211}
1212impl Deref for WDT {
1213    type Target = wdt::RegisterBlock;
1214    #[inline(always)]
1215    fn deref(&self) -> &Self::Target {
1216        unsafe { &*Self::PTR }
1217    }
1218}
1219impl core::fmt::Debug for WDT {
1220    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1221        f.debug_struct("WDT").finish()
1222    }
1223}
1224#[doc = "Watchdog Timer"]
1225pub mod wdt;
1226#[no_mangle]
1227static mut DEVICE_PERIPHERALS: bool = false;
1228#[doc = r" All the peripherals."]
1229#[allow(non_snake_case)]
1230pub struct Peripherals {
1231    #[doc = "AC"]
1232    pub AC: AC,
1233    #[doc = "ADC"]
1234    pub ADC: ADC,
1235    #[doc = "AES"]
1236    pub AES: AES,
1237    #[doc = "CCL"]
1238    pub CCL: CCL,
1239    #[doc = "DAC"]
1240    pub DAC: DAC,
1241    #[doc = "DMAC"]
1242    pub DMAC: DMAC,
1243    #[doc = "DSU"]
1244    pub DSU: DSU,
1245    #[doc = "EIC"]
1246    pub EIC: EIC,
1247    #[doc = "EVSYS"]
1248    pub EVSYS: EVSYS,
1249    #[doc = "GCLK"]
1250    pub GCLK: GCLK,
1251    #[doc = "MCLK"]
1252    pub MCLK: MCLK,
1253    #[doc = "MTB"]
1254    pub MTB: MTB,
1255    #[doc = "NVMCTRL"]
1256    pub NVMCTRL: NVMCTRL,
1257    #[doc = "OPAMP"]
1258    pub OPAMP: OPAMP,
1259    #[doc = "OSCCTRL"]
1260    pub OSCCTRL: OSCCTRL,
1261    #[doc = "OSC32KCTRL"]
1262    pub OSC32KCTRL: OSC32KCTRL,
1263    #[doc = "PAC"]
1264    pub PAC: PAC,
1265    #[doc = "PM"]
1266    pub PM: PM,
1267    #[doc = "PORT"]
1268    pub PORT: PORT,
1269    #[doc = "PORT_IOBUS"]
1270    pub PORT_IOBUS: PORT_IOBUS,
1271    #[doc = "RSTC"]
1272    pub RSTC: RSTC,
1273    #[doc = "RTC"]
1274    pub RTC: RTC,
1275    #[doc = "SERCOM0"]
1276    pub SERCOM0: SERCOM0,
1277    #[doc = "SERCOM1"]
1278    pub SERCOM1: SERCOM1,
1279    #[doc = "SERCOM2"]
1280    pub SERCOM2: SERCOM2,
1281    #[doc = "SERCOM3"]
1282    pub SERCOM3: SERCOM3,
1283    #[doc = "SERCOM4"]
1284    pub SERCOM4: SERCOM4,
1285    #[doc = "SERCOM5"]
1286    pub SERCOM5: SERCOM5,
1287    #[doc = "SUPC"]
1288    pub SUPC: SUPC,
1289    #[doc = "TC0"]
1290    pub TC0: TC0,
1291    #[doc = "TC1"]
1292    pub TC1: TC1,
1293    #[doc = "TC4"]
1294    pub TC4: TC4,
1295    #[doc = "TCC0"]
1296    pub TCC0: TCC0,
1297    #[doc = "TCC1"]
1298    pub TCC1: TCC1,
1299    #[doc = "TCC2"]
1300    pub TCC2: TCC2,
1301    #[doc = "TRNG"]
1302    pub TRNG: TRNG,
1303    #[doc = "USB"]
1304    pub USB: USB,
1305    #[doc = "WDT"]
1306    pub WDT: WDT,
1307}
1308impl Peripherals {
1309    #[doc = r" Returns all the peripherals *once*."]
1310    #[cfg(feature = "critical-section")]
1311    #[inline]
1312    pub fn take() -> Option<Self> {
1313        critical_section::with(|_| {
1314            if unsafe { DEVICE_PERIPHERALS } {
1315                return None;
1316            }
1317            Some(unsafe { Peripherals::steal() })
1318        })
1319    }
1320    #[doc = r" Unchecked version of `Peripherals::take`."]
1321    #[doc = r""]
1322    #[doc = r" # Safety"]
1323    #[doc = r""]
1324    #[doc = r" Each of the returned peripherals must be used at most once."]
1325    #[inline]
1326    pub unsafe fn steal() -> Self {
1327        DEVICE_PERIPHERALS = true;
1328        Peripherals {
1329            AC: AC {
1330                _marker: PhantomData,
1331            },
1332            ADC: ADC {
1333                _marker: PhantomData,
1334            },
1335            AES: AES {
1336                _marker: PhantomData,
1337            },
1338            CCL: CCL {
1339                _marker: PhantomData,
1340            },
1341            DAC: DAC {
1342                _marker: PhantomData,
1343            },
1344            DMAC: DMAC {
1345                _marker: PhantomData,
1346            },
1347            DSU: DSU {
1348                _marker: PhantomData,
1349            },
1350            EIC: EIC {
1351                _marker: PhantomData,
1352            },
1353            EVSYS: EVSYS {
1354                _marker: PhantomData,
1355            },
1356            GCLK: GCLK {
1357                _marker: PhantomData,
1358            },
1359            MCLK: MCLK {
1360                _marker: PhantomData,
1361            },
1362            MTB: MTB {
1363                _marker: PhantomData,
1364            },
1365            NVMCTRL: NVMCTRL {
1366                _marker: PhantomData,
1367            },
1368            OPAMP: OPAMP {
1369                _marker: PhantomData,
1370            },
1371            OSCCTRL: OSCCTRL {
1372                _marker: PhantomData,
1373            },
1374            OSC32KCTRL: OSC32KCTRL {
1375                _marker: PhantomData,
1376            },
1377            PAC: PAC {
1378                _marker: PhantomData,
1379            },
1380            PM: PM {
1381                _marker: PhantomData,
1382            },
1383            PORT: PORT {
1384                _marker: PhantomData,
1385            },
1386            PORT_IOBUS: PORT_IOBUS {
1387                _marker: PhantomData,
1388            },
1389            RSTC: RSTC {
1390                _marker: PhantomData,
1391            },
1392            RTC: RTC {
1393                _marker: PhantomData,
1394            },
1395            SERCOM0: SERCOM0 {
1396                _marker: PhantomData,
1397            },
1398            SERCOM1: SERCOM1 {
1399                _marker: PhantomData,
1400            },
1401            SERCOM2: SERCOM2 {
1402                _marker: PhantomData,
1403            },
1404            SERCOM3: SERCOM3 {
1405                _marker: PhantomData,
1406            },
1407            SERCOM4: SERCOM4 {
1408                _marker: PhantomData,
1409            },
1410            SERCOM5: SERCOM5 {
1411                _marker: PhantomData,
1412            },
1413            SUPC: SUPC {
1414                _marker: PhantomData,
1415            },
1416            TC0: TC0 {
1417                _marker: PhantomData,
1418            },
1419            TC1: TC1 {
1420                _marker: PhantomData,
1421            },
1422            TC4: TC4 {
1423                _marker: PhantomData,
1424            },
1425            TCC0: TCC0 {
1426                _marker: PhantomData,
1427            },
1428            TCC1: TCC1 {
1429                _marker: PhantomData,
1430            },
1431            TCC2: TCC2 {
1432                _marker: PhantomData,
1433            },
1434            TRNG: TRNG {
1435                _marker: PhantomData,
1436            },
1437            USB: USB {
1438                _marker: PhantomData,
1439            },
1440            WDT: WDT {
1441                _marker: PhantomData,
1442            },
1443        }
1444    }
1445}