1#![doc = "Peripheral access API for ATSAMD21G microcontrollers (generated using svd2rust v0.33.5 ( ))\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.33.5/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#![allow(non_camel_case_types)]
4#![allow(non_snake_case)]
5#![allow(clippy::all)]
6#![allow(unknown_lints)]
7#![allow(mismatched_lifetime_syntaxes)]
8#![no_std]
9use core::marker::PhantomData;
10use core::ops::Deref;
11#[doc = r"Number available in the NVIC for configuring priority"]
12pub const NVIC_PRIO_BITS: u8 = 2;
13#[cfg(feature = "rt")]
14pub use self::Interrupt as interrupt;
15pub use cortex_m::peripheral::Peripherals as CorePeripherals;
16pub use cortex_m::peripheral::{CBP, CPUID, DCB, DWT, FPB, ITM, MPU, NVIC, SCB, SYST, TPIU};
17#[cfg(feature = "rt")]
18pub use cortex_m_rt::interrupt;
19#[allow(unused_imports)]
20use generic::*;
21#[doc = r"Common register and bit access and modify traits"]
22pub mod generic;
23#[cfg(feature = "rt")]
24extern "C" {
25 fn PM();
26 fn SYSCTRL();
27 fn WDT();
28 fn RTC();
29 fn EIC();
30 fn NVMCTRL();
31 fn DMAC();
32 fn USB();
33 fn EVSYS();
34 fn SERCOM0();
35 fn SERCOM1();
36 fn SERCOM2();
37 fn SERCOM3();
38 fn SERCOM4();
39 fn SERCOM5();
40 fn TCC0();
41 fn TCC1();
42 fn TCC2();
43 fn TC3();
44 fn TC4();
45 fn TC5();
46 fn ADC();
47 fn AC();
48 fn DAC();
49 fn I2S();
50}
51#[doc(hidden)]
52#[repr(C)]
53pub union Vector {
54 _handler: unsafe extern "C" fn(),
55 _reserved: u32,
56}
57#[cfg(feature = "rt")]
58#[doc(hidden)]
59#[link_section = ".vector_table.interrupts"]
60#[no_mangle]
61pub static __INTERRUPTS: [Vector; 28] = [
62 Vector { _handler: PM },
63 Vector { _handler: SYSCTRL },
64 Vector { _handler: WDT },
65 Vector { _handler: RTC },
66 Vector { _handler: EIC },
67 Vector { _handler: NVMCTRL },
68 Vector { _handler: DMAC },
69 Vector { _handler: USB },
70 Vector { _handler: EVSYS },
71 Vector { _handler: SERCOM0 },
72 Vector { _handler: SERCOM1 },
73 Vector { _handler: SERCOM2 },
74 Vector { _handler: SERCOM3 },
75 Vector { _handler: SERCOM4 },
76 Vector { _handler: SERCOM5 },
77 Vector { _handler: TCC0 },
78 Vector { _handler: TCC1 },
79 Vector { _handler: TCC2 },
80 Vector { _handler: TC3 },
81 Vector { _handler: TC4 },
82 Vector { _handler: TC5 },
83 Vector { _reserved: 0 },
84 Vector { _reserved: 0 },
85 Vector { _handler: ADC },
86 Vector { _handler: AC },
87 Vector { _handler: DAC },
88 Vector { _reserved: 0 },
89 Vector { _handler: I2S },
90];
91#[doc = r"Enumeration of all the interrupts."]
92#[derive(Copy, Clone, Debug, PartialEq, Eq)]
93#[repr(u16)]
94pub enum Interrupt {
95 #[doc = "0 - PM"]
96 PM = 0,
97 #[doc = "1 - SYSCTRL"]
98 SYSCTRL = 1,
99 #[doc = "2 - WDT"]
100 WDT = 2,
101 #[doc = "3 - RTC"]
102 RTC = 3,
103 #[doc = "4 - EIC"]
104 EIC = 4,
105 #[doc = "5 - NVMCTRL"]
106 NVMCTRL = 5,
107 #[doc = "6 - DMAC"]
108 DMAC = 6,
109 #[doc = "7 - USB"]
110 USB = 7,
111 #[doc = "8 - EVSYS"]
112 EVSYS = 8,
113 #[doc = "9 - SERCOM0"]
114 SERCOM0 = 9,
115 #[doc = "10 - SERCOM1"]
116 SERCOM1 = 10,
117 #[doc = "11 - SERCOM2"]
118 SERCOM2 = 11,
119 #[doc = "12 - SERCOM3"]
120 SERCOM3 = 12,
121 #[doc = "13 - SERCOM4"]
122 SERCOM4 = 13,
123 #[doc = "14 - SERCOM5"]
124 SERCOM5 = 14,
125 #[doc = "15 - TCC0"]
126 TCC0 = 15,
127 #[doc = "16 - TCC1"]
128 TCC1 = 16,
129 #[doc = "17 - TCC2"]
130 TCC2 = 17,
131 #[doc = "18 - TC3"]
132 TC3 = 18,
133 #[doc = "19 - TC4"]
134 TC4 = 19,
135 #[doc = "20 - TC5"]
136 TC5 = 20,
137 #[doc = "23 - ADC"]
138 ADC = 23,
139 #[doc = "24 - AC"]
140 AC = 24,
141 #[doc = "25 - DAC"]
142 DAC = 25,
143 #[doc = "27 - I2S"]
144 I2S = 27,
145}
146unsafe impl cortex_m::interrupt::InterruptNumber for Interrupt {
147 #[inline(always)]
148 fn number(self) -> u16 {
149 self as u16
150 }
151}
152#[doc = "Analog Comparators"]
153pub struct Ac {
154 _marker: PhantomData<*const ()>,
155}
156unsafe impl Send for Ac {}
157impl Ac {
158 #[doc = r"Pointer to the register block"]
159 pub const PTR: *const ac::RegisterBlock = 0x4200_4400 as *const _;
160 #[doc = r"Return the pointer to the register block"]
161 #[inline(always)]
162 pub const fn ptr() -> *const ac::RegisterBlock {
163 Self::PTR
164 }
165 #[doc = r" Steal an instance of this peripheral"]
166 #[doc = r""]
167 #[doc = r" # Safety"]
168 #[doc = r""]
169 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
170 #[doc = r" that may race with any existing instances, for example by only"]
171 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
172 #[doc = r" original peripheral and using critical sections to coordinate"]
173 #[doc = r" access between multiple new instances."]
174 #[doc = r""]
175 #[doc = r" Additionally, other software such as HALs may rely on only one"]
176 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
177 #[doc = r" no stolen instances are passed to such software."]
178 pub unsafe fn steal() -> Self {
179 Self {
180 _marker: PhantomData,
181 }
182 }
183}
184impl Deref for Ac {
185 type Target = ac::RegisterBlock;
186 #[inline(always)]
187 fn deref(&self) -> &Self::Target {
188 unsafe { &*Self::PTR }
189 }
190}
191impl core::fmt::Debug for Ac {
192 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
193 f.debug_struct("Ac").finish()
194 }
195}
196#[doc = "Analog Comparators"]
197pub mod ac;
198#[doc = "Analog Digital Converter"]
199pub struct Adc {
200 _marker: PhantomData<*const ()>,
201}
202unsafe impl Send for Adc {}
203impl Adc {
204 #[doc = r"Pointer to the register block"]
205 pub const PTR: *const adc::RegisterBlock = 0x4200_4000 as *const _;
206 #[doc = r"Return the pointer to the register block"]
207 #[inline(always)]
208 pub const fn ptr() -> *const adc::RegisterBlock {
209 Self::PTR
210 }
211 #[doc = r" Steal an instance of this peripheral"]
212 #[doc = r""]
213 #[doc = r" # Safety"]
214 #[doc = r""]
215 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
216 #[doc = r" that may race with any existing instances, for example by only"]
217 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
218 #[doc = r" original peripheral and using critical sections to coordinate"]
219 #[doc = r" access between multiple new instances."]
220 #[doc = r""]
221 #[doc = r" Additionally, other software such as HALs may rely on only one"]
222 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
223 #[doc = r" no stolen instances are passed to such software."]
224 pub unsafe fn steal() -> Self {
225 Self {
226 _marker: PhantomData,
227 }
228 }
229}
230impl Deref for Adc {
231 type Target = adc::RegisterBlock;
232 #[inline(always)]
233 fn deref(&self) -> &Self::Target {
234 unsafe { &*Self::PTR }
235 }
236}
237impl core::fmt::Debug for Adc {
238 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
239 f.debug_struct("Adc").finish()
240 }
241}
242#[doc = "Analog Digital Converter"]
243pub mod adc;
244#[doc = "Digital Analog Converter"]
245pub struct Dac {
246 _marker: PhantomData<*const ()>,
247}
248unsafe impl Send for Dac {}
249impl Dac {
250 #[doc = r"Pointer to the register block"]
251 pub const PTR: *const dac::RegisterBlock = 0x4200_4800 as *const _;
252 #[doc = r"Return the pointer to the register block"]
253 #[inline(always)]
254 pub const fn ptr() -> *const dac::RegisterBlock {
255 Self::PTR
256 }
257 #[doc = r" Steal an instance of this peripheral"]
258 #[doc = r""]
259 #[doc = r" # Safety"]
260 #[doc = r""]
261 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
262 #[doc = r" that may race with any existing instances, for example by only"]
263 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
264 #[doc = r" original peripheral and using critical sections to coordinate"]
265 #[doc = r" access between multiple new instances."]
266 #[doc = r""]
267 #[doc = r" Additionally, other software such as HALs may rely on only one"]
268 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
269 #[doc = r" no stolen instances are passed to such software."]
270 pub unsafe fn steal() -> Self {
271 Self {
272 _marker: PhantomData,
273 }
274 }
275}
276impl Deref for Dac {
277 type Target = dac::RegisterBlock;
278 #[inline(always)]
279 fn deref(&self) -> &Self::Target {
280 unsafe { &*Self::PTR }
281 }
282}
283impl core::fmt::Debug for Dac {
284 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
285 f.debug_struct("Dac").finish()
286 }
287}
288#[doc = "Digital Analog Converter"]
289pub mod dac;
290#[doc = "Direct Memory Access Controller"]
291pub struct Dmac {
292 _marker: PhantomData<*const ()>,
293}
294unsafe impl Send for Dmac {}
295impl Dmac {
296 #[doc = r"Pointer to the register block"]
297 pub const PTR: *const dmac::RegisterBlock = 0x4100_4800 as *const _;
298 #[doc = r"Return the pointer to the register block"]
299 #[inline(always)]
300 pub const fn ptr() -> *const dmac::RegisterBlock {
301 Self::PTR
302 }
303 #[doc = r" Steal an instance of this peripheral"]
304 #[doc = r""]
305 #[doc = r" # Safety"]
306 #[doc = r""]
307 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
308 #[doc = r" that may race with any existing instances, for example by only"]
309 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
310 #[doc = r" original peripheral and using critical sections to coordinate"]
311 #[doc = r" access between multiple new instances."]
312 #[doc = r""]
313 #[doc = r" Additionally, other software such as HALs may rely on only one"]
314 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
315 #[doc = r" no stolen instances are passed to such software."]
316 pub unsafe fn steal() -> Self {
317 Self {
318 _marker: PhantomData,
319 }
320 }
321}
322impl Deref for Dmac {
323 type Target = dmac::RegisterBlock;
324 #[inline(always)]
325 fn deref(&self) -> &Self::Target {
326 unsafe { &*Self::PTR }
327 }
328}
329impl core::fmt::Debug for Dmac {
330 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
331 f.debug_struct("Dmac").finish()
332 }
333}
334#[doc = "Direct Memory Access Controller"]
335pub mod dmac;
336#[doc = "Device Service Unit"]
337pub struct Dsu {
338 _marker: PhantomData<*const ()>,
339}
340unsafe impl Send for Dsu {}
341impl Dsu {
342 #[doc = r"Pointer to the register block"]
343 pub const PTR: *const dsu::RegisterBlock = 0x4100_2000 as *const _;
344 #[doc = r"Return the pointer to the register block"]
345 #[inline(always)]
346 pub const fn ptr() -> *const dsu::RegisterBlock {
347 Self::PTR
348 }
349 #[doc = r" Steal an instance of this peripheral"]
350 #[doc = r""]
351 #[doc = r" # Safety"]
352 #[doc = r""]
353 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
354 #[doc = r" that may race with any existing instances, for example by only"]
355 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
356 #[doc = r" original peripheral and using critical sections to coordinate"]
357 #[doc = r" access between multiple new instances."]
358 #[doc = r""]
359 #[doc = r" Additionally, other software such as HALs may rely on only one"]
360 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
361 #[doc = r" no stolen instances are passed to such software."]
362 pub unsafe fn steal() -> Self {
363 Self {
364 _marker: PhantomData,
365 }
366 }
367}
368impl Deref for Dsu {
369 type Target = dsu::RegisterBlock;
370 #[inline(always)]
371 fn deref(&self) -> &Self::Target {
372 unsafe { &*Self::PTR }
373 }
374}
375impl core::fmt::Debug for Dsu {
376 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
377 f.debug_struct("Dsu").finish()
378 }
379}
380#[doc = "Device Service Unit"]
381pub mod dsu;
382#[doc = "External Interrupt Controller"]
383pub struct Eic {
384 _marker: PhantomData<*const ()>,
385}
386unsafe impl Send for Eic {}
387impl Eic {
388 #[doc = r"Pointer to the register block"]
389 pub const PTR: *const eic::RegisterBlock = 0x4000_1800 as *const _;
390 #[doc = r"Return the pointer to the register block"]
391 #[inline(always)]
392 pub const fn ptr() -> *const eic::RegisterBlock {
393 Self::PTR
394 }
395 #[doc = r" Steal an instance of this peripheral"]
396 #[doc = r""]
397 #[doc = r" # Safety"]
398 #[doc = r""]
399 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
400 #[doc = r" that may race with any existing instances, for example by only"]
401 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
402 #[doc = r" original peripheral and using critical sections to coordinate"]
403 #[doc = r" access between multiple new instances."]
404 #[doc = r""]
405 #[doc = r" Additionally, other software such as HALs may rely on only one"]
406 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
407 #[doc = r" no stolen instances are passed to such software."]
408 pub unsafe fn steal() -> Self {
409 Self {
410 _marker: PhantomData,
411 }
412 }
413}
414impl Deref for Eic {
415 type Target = eic::RegisterBlock;
416 #[inline(always)]
417 fn deref(&self) -> &Self::Target {
418 unsafe { &*Self::PTR }
419 }
420}
421impl core::fmt::Debug for Eic {
422 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
423 f.debug_struct("Eic").finish()
424 }
425}
426#[doc = "External Interrupt Controller"]
427pub mod eic;
428#[doc = "Event System Interface"]
429pub struct Evsys {
430 _marker: PhantomData<*const ()>,
431}
432unsafe impl Send for Evsys {}
433impl Evsys {
434 #[doc = r"Pointer to the register block"]
435 pub const PTR: *const evsys::RegisterBlock = 0x4200_0400 as *const _;
436 #[doc = r"Return the pointer to the register block"]
437 #[inline(always)]
438 pub const fn ptr() -> *const evsys::RegisterBlock {
439 Self::PTR
440 }
441 #[doc = r" Steal an instance of this peripheral"]
442 #[doc = r""]
443 #[doc = r" # Safety"]
444 #[doc = r""]
445 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
446 #[doc = r" that may race with any existing instances, for example by only"]
447 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
448 #[doc = r" original peripheral and using critical sections to coordinate"]
449 #[doc = r" access between multiple new instances."]
450 #[doc = r""]
451 #[doc = r" Additionally, other software such as HALs may rely on only one"]
452 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
453 #[doc = r" no stolen instances are passed to such software."]
454 pub unsafe fn steal() -> Self {
455 Self {
456 _marker: PhantomData,
457 }
458 }
459}
460impl Deref for Evsys {
461 type Target = evsys::RegisterBlock;
462 #[inline(always)]
463 fn deref(&self) -> &Self::Target {
464 unsafe { &*Self::PTR }
465 }
466}
467impl core::fmt::Debug for Evsys {
468 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
469 f.debug_struct("Evsys").finish()
470 }
471}
472#[doc = "Event System Interface"]
473pub mod evsys;
474#[doc = "Generic Clock Generator"]
475pub struct Gclk {
476 _marker: PhantomData<*const ()>,
477}
478unsafe impl Send for Gclk {}
479impl Gclk {
480 #[doc = r"Pointer to the register block"]
481 pub const PTR: *const gclk::RegisterBlock = 0x4000_0c00 as *const _;
482 #[doc = r"Return the pointer to the register block"]
483 #[inline(always)]
484 pub const fn ptr() -> *const gclk::RegisterBlock {
485 Self::PTR
486 }
487 #[doc = r" Steal an instance of this peripheral"]
488 #[doc = r""]
489 #[doc = r" # Safety"]
490 #[doc = r""]
491 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
492 #[doc = r" that may race with any existing instances, for example by only"]
493 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
494 #[doc = r" original peripheral and using critical sections to coordinate"]
495 #[doc = r" access between multiple new instances."]
496 #[doc = r""]
497 #[doc = r" Additionally, other software such as HALs may rely on only one"]
498 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
499 #[doc = r" no stolen instances are passed to such software."]
500 pub unsafe fn steal() -> Self {
501 Self {
502 _marker: PhantomData,
503 }
504 }
505}
506impl Deref for Gclk {
507 type Target = gclk::RegisterBlock;
508 #[inline(always)]
509 fn deref(&self) -> &Self::Target {
510 unsafe { &*Self::PTR }
511 }
512}
513impl core::fmt::Debug for Gclk {
514 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
515 f.debug_struct("Gclk").finish()
516 }
517}
518#[doc = "Generic Clock Generator"]
519pub mod gclk;
520#[doc = "HSB Matrix"]
521pub struct Hmatrix {
522 _marker: PhantomData<*const ()>,
523}
524unsafe impl Send for Hmatrix {}
525impl Hmatrix {
526 #[doc = r"Pointer to the register block"]
527 pub const PTR: *const hmatrix::RegisterBlock = 0x4100_7000 as *const _;
528 #[doc = r"Return the pointer to the register block"]
529 #[inline(always)]
530 pub const fn ptr() -> *const hmatrix::RegisterBlock {
531 Self::PTR
532 }
533 #[doc = r" Steal an instance of this peripheral"]
534 #[doc = r""]
535 #[doc = r" # Safety"]
536 #[doc = r""]
537 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
538 #[doc = r" that may race with any existing instances, for example by only"]
539 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
540 #[doc = r" original peripheral and using critical sections to coordinate"]
541 #[doc = r" access between multiple new instances."]
542 #[doc = r""]
543 #[doc = r" Additionally, other software such as HALs may rely on only one"]
544 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
545 #[doc = r" no stolen instances are passed to such software."]
546 pub unsafe fn steal() -> Self {
547 Self {
548 _marker: PhantomData,
549 }
550 }
551}
552impl Deref for Hmatrix {
553 type Target = hmatrix::RegisterBlock;
554 #[inline(always)]
555 fn deref(&self) -> &Self::Target {
556 unsafe { &*Self::PTR }
557 }
558}
559impl core::fmt::Debug for Hmatrix {
560 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
561 f.debug_struct("Hmatrix").finish()
562 }
563}
564#[doc = "HSB Matrix"]
565pub mod hmatrix;
566#[doc = "Inter-IC Sound Interface"]
567pub struct I2s {
568 _marker: PhantomData<*const ()>,
569}
570unsafe impl Send for I2s {}
571impl I2s {
572 #[doc = r"Pointer to the register block"]
573 pub const PTR: *const i2s::RegisterBlock = 0x4200_5000 as *const _;
574 #[doc = r"Return the pointer to the register block"]
575 #[inline(always)]
576 pub const fn ptr() -> *const i2s::RegisterBlock {
577 Self::PTR
578 }
579 #[doc = r" Steal an instance of this peripheral"]
580 #[doc = r""]
581 #[doc = r" # Safety"]
582 #[doc = r""]
583 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
584 #[doc = r" that may race with any existing instances, for example by only"]
585 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
586 #[doc = r" original peripheral and using critical sections to coordinate"]
587 #[doc = r" access between multiple new instances."]
588 #[doc = r""]
589 #[doc = r" Additionally, other software such as HALs may rely on only one"]
590 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
591 #[doc = r" no stolen instances are passed to such software."]
592 pub unsafe fn steal() -> Self {
593 Self {
594 _marker: PhantomData,
595 }
596 }
597}
598impl Deref for I2s {
599 type Target = i2s::RegisterBlock;
600 #[inline(always)]
601 fn deref(&self) -> &Self::Target {
602 unsafe { &*Self::PTR }
603 }
604}
605impl core::fmt::Debug for I2s {
606 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
607 f.debug_struct("I2s").finish()
608 }
609}
610#[doc = "Inter-IC Sound Interface"]
611pub mod i2s;
612#[doc = "Cortex-M0+ Micro-Trace Buffer"]
613pub struct Mtb {
614 _marker: PhantomData<*const ()>,
615}
616unsafe impl Send for Mtb {}
617impl Mtb {
618 #[doc = r"Pointer to the register block"]
619 pub const PTR: *const mtb::RegisterBlock = 0x4100_6000 as *const _;
620 #[doc = r"Return the pointer to the register block"]
621 #[inline(always)]
622 pub const fn ptr() -> *const mtb::RegisterBlock {
623 Self::PTR
624 }
625 #[doc = r" Steal an instance of this peripheral"]
626 #[doc = r""]
627 #[doc = r" # Safety"]
628 #[doc = r""]
629 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
630 #[doc = r" that may race with any existing instances, for example by only"]
631 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
632 #[doc = r" original peripheral and using critical sections to coordinate"]
633 #[doc = r" access between multiple new instances."]
634 #[doc = r""]
635 #[doc = r" Additionally, other software such as HALs may rely on only one"]
636 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
637 #[doc = r" no stolen instances are passed to such software."]
638 pub unsafe fn steal() -> Self {
639 Self {
640 _marker: PhantomData,
641 }
642 }
643}
644impl Deref for Mtb {
645 type Target = mtb::RegisterBlock;
646 #[inline(always)]
647 fn deref(&self) -> &Self::Target {
648 unsafe { &*Self::PTR }
649 }
650}
651impl core::fmt::Debug for Mtb {
652 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
653 f.debug_struct("Mtb").finish()
654 }
655}
656#[doc = "Cortex-M0+ Micro-Trace Buffer"]
657pub mod mtb;
658#[doc = "Non-Volatile Memory Controller"]
659pub struct Nvmctrl {
660 _marker: PhantomData<*const ()>,
661}
662unsafe impl Send for Nvmctrl {}
663impl Nvmctrl {
664 #[doc = r"Pointer to the register block"]
665 pub const PTR: *const nvmctrl::RegisterBlock = 0x4100_4000 as *const _;
666 #[doc = r"Return the pointer to the register block"]
667 #[inline(always)]
668 pub const fn ptr() -> *const nvmctrl::RegisterBlock {
669 Self::PTR
670 }
671 #[doc = r" Steal an instance of this peripheral"]
672 #[doc = r""]
673 #[doc = r" # Safety"]
674 #[doc = r""]
675 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
676 #[doc = r" that may race with any existing instances, for example by only"]
677 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
678 #[doc = r" original peripheral and using critical sections to coordinate"]
679 #[doc = r" access between multiple new instances."]
680 #[doc = r""]
681 #[doc = r" Additionally, other software such as HALs may rely on only one"]
682 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
683 #[doc = r" no stolen instances are passed to such software."]
684 pub unsafe fn steal() -> Self {
685 Self {
686 _marker: PhantomData,
687 }
688 }
689}
690impl Deref for Nvmctrl {
691 type Target = nvmctrl::RegisterBlock;
692 #[inline(always)]
693 fn deref(&self) -> &Self::Target {
694 unsafe { &*Self::PTR }
695 }
696}
697impl core::fmt::Debug for Nvmctrl {
698 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
699 f.debug_struct("Nvmctrl").finish()
700 }
701}
702#[doc = "Non-Volatile Memory Controller"]
703pub mod nvmctrl;
704#[doc = "Peripheral Access Controller 0"]
705pub struct Pac0 {
706 _marker: PhantomData<*const ()>,
707}
708unsafe impl Send for Pac0 {}
709impl Pac0 {
710 #[doc = r"Pointer to the register block"]
711 pub const PTR: *const pac0::RegisterBlock = 0x4000_0000 as *const _;
712 #[doc = r"Return the pointer to the register block"]
713 #[inline(always)]
714 pub const fn ptr() -> *const pac0::RegisterBlock {
715 Self::PTR
716 }
717 #[doc = r" Steal an instance of this peripheral"]
718 #[doc = r""]
719 #[doc = r" # Safety"]
720 #[doc = r""]
721 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
722 #[doc = r" that may race with any existing instances, for example by only"]
723 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
724 #[doc = r" original peripheral and using critical sections to coordinate"]
725 #[doc = r" access between multiple new instances."]
726 #[doc = r""]
727 #[doc = r" Additionally, other software such as HALs may rely on only one"]
728 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
729 #[doc = r" no stolen instances are passed to such software."]
730 pub unsafe fn steal() -> Self {
731 Self {
732 _marker: PhantomData,
733 }
734 }
735}
736impl Deref for Pac0 {
737 type Target = pac0::RegisterBlock;
738 #[inline(always)]
739 fn deref(&self) -> &Self::Target {
740 unsafe { &*Self::PTR }
741 }
742}
743impl core::fmt::Debug for Pac0 {
744 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
745 f.debug_struct("Pac0").finish()
746 }
747}
748#[doc = "Peripheral Access Controller 0"]
749pub mod pac0;
750#[doc = "Peripheral Access Controller 1"]
751pub struct Pac1 {
752 _marker: PhantomData<*const ()>,
753}
754unsafe impl Send for Pac1 {}
755impl Pac1 {
756 #[doc = r"Pointer to the register block"]
757 pub const PTR: *const pac0::RegisterBlock = 0x4100_0000 as *const _;
758 #[doc = r"Return the pointer to the register block"]
759 #[inline(always)]
760 pub const fn ptr() -> *const pac0::RegisterBlock {
761 Self::PTR
762 }
763 #[doc = r" Steal an instance of this peripheral"]
764 #[doc = r""]
765 #[doc = r" # Safety"]
766 #[doc = r""]
767 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
768 #[doc = r" that may race with any existing instances, for example by only"]
769 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
770 #[doc = r" original peripheral and using critical sections to coordinate"]
771 #[doc = r" access between multiple new instances."]
772 #[doc = r""]
773 #[doc = r" Additionally, other software such as HALs may rely on only one"]
774 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
775 #[doc = r" no stolen instances are passed to such software."]
776 pub unsafe fn steal() -> Self {
777 Self {
778 _marker: PhantomData,
779 }
780 }
781}
782impl Deref for Pac1 {
783 type Target = pac0::RegisterBlock;
784 #[inline(always)]
785 fn deref(&self) -> &Self::Target {
786 unsafe { &*Self::PTR }
787 }
788}
789impl core::fmt::Debug for Pac1 {
790 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
791 f.debug_struct("Pac1").finish()
792 }
793}
794#[doc = "Peripheral Access Controller 1"]
795pub use self::pac0 as pac1;
796#[doc = "Peripheral Access Controller 2"]
797pub struct Pac2 {
798 _marker: PhantomData<*const ()>,
799}
800unsafe impl Send for Pac2 {}
801impl Pac2 {
802 #[doc = r"Pointer to the register block"]
803 pub const PTR: *const pac0::RegisterBlock = 0x4200_0000 as *const _;
804 #[doc = r"Return the pointer to the register block"]
805 #[inline(always)]
806 pub const fn ptr() -> *const pac0::RegisterBlock {
807 Self::PTR
808 }
809 #[doc = r" Steal an instance of this peripheral"]
810 #[doc = r""]
811 #[doc = r" # Safety"]
812 #[doc = r""]
813 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
814 #[doc = r" that may race with any existing instances, for example by only"]
815 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
816 #[doc = r" original peripheral and using critical sections to coordinate"]
817 #[doc = r" access between multiple new instances."]
818 #[doc = r""]
819 #[doc = r" Additionally, other software such as HALs may rely on only one"]
820 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
821 #[doc = r" no stolen instances are passed to such software."]
822 pub unsafe fn steal() -> Self {
823 Self {
824 _marker: PhantomData,
825 }
826 }
827}
828impl Deref for Pac2 {
829 type Target = pac0::RegisterBlock;
830 #[inline(always)]
831 fn deref(&self) -> &Self::Target {
832 unsafe { &*Self::PTR }
833 }
834}
835impl core::fmt::Debug for Pac2 {
836 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
837 f.debug_struct("Pac2").finish()
838 }
839}
840#[doc = "Peripheral Access Controller 2"]
841pub use self::pac0 as pac2;
842#[doc = "Power Manager"]
843pub struct Pm {
844 _marker: PhantomData<*const ()>,
845}
846unsafe impl Send for Pm {}
847impl Pm {
848 #[doc = r"Pointer to the register block"]
849 pub const PTR: *const pm::RegisterBlock = 0x4000_0400 as *const _;
850 #[doc = r"Return the pointer to the register block"]
851 #[inline(always)]
852 pub const fn ptr() -> *const pm::RegisterBlock {
853 Self::PTR
854 }
855 #[doc = r" Steal an instance of this peripheral"]
856 #[doc = r""]
857 #[doc = r" # Safety"]
858 #[doc = r""]
859 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
860 #[doc = r" that may race with any existing instances, for example by only"]
861 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
862 #[doc = r" original peripheral and using critical sections to coordinate"]
863 #[doc = r" access between multiple new instances."]
864 #[doc = r""]
865 #[doc = r" Additionally, other software such as HALs may rely on only one"]
866 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
867 #[doc = r" no stolen instances are passed to such software."]
868 pub unsafe fn steal() -> Self {
869 Self {
870 _marker: PhantomData,
871 }
872 }
873}
874impl Deref for Pm {
875 type Target = pm::RegisterBlock;
876 #[inline(always)]
877 fn deref(&self) -> &Self::Target {
878 unsafe { &*Self::PTR }
879 }
880}
881impl core::fmt::Debug for Pm {
882 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
883 f.debug_struct("Pm").finish()
884 }
885}
886#[doc = "Power Manager"]
887pub mod pm;
888#[doc = "Port Module"]
889pub struct Port {
890 _marker: PhantomData<*const ()>,
891}
892unsafe impl Send for Port {}
893impl Port {
894 #[doc = r"Pointer to the register block"]
895 pub const PTR: *const port::RegisterBlock = 0x4100_4400 as *const _;
896 #[doc = r"Return the pointer to the register block"]
897 #[inline(always)]
898 pub const fn ptr() -> *const port::RegisterBlock {
899 Self::PTR
900 }
901 #[doc = r" Steal an instance of this peripheral"]
902 #[doc = r""]
903 #[doc = r" # Safety"]
904 #[doc = r""]
905 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
906 #[doc = r" that may race with any existing instances, for example by only"]
907 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
908 #[doc = r" original peripheral and using critical sections to coordinate"]
909 #[doc = r" access between multiple new instances."]
910 #[doc = r""]
911 #[doc = r" Additionally, other software such as HALs may rely on only one"]
912 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
913 #[doc = r" no stolen instances are passed to such software."]
914 pub unsafe fn steal() -> Self {
915 Self {
916 _marker: PhantomData,
917 }
918 }
919}
920impl Deref for Port {
921 type Target = port::RegisterBlock;
922 #[inline(always)]
923 fn deref(&self) -> &Self::Target {
924 unsafe { &*Self::PTR }
925 }
926}
927impl core::fmt::Debug for Port {
928 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
929 f.debug_struct("Port").finish()
930 }
931}
932#[doc = "Port Module"]
933pub mod port;
934#[doc = "Port Module (IOBUS)"]
935pub struct PortIobus {
936 _marker: PhantomData<*const ()>,
937}
938unsafe impl Send for PortIobus {}
939impl PortIobus {
940 #[doc = r"Pointer to the register block"]
941 pub const PTR: *const port::RegisterBlock = 0x6000_0000 as *const _;
942 #[doc = r"Return the pointer to the register block"]
943 #[inline(always)]
944 pub const fn ptr() -> *const port::RegisterBlock {
945 Self::PTR
946 }
947 #[doc = r" Steal an instance of this peripheral"]
948 #[doc = r""]
949 #[doc = r" # Safety"]
950 #[doc = r""]
951 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
952 #[doc = r" that may race with any existing instances, for example by only"]
953 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
954 #[doc = r" original peripheral and using critical sections to coordinate"]
955 #[doc = r" access between multiple new instances."]
956 #[doc = r""]
957 #[doc = r" Additionally, other software such as HALs may rely on only one"]
958 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
959 #[doc = r" no stolen instances are passed to such software."]
960 pub unsafe fn steal() -> Self {
961 Self {
962 _marker: PhantomData,
963 }
964 }
965}
966impl Deref for PortIobus {
967 type Target = port::RegisterBlock;
968 #[inline(always)]
969 fn deref(&self) -> &Self::Target {
970 unsafe { &*Self::PTR }
971 }
972}
973impl core::fmt::Debug for PortIobus {
974 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
975 f.debug_struct("PortIobus").finish()
976 }
977}
978#[doc = "Port Module (IOBUS)"]
979pub use self::port as port_iobus;
980#[doc = "Real-Time Counter"]
981pub struct Rtc {
982 _marker: PhantomData<*const ()>,
983}
984unsafe impl Send for Rtc {}
985impl Rtc {
986 #[doc = r"Pointer to the register block"]
987 pub const PTR: *const rtc::RegisterBlock = 0x4000_1400 as *const _;
988 #[doc = r"Return the pointer to the register block"]
989 #[inline(always)]
990 pub const fn ptr() -> *const rtc::RegisterBlock {
991 Self::PTR
992 }
993 #[doc = r" Steal an instance of this peripheral"]
994 #[doc = r""]
995 #[doc = r" # Safety"]
996 #[doc = r""]
997 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
998 #[doc = r" that may race with any existing instances, for example by only"]
999 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1000 #[doc = r" original peripheral and using critical sections to coordinate"]
1001 #[doc = r" access between multiple new instances."]
1002 #[doc = r""]
1003 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1004 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1005 #[doc = r" no stolen instances are passed to such software."]
1006 pub unsafe fn steal() -> Self {
1007 Self {
1008 _marker: PhantomData,
1009 }
1010 }
1011}
1012impl Deref for Rtc {
1013 type Target = rtc::RegisterBlock;
1014 #[inline(always)]
1015 fn deref(&self) -> &Self::Target {
1016 unsafe { &*Self::PTR }
1017 }
1018}
1019impl core::fmt::Debug for Rtc {
1020 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1021 f.debug_struct("Rtc").finish()
1022 }
1023}
1024#[doc = "Real-Time Counter"]
1025pub mod rtc;
1026#[doc = "Serial Communication Interface 0"]
1027pub struct Sercom0 {
1028 _marker: PhantomData<*const ()>,
1029}
1030unsafe impl Send for Sercom0 {}
1031impl Sercom0 {
1032 #[doc = r"Pointer to the register block"]
1033 pub const PTR: *const sercom0::RegisterBlock = 0x4200_0800 as *const _;
1034 #[doc = r"Return the pointer to the register block"]
1035 #[inline(always)]
1036 pub const fn ptr() -> *const sercom0::RegisterBlock {
1037 Self::PTR
1038 }
1039 #[doc = r" Steal an instance of this peripheral"]
1040 #[doc = r""]
1041 #[doc = r" # Safety"]
1042 #[doc = r""]
1043 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1044 #[doc = r" that may race with any existing instances, for example by only"]
1045 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1046 #[doc = r" original peripheral and using critical sections to coordinate"]
1047 #[doc = r" access between multiple new instances."]
1048 #[doc = r""]
1049 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1050 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1051 #[doc = r" no stolen instances are passed to such software."]
1052 pub unsafe fn steal() -> Self {
1053 Self {
1054 _marker: PhantomData,
1055 }
1056 }
1057}
1058impl Deref for Sercom0 {
1059 type Target = sercom0::RegisterBlock;
1060 #[inline(always)]
1061 fn deref(&self) -> &Self::Target {
1062 unsafe { &*Self::PTR }
1063 }
1064}
1065impl core::fmt::Debug for Sercom0 {
1066 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1067 f.debug_struct("Sercom0").finish()
1068 }
1069}
1070#[doc = "Serial Communication Interface 0"]
1071pub mod sercom0;
1072#[doc = "Serial Communication Interface 1"]
1073pub struct Sercom1 {
1074 _marker: PhantomData<*const ()>,
1075}
1076unsafe impl Send for Sercom1 {}
1077impl Sercom1 {
1078 #[doc = r"Pointer to the register block"]
1079 pub const PTR: *const sercom0::RegisterBlock = 0x4200_0c00 as *const _;
1080 #[doc = r"Return the pointer to the register block"]
1081 #[inline(always)]
1082 pub const fn ptr() -> *const sercom0::RegisterBlock {
1083 Self::PTR
1084 }
1085 #[doc = r" Steal an instance of this peripheral"]
1086 #[doc = r""]
1087 #[doc = r" # Safety"]
1088 #[doc = r""]
1089 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1090 #[doc = r" that may race with any existing instances, for example by only"]
1091 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1092 #[doc = r" original peripheral and using critical sections to coordinate"]
1093 #[doc = r" access between multiple new instances."]
1094 #[doc = r""]
1095 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1096 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1097 #[doc = r" no stolen instances are passed to such software."]
1098 pub unsafe fn steal() -> Self {
1099 Self {
1100 _marker: PhantomData,
1101 }
1102 }
1103}
1104impl Deref for Sercom1 {
1105 type Target = sercom0::RegisterBlock;
1106 #[inline(always)]
1107 fn deref(&self) -> &Self::Target {
1108 unsafe { &*Self::PTR }
1109 }
1110}
1111impl core::fmt::Debug for Sercom1 {
1112 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1113 f.debug_struct("Sercom1").finish()
1114 }
1115}
1116#[doc = "Serial Communication Interface 1"]
1117pub use self::sercom0 as sercom1;
1118#[doc = "Serial Communication Interface 2"]
1119pub struct Sercom2 {
1120 _marker: PhantomData<*const ()>,
1121}
1122unsafe impl Send for Sercom2 {}
1123impl Sercom2 {
1124 #[doc = r"Pointer to the register block"]
1125 pub const PTR: *const sercom0::RegisterBlock = 0x4200_1000 as *const _;
1126 #[doc = r"Return the pointer to the register block"]
1127 #[inline(always)]
1128 pub const fn ptr() -> *const sercom0::RegisterBlock {
1129 Self::PTR
1130 }
1131 #[doc = r" Steal an instance of this peripheral"]
1132 #[doc = r""]
1133 #[doc = r" # Safety"]
1134 #[doc = r""]
1135 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1136 #[doc = r" that may race with any existing instances, for example by only"]
1137 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1138 #[doc = r" original peripheral and using critical sections to coordinate"]
1139 #[doc = r" access between multiple new instances."]
1140 #[doc = r""]
1141 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1142 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1143 #[doc = r" no stolen instances are passed to such software."]
1144 pub unsafe fn steal() -> Self {
1145 Self {
1146 _marker: PhantomData,
1147 }
1148 }
1149}
1150impl Deref for Sercom2 {
1151 type Target = sercom0::RegisterBlock;
1152 #[inline(always)]
1153 fn deref(&self) -> &Self::Target {
1154 unsafe { &*Self::PTR }
1155 }
1156}
1157impl core::fmt::Debug for Sercom2 {
1158 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1159 f.debug_struct("Sercom2").finish()
1160 }
1161}
1162#[doc = "Serial Communication Interface 2"]
1163pub use self::sercom0 as sercom2;
1164#[doc = "Serial Communication Interface 3"]
1165pub struct Sercom3 {
1166 _marker: PhantomData<*const ()>,
1167}
1168unsafe impl Send for Sercom3 {}
1169impl Sercom3 {
1170 #[doc = r"Pointer to the register block"]
1171 pub const PTR: *const sercom0::RegisterBlock = 0x4200_1400 as *const _;
1172 #[doc = r"Return the pointer to the register block"]
1173 #[inline(always)]
1174 pub const fn ptr() -> *const sercom0::RegisterBlock {
1175 Self::PTR
1176 }
1177 #[doc = r" Steal an instance of this peripheral"]
1178 #[doc = r""]
1179 #[doc = r" # Safety"]
1180 #[doc = r""]
1181 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1182 #[doc = r" that may race with any existing instances, for example by only"]
1183 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1184 #[doc = r" original peripheral and using critical sections to coordinate"]
1185 #[doc = r" access between multiple new instances."]
1186 #[doc = r""]
1187 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1188 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1189 #[doc = r" no stolen instances are passed to such software."]
1190 pub unsafe fn steal() -> Self {
1191 Self {
1192 _marker: PhantomData,
1193 }
1194 }
1195}
1196impl Deref for Sercom3 {
1197 type Target = sercom0::RegisterBlock;
1198 #[inline(always)]
1199 fn deref(&self) -> &Self::Target {
1200 unsafe { &*Self::PTR }
1201 }
1202}
1203impl core::fmt::Debug for Sercom3 {
1204 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1205 f.debug_struct("Sercom3").finish()
1206 }
1207}
1208#[doc = "Serial Communication Interface 3"]
1209pub use self::sercom0 as sercom3;
1210#[doc = "Serial Communication Interface 4"]
1211pub struct Sercom4 {
1212 _marker: PhantomData<*const ()>,
1213}
1214unsafe impl Send for Sercom4 {}
1215impl Sercom4 {
1216 #[doc = r"Pointer to the register block"]
1217 pub const PTR: *const sercom0::RegisterBlock = 0x4200_1800 as *const _;
1218 #[doc = r"Return the pointer to the register block"]
1219 #[inline(always)]
1220 pub const fn ptr() -> *const sercom0::RegisterBlock {
1221 Self::PTR
1222 }
1223 #[doc = r" Steal an instance of this peripheral"]
1224 #[doc = r""]
1225 #[doc = r" # Safety"]
1226 #[doc = r""]
1227 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1228 #[doc = r" that may race with any existing instances, for example by only"]
1229 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1230 #[doc = r" original peripheral and using critical sections to coordinate"]
1231 #[doc = r" access between multiple new instances."]
1232 #[doc = r""]
1233 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1234 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1235 #[doc = r" no stolen instances are passed to such software."]
1236 pub unsafe fn steal() -> Self {
1237 Self {
1238 _marker: PhantomData,
1239 }
1240 }
1241}
1242impl Deref for Sercom4 {
1243 type Target = sercom0::RegisterBlock;
1244 #[inline(always)]
1245 fn deref(&self) -> &Self::Target {
1246 unsafe { &*Self::PTR }
1247 }
1248}
1249impl core::fmt::Debug for Sercom4 {
1250 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1251 f.debug_struct("Sercom4").finish()
1252 }
1253}
1254#[doc = "Serial Communication Interface 4"]
1255pub use self::sercom0 as sercom4;
1256#[doc = "Serial Communication Interface 5"]
1257pub struct Sercom5 {
1258 _marker: PhantomData<*const ()>,
1259}
1260unsafe impl Send for Sercom5 {}
1261impl Sercom5 {
1262 #[doc = r"Pointer to the register block"]
1263 pub const PTR: *const sercom0::RegisterBlock = 0x4200_1c00 as *const _;
1264 #[doc = r"Return the pointer to the register block"]
1265 #[inline(always)]
1266 pub const fn ptr() -> *const sercom0::RegisterBlock {
1267 Self::PTR
1268 }
1269 #[doc = r" Steal an instance of this peripheral"]
1270 #[doc = r""]
1271 #[doc = r" # Safety"]
1272 #[doc = r""]
1273 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1274 #[doc = r" that may race with any existing instances, for example by only"]
1275 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1276 #[doc = r" original peripheral and using critical sections to coordinate"]
1277 #[doc = r" access between multiple new instances."]
1278 #[doc = r""]
1279 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1280 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1281 #[doc = r" no stolen instances are passed to such software."]
1282 pub unsafe fn steal() -> Self {
1283 Self {
1284 _marker: PhantomData,
1285 }
1286 }
1287}
1288impl Deref for Sercom5 {
1289 type Target = sercom0::RegisterBlock;
1290 #[inline(always)]
1291 fn deref(&self) -> &Self::Target {
1292 unsafe { &*Self::PTR }
1293 }
1294}
1295impl core::fmt::Debug for Sercom5 {
1296 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1297 f.debug_struct("Sercom5").finish()
1298 }
1299}
1300#[doc = "Serial Communication Interface 5"]
1301pub use self::sercom0 as sercom5;
1302#[doc = "System Control"]
1303pub struct Sysctrl {
1304 _marker: PhantomData<*const ()>,
1305}
1306unsafe impl Send for Sysctrl {}
1307impl Sysctrl {
1308 #[doc = r"Pointer to the register block"]
1309 pub const PTR: *const sysctrl::RegisterBlock = 0x4000_0800 as *const _;
1310 #[doc = r"Return the pointer to the register block"]
1311 #[inline(always)]
1312 pub const fn ptr() -> *const sysctrl::RegisterBlock {
1313 Self::PTR
1314 }
1315 #[doc = r" Steal an instance of this peripheral"]
1316 #[doc = r""]
1317 #[doc = r" # Safety"]
1318 #[doc = r""]
1319 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1320 #[doc = r" that may race with any existing instances, for example by only"]
1321 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1322 #[doc = r" original peripheral and using critical sections to coordinate"]
1323 #[doc = r" access between multiple new instances."]
1324 #[doc = r""]
1325 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1326 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1327 #[doc = r" no stolen instances are passed to such software."]
1328 pub unsafe fn steal() -> Self {
1329 Self {
1330 _marker: PhantomData,
1331 }
1332 }
1333}
1334impl Deref for Sysctrl {
1335 type Target = sysctrl::RegisterBlock;
1336 #[inline(always)]
1337 fn deref(&self) -> &Self::Target {
1338 unsafe { &*Self::PTR }
1339 }
1340}
1341impl core::fmt::Debug for Sysctrl {
1342 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1343 f.debug_struct("Sysctrl").finish()
1344 }
1345}
1346#[doc = "System Control"]
1347pub mod sysctrl;
1348#[doc = "Basic Timer Counter 3"]
1349pub struct Tc3 {
1350 _marker: PhantomData<*const ()>,
1351}
1352unsafe impl Send for Tc3 {}
1353impl Tc3 {
1354 #[doc = r"Pointer to the register block"]
1355 pub const PTR: *const tc3::RegisterBlock = 0x4200_2c00 as *const _;
1356 #[doc = r"Return the pointer to the register block"]
1357 #[inline(always)]
1358 pub const fn ptr() -> *const tc3::RegisterBlock {
1359 Self::PTR
1360 }
1361 #[doc = r" Steal an instance of this peripheral"]
1362 #[doc = r""]
1363 #[doc = r" # Safety"]
1364 #[doc = r""]
1365 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1366 #[doc = r" that may race with any existing instances, for example by only"]
1367 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1368 #[doc = r" original peripheral and using critical sections to coordinate"]
1369 #[doc = r" access between multiple new instances."]
1370 #[doc = r""]
1371 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1372 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1373 #[doc = r" no stolen instances are passed to such software."]
1374 pub unsafe fn steal() -> Self {
1375 Self {
1376 _marker: PhantomData,
1377 }
1378 }
1379}
1380impl Deref for Tc3 {
1381 type Target = tc3::RegisterBlock;
1382 #[inline(always)]
1383 fn deref(&self) -> &Self::Target {
1384 unsafe { &*Self::PTR }
1385 }
1386}
1387impl core::fmt::Debug for Tc3 {
1388 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1389 f.debug_struct("Tc3").finish()
1390 }
1391}
1392#[doc = "Basic Timer Counter 3"]
1393pub mod tc3;
1394#[doc = "Basic Timer Counter 4"]
1395pub struct Tc4 {
1396 _marker: PhantomData<*const ()>,
1397}
1398unsafe impl Send for Tc4 {}
1399impl Tc4 {
1400 #[doc = r"Pointer to the register block"]
1401 pub const PTR: *const tc3::RegisterBlock = 0x4200_3000 as *const _;
1402 #[doc = r"Return the pointer to the register block"]
1403 #[inline(always)]
1404 pub const fn ptr() -> *const tc3::RegisterBlock {
1405 Self::PTR
1406 }
1407 #[doc = r" Steal an instance of this peripheral"]
1408 #[doc = r""]
1409 #[doc = r" # Safety"]
1410 #[doc = r""]
1411 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1412 #[doc = r" that may race with any existing instances, for example by only"]
1413 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1414 #[doc = r" original peripheral and using critical sections to coordinate"]
1415 #[doc = r" access between multiple new instances."]
1416 #[doc = r""]
1417 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1418 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1419 #[doc = r" no stolen instances are passed to such software."]
1420 pub unsafe fn steal() -> Self {
1421 Self {
1422 _marker: PhantomData,
1423 }
1424 }
1425}
1426impl Deref for Tc4 {
1427 type Target = tc3::RegisterBlock;
1428 #[inline(always)]
1429 fn deref(&self) -> &Self::Target {
1430 unsafe { &*Self::PTR }
1431 }
1432}
1433impl core::fmt::Debug for Tc4 {
1434 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1435 f.debug_struct("Tc4").finish()
1436 }
1437}
1438#[doc = "Basic Timer Counter 4"]
1439pub use self::tc3 as tc4;
1440#[doc = "Basic Timer Counter 5"]
1441pub struct Tc5 {
1442 _marker: PhantomData<*const ()>,
1443}
1444unsafe impl Send for Tc5 {}
1445impl Tc5 {
1446 #[doc = r"Pointer to the register block"]
1447 pub const PTR: *const tc3::RegisterBlock = 0x4200_3400 as *const _;
1448 #[doc = r"Return the pointer to the register block"]
1449 #[inline(always)]
1450 pub const fn ptr() -> *const tc3::RegisterBlock {
1451 Self::PTR
1452 }
1453 #[doc = r" Steal an instance of this peripheral"]
1454 #[doc = r""]
1455 #[doc = r" # Safety"]
1456 #[doc = r""]
1457 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1458 #[doc = r" that may race with any existing instances, for example by only"]
1459 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1460 #[doc = r" original peripheral and using critical sections to coordinate"]
1461 #[doc = r" access between multiple new instances."]
1462 #[doc = r""]
1463 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1464 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1465 #[doc = r" no stolen instances are passed to such software."]
1466 pub unsafe fn steal() -> Self {
1467 Self {
1468 _marker: PhantomData,
1469 }
1470 }
1471}
1472impl Deref for Tc5 {
1473 type Target = tc3::RegisterBlock;
1474 #[inline(always)]
1475 fn deref(&self) -> &Self::Target {
1476 unsafe { &*Self::PTR }
1477 }
1478}
1479impl core::fmt::Debug for Tc5 {
1480 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1481 f.debug_struct("Tc5").finish()
1482 }
1483}
1484#[doc = "Basic Timer Counter 5"]
1485pub use self::tc3 as tc5;
1486#[doc = "Timer Counter Control 0"]
1487pub struct Tcc0 {
1488 _marker: PhantomData<*const ()>,
1489}
1490unsafe impl Send for Tcc0 {}
1491impl Tcc0 {
1492 #[doc = r"Pointer to the register block"]
1493 pub const PTR: *const tcc0::RegisterBlock = 0x4200_2000 as *const _;
1494 #[doc = r"Return the pointer to the register block"]
1495 #[inline(always)]
1496 pub const fn ptr() -> *const tcc0::RegisterBlock {
1497 Self::PTR
1498 }
1499 #[doc = r" Steal an instance of this peripheral"]
1500 #[doc = r""]
1501 #[doc = r" # Safety"]
1502 #[doc = r""]
1503 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1504 #[doc = r" that may race with any existing instances, for example by only"]
1505 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1506 #[doc = r" original peripheral and using critical sections to coordinate"]
1507 #[doc = r" access between multiple new instances."]
1508 #[doc = r""]
1509 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1510 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1511 #[doc = r" no stolen instances are passed to such software."]
1512 pub unsafe fn steal() -> Self {
1513 Self {
1514 _marker: PhantomData,
1515 }
1516 }
1517}
1518impl Deref for Tcc0 {
1519 type Target = tcc0::RegisterBlock;
1520 #[inline(always)]
1521 fn deref(&self) -> &Self::Target {
1522 unsafe { &*Self::PTR }
1523 }
1524}
1525impl core::fmt::Debug for Tcc0 {
1526 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1527 f.debug_struct("Tcc0").finish()
1528 }
1529}
1530#[doc = "Timer Counter Control 0"]
1531pub mod tcc0;
1532#[doc = "Timer Counter Control 1"]
1533pub struct Tcc1 {
1534 _marker: PhantomData<*const ()>,
1535}
1536unsafe impl Send for Tcc1 {}
1537impl Tcc1 {
1538 #[doc = r"Pointer to the register block"]
1539 pub const PTR: *const tcc0::RegisterBlock = 0x4200_2400 as *const _;
1540 #[doc = r"Return the pointer to the register block"]
1541 #[inline(always)]
1542 pub const fn ptr() -> *const tcc0::RegisterBlock {
1543 Self::PTR
1544 }
1545 #[doc = r" Steal an instance of this peripheral"]
1546 #[doc = r""]
1547 #[doc = r" # Safety"]
1548 #[doc = r""]
1549 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1550 #[doc = r" that may race with any existing instances, for example by only"]
1551 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1552 #[doc = r" original peripheral and using critical sections to coordinate"]
1553 #[doc = r" access between multiple new instances."]
1554 #[doc = r""]
1555 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1556 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1557 #[doc = r" no stolen instances are passed to such software."]
1558 pub unsafe fn steal() -> Self {
1559 Self {
1560 _marker: PhantomData,
1561 }
1562 }
1563}
1564impl Deref for Tcc1 {
1565 type Target = tcc0::RegisterBlock;
1566 #[inline(always)]
1567 fn deref(&self) -> &Self::Target {
1568 unsafe { &*Self::PTR }
1569 }
1570}
1571impl core::fmt::Debug for Tcc1 {
1572 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1573 f.debug_struct("Tcc1").finish()
1574 }
1575}
1576#[doc = "Timer Counter Control 1"]
1577pub use self::tcc0 as tcc1;
1578#[doc = "Timer Counter Control 2"]
1579pub struct Tcc2 {
1580 _marker: PhantomData<*const ()>,
1581}
1582unsafe impl Send for Tcc2 {}
1583impl Tcc2 {
1584 #[doc = r"Pointer to the register block"]
1585 pub const PTR: *const tcc0::RegisterBlock = 0x4200_2800 as *const _;
1586 #[doc = r"Return the pointer to the register block"]
1587 #[inline(always)]
1588 pub const fn ptr() -> *const tcc0::RegisterBlock {
1589 Self::PTR
1590 }
1591 #[doc = r" Steal an instance of this peripheral"]
1592 #[doc = r""]
1593 #[doc = r" # Safety"]
1594 #[doc = r""]
1595 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1596 #[doc = r" that may race with any existing instances, for example by only"]
1597 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1598 #[doc = r" original peripheral and using critical sections to coordinate"]
1599 #[doc = r" access between multiple new instances."]
1600 #[doc = r""]
1601 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1602 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1603 #[doc = r" no stolen instances are passed to such software."]
1604 pub unsafe fn steal() -> Self {
1605 Self {
1606 _marker: PhantomData,
1607 }
1608 }
1609}
1610impl Deref for Tcc2 {
1611 type Target = tcc0::RegisterBlock;
1612 #[inline(always)]
1613 fn deref(&self) -> &Self::Target {
1614 unsafe { &*Self::PTR }
1615 }
1616}
1617impl core::fmt::Debug for Tcc2 {
1618 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1619 f.debug_struct("Tcc2").finish()
1620 }
1621}
1622#[doc = "Timer Counter Control 2"]
1623pub use self::tcc0 as tcc2;
1624#[doc = "Universal Serial Bus"]
1625pub struct Usb {
1626 _marker: PhantomData<*const ()>,
1627}
1628unsafe impl Send for Usb {}
1629impl Usb {
1630 #[doc = r"Pointer to the register block"]
1631 pub const PTR: *const usb::RegisterBlock = 0x4100_5000 as *const _;
1632 #[doc = r"Return the pointer to the register block"]
1633 #[inline(always)]
1634 pub const fn ptr() -> *const usb::RegisterBlock {
1635 Self::PTR
1636 }
1637 #[doc = r" Steal an instance of this peripheral"]
1638 #[doc = r""]
1639 #[doc = r" # Safety"]
1640 #[doc = r""]
1641 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1642 #[doc = r" that may race with any existing instances, for example by only"]
1643 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1644 #[doc = r" original peripheral and using critical sections to coordinate"]
1645 #[doc = r" access between multiple new instances."]
1646 #[doc = r""]
1647 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1648 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1649 #[doc = r" no stolen instances are passed to such software."]
1650 pub unsafe fn steal() -> Self {
1651 Self {
1652 _marker: PhantomData,
1653 }
1654 }
1655}
1656impl Deref for Usb {
1657 type Target = usb::RegisterBlock;
1658 #[inline(always)]
1659 fn deref(&self) -> &Self::Target {
1660 unsafe { &*Self::PTR }
1661 }
1662}
1663impl core::fmt::Debug for Usb {
1664 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1665 f.debug_struct("Usb").finish()
1666 }
1667}
1668#[doc = "Universal Serial Bus"]
1669pub mod usb;
1670#[doc = "Watchdog Timer"]
1671pub struct Wdt {
1672 _marker: PhantomData<*const ()>,
1673}
1674unsafe impl Send for Wdt {}
1675impl Wdt {
1676 #[doc = r"Pointer to the register block"]
1677 pub const PTR: *const wdt::RegisterBlock = 0x4000_1000 as *const _;
1678 #[doc = r"Return the pointer to the register block"]
1679 #[inline(always)]
1680 pub const fn ptr() -> *const wdt::RegisterBlock {
1681 Self::PTR
1682 }
1683 #[doc = r" Steal an instance of this peripheral"]
1684 #[doc = r""]
1685 #[doc = r" # Safety"]
1686 #[doc = r""]
1687 #[doc = r" Ensure that the new instance of the peripheral cannot be used in a way"]
1688 #[doc = r" that may race with any existing instances, for example by only"]
1689 #[doc = r" accessing read-only or write-only registers, or by consuming the"]
1690 #[doc = r" original peripheral and using critical sections to coordinate"]
1691 #[doc = r" access between multiple new instances."]
1692 #[doc = r""]
1693 #[doc = r" Additionally, other software such as HALs may rely on only one"]
1694 #[doc = r" peripheral instance existing to ensure memory safety; ensure"]
1695 #[doc = r" no stolen instances are passed to such software."]
1696 pub unsafe fn steal() -> Self {
1697 Self {
1698 _marker: PhantomData,
1699 }
1700 }
1701}
1702impl Deref for Wdt {
1703 type Target = wdt::RegisterBlock;
1704 #[inline(always)]
1705 fn deref(&self) -> &Self::Target {
1706 unsafe { &*Self::PTR }
1707 }
1708}
1709impl core::fmt::Debug for Wdt {
1710 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1711 f.debug_struct("Wdt").finish()
1712 }
1713}
1714#[doc = "Watchdog Timer"]
1715pub mod wdt;
1716#[no_mangle]
1717static mut DEVICE_PERIPHERALS: bool = false;
1718#[doc = r" All the peripherals."]
1719#[allow(non_snake_case)]
1720pub struct Peripherals {
1721 #[doc = "AC"]
1722 pub ac: Ac,
1723 #[doc = "ADC"]
1724 pub adc: Adc,
1725 #[doc = "DAC"]
1726 pub dac: Dac,
1727 #[doc = "DMAC"]
1728 pub dmac: Dmac,
1729 #[doc = "DSU"]
1730 pub dsu: Dsu,
1731 #[doc = "EIC"]
1732 pub eic: Eic,
1733 #[doc = "EVSYS"]
1734 pub evsys: Evsys,
1735 #[doc = "GCLK"]
1736 pub gclk: Gclk,
1737 #[doc = "HMATRIX"]
1738 pub hmatrix: Hmatrix,
1739 #[doc = "I2S"]
1740 pub i2s: I2s,
1741 #[doc = "MTB"]
1742 pub mtb: Mtb,
1743 #[doc = "NVMCTRL"]
1744 pub nvmctrl: Nvmctrl,
1745 #[doc = "PAC0"]
1746 pub pac0: Pac0,
1747 #[doc = "PAC1"]
1748 pub pac1: Pac1,
1749 #[doc = "PAC2"]
1750 pub pac2: Pac2,
1751 #[doc = "PM"]
1752 pub pm: Pm,
1753 #[doc = "PORT"]
1754 pub port: Port,
1755 #[doc = "PORT_IOBUS"]
1756 pub port_iobus: PortIobus,
1757 #[doc = "RTC"]
1758 pub rtc: Rtc,
1759 #[doc = "SERCOM0"]
1760 pub sercom0: Sercom0,
1761 #[doc = "SERCOM1"]
1762 pub sercom1: Sercom1,
1763 #[doc = "SERCOM2"]
1764 pub sercom2: Sercom2,
1765 #[doc = "SERCOM3"]
1766 pub sercom3: Sercom3,
1767 #[doc = "SERCOM4"]
1768 pub sercom4: Sercom4,
1769 #[doc = "SERCOM5"]
1770 pub sercom5: Sercom5,
1771 #[doc = "SYSCTRL"]
1772 pub sysctrl: Sysctrl,
1773 #[doc = "TC3"]
1774 pub tc3: Tc3,
1775 #[doc = "TC4"]
1776 pub tc4: Tc4,
1777 #[doc = "TC5"]
1778 pub tc5: Tc5,
1779 #[doc = "TCC0"]
1780 pub tcc0: Tcc0,
1781 #[doc = "TCC1"]
1782 pub tcc1: Tcc1,
1783 #[doc = "TCC2"]
1784 pub tcc2: Tcc2,
1785 #[doc = "USB"]
1786 pub usb: Usb,
1787 #[doc = "WDT"]
1788 pub wdt: Wdt,
1789}
1790impl Peripherals {
1791 #[doc = r" Returns all the peripherals *once*."]
1792 #[inline]
1793 pub fn take() -> Option<Self> {
1794 critical_section::with(|_| {
1795 if unsafe { DEVICE_PERIPHERALS } {
1796 return None;
1797 }
1798 Some(unsafe { Peripherals::steal() })
1799 })
1800 }
1801 #[doc = r" Unchecked version of `Peripherals::take`."]
1802 #[doc = r""]
1803 #[doc = r" # Safety"]
1804 #[doc = r""]
1805 #[doc = r" Each of the returned peripherals must be used at most once."]
1806 #[inline]
1807 pub unsafe fn steal() -> Self {
1808 DEVICE_PERIPHERALS = true;
1809 Peripherals {
1810 ac: Ac::steal(),
1811 adc: Adc::steal(),
1812 dac: Dac::steal(),
1813 dmac: Dmac::steal(),
1814 dsu: Dsu::steal(),
1815 eic: Eic::steal(),
1816 evsys: Evsys::steal(),
1817 gclk: Gclk::steal(),
1818 hmatrix: Hmatrix::steal(),
1819 i2s: I2s::steal(),
1820 mtb: Mtb::steal(),
1821 nvmctrl: Nvmctrl::steal(),
1822 pac0: Pac0::steal(),
1823 pac1: Pac1::steal(),
1824 pac2: Pac2::steal(),
1825 pm: Pm::steal(),
1826 port: Port::steal(),
1827 port_iobus: PortIobus::steal(),
1828 rtc: Rtc::steal(),
1829 sercom0: Sercom0::steal(),
1830 sercom1: Sercom1::steal(),
1831 sercom2: Sercom2::steal(),
1832 sercom3: Sercom3::steal(),
1833 sercom4: Sercom4::steal(),
1834 sercom5: Sercom5::steal(),
1835 sysctrl: Sysctrl::steal(),
1836 tc3: Tc3::steal(),
1837 tc4: Tc4::steal(),
1838 tc5: Tc5::steal(),
1839 tcc0: Tcc0::steal(),
1840 tcc1: Tcc1::steal(),
1841 tcc2: Tcc2::steal(),
1842 usb: Usb::steal(),
1843 wdt: Wdt::steal(),
1844 }
1845 }
1846}