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