Skip to main content

rsl10_pac/
lib.rs

1#![doc = "Peripheral access API for RSL10 microcontrollers (generated using svd2rust v0.17.0)\n\nYou can find an overview of the API [here].\n\n[here]: https://docs.rs/svd2rust/0.17.0/svd2rust/#peripheral-api"]
2#![deny(const_err)]
3#![deny(dead_code)]
4#![deny(improper_ctypes)]
5#![deny(legacy_directory_ownership)]
6#![deny(missing_docs)]
7#![deny(no_mangle_generic_items)]
8#![deny(non_shorthand_field_patterns)]
9#![deny(overflowing_literals)]
10#![deny(path_statements)]
11#![deny(patterns_in_fns_without_body)]
12#![deny(plugin_as_library)]
13#![deny(private_in_public)]
14#![deny(safe_extern_statics)]
15#![deny(unconditional_recursion)]
16#![deny(unions_with_drop_fields)]
17#![deny(unused_allocation)]
18#![deny(unused_comparisons)]
19#![deny(unused_parens)]
20#![deny(while_true)]
21#![allow(non_camel_case_types)]
22#![allow(non_snake_case)]
23#![no_std]
24extern crate bare_metal;
25extern crate cortex_m;
26#[cfg(feature = "rt")]
27extern crate cortex_m_rt;
28extern crate vcell;
29use core::marker::PhantomData;
30use core::ops::Deref;
31#[doc = r"Number available in the NVIC for configuring priority"]
32pub const NVIC_PRIO_BITS: u8 = 3;
33#[cfg(feature = "rt")]
34extern "C" {}
35#[doc(hidden)]
36pub union Vector {
37    _handler: unsafe extern "C" fn(),
38    _reserved: u32,
39}
40#[cfg(feature = "rt")]
41#[doc(hidden)]
42#[link_section = ".vector_table.interrupts"]
43#[no_mangle]
44pub static __INTERRUPTS: [Vector; 0] = [];
45#[doc = r"Enumeration of all the interrupts"]
46#[derive(Copy, Clone, Debug)]
47pub enum Interrupt {}
48unsafe impl bare_metal::Nr for Interrupt {
49    #[inline(always)]
50    fn nr(&self) -> u8 {
51        match *self {}
52    }
53}
54#[cfg(feature = "rt")]
55pub use self::Interrupt as interrupt;
56pub use cortex_m::peripheral::Peripherals as CorePeripherals;
57pub use cortex_m::peripheral::{CBP, CPUID, DCB, DWT, FPB, ITM, MPU, NVIC, SCB, SYST, TPIU};
58#[cfg(feature = "rt")]
59pub use cortex_m_rt::interrupt;
60#[allow(unused_imports)]
61use generic::*;
62#[doc = r"Common register and bit access and modify traits"]
63pub mod generic;
64#[doc = "Chip Identification"]
65pub struct AHBREGS {
66    _marker: PhantomData<*const ()>,
67}
68unsafe impl Send for AHBREGS {}
69impl AHBREGS {
70    #[doc = r"Returns a pointer to the register block"]
71    #[inline(always)]
72    pub const fn ptr() -> *const ahbregs::RegisterBlock {
73        0x1fff_fffc as *const _
74    }
75}
76impl Deref for AHBREGS {
77    type Target = ahbregs::RegisterBlock;
78    #[inline(always)]
79    fn deref(&self) -> &Self::Target {
80        unsafe { &*AHBREGS::ptr() }
81    }
82}
83#[doc = "Chip Identification"]
84pub mod ahbregs;
85#[doc = "System Control"]
86pub struct SYSCTRL {
87    _marker: PhantomData<*const ()>,
88}
89unsafe impl Send for SYSCTRL {}
90impl SYSCTRL {
91    #[doc = r"Returns a pointer to the register block"]
92    #[inline(always)]
93    pub const fn ptr() -> *const sysctrl::RegisterBlock {
94        0x4000_0000 as *const _
95    }
96}
97impl Deref for SYSCTRL {
98    type Target = sysctrl::RegisterBlock;
99    #[inline(always)]
100    fn deref(&self) -> &Self::Target {
101        unsafe { &*SYSCTRL::ptr() }
102    }
103}
104#[doc = "System Control"]
105pub mod sysctrl;
106#[doc = "Clock Generation"]
107pub struct CLK {
108    _marker: PhantomData<*const ()>,
109}
110unsafe impl Send for CLK {}
111impl CLK {
112    #[doc = r"Returns a pointer to the register block"]
113    #[inline(always)]
114    pub const fn ptr() -> *const clk::RegisterBlock {
115        0x4000_0100 as *const _
116    }
117}
118impl Deref for CLK {
119    type Target = clk::RegisterBlock;
120    #[inline(always)]
121    fn deref(&self) -> &Self::Target {
122        unsafe { &*CLK::ptr() }
123    }
124}
125#[doc = "Clock Generation"]
126pub mod clk;
127#[doc = "Reset"]
128pub struct DIG {
129    _marker: PhantomData<*const ()>,
130}
131unsafe impl Send for DIG {}
132impl DIG {
133    #[doc = r"Returns a pointer to the register block"]
134    #[inline(always)]
135    pub const fn ptr() -> *const dig::RegisterBlock {
136        0x4000_0200 as *const _
137    }
138}
139impl Deref for DIG {
140    type Target = dig::RegisterBlock;
141    #[inline(always)]
142    fn deref(&self) -> &Self::Target {
143        unsafe { &*DIG::ptr() }
144    }
145}
146#[doc = "Reset"]
147pub mod dig;
148#[doc = "Watchdog Timer"]
149pub struct WATCHDOG {
150    _marker: PhantomData<*const ()>,
151}
152unsafe impl Send for WATCHDOG {}
153impl WATCHDOG {
154    #[doc = r"Returns a pointer to the register block"]
155    #[inline(always)]
156    pub const fn ptr() -> *const watchdog::RegisterBlock {
157        0x4000_0300 as *const _
158    }
159}
160impl Deref for WATCHDOG {
161    type Target = watchdog::RegisterBlock;
162    #[inline(always)]
163    fn deref(&self) -> &Self::Target {
164        unsafe { &*WATCHDOG::ptr() }
165    }
166}
167#[doc = "Watchdog Timer"]
168pub mod watchdog;
169#[doc = "General-Purpose Timers 0, 1, 2 and 3"]
170pub struct TIMER {
171    _marker: PhantomData<*const ()>,
172}
173unsafe impl Send for TIMER {}
174impl TIMER {
175    #[doc = r"Returns a pointer to the register block"]
176    #[inline(always)]
177    pub const fn ptr() -> *const timer::RegisterBlock {
178        0x4000_0400 as *const _
179    }
180}
181impl Deref for TIMER {
182    type Target = timer::RegisterBlock;
183    #[inline(always)]
184    fn deref(&self) -> &Self::Target {
185        unsafe { &*TIMER::ptr() }
186    }
187}
188#[doc = "General-Purpose Timers 0, 1, 2 and 3"]
189pub mod timer;
190#[doc = "Flash Interface Configuration and Control"]
191pub struct FLASH {
192    _marker: PhantomData<*const ()>,
193}
194unsafe impl Send for FLASH {}
195impl FLASH {
196    #[doc = r"Returns a pointer to the register block"]
197    #[inline(always)]
198    pub const fn ptr() -> *const flash::RegisterBlock {
199        0x4000_0500 as *const _
200    }
201}
202impl Deref for FLASH {
203    type Target = flash::RegisterBlock;
204    #[inline(always)]
205    fn deref(&self) -> &Self::Target {
206        unsafe { &*FLASH::ptr() }
207    }
208}
209#[doc = "Flash Interface Configuration and Control"]
210pub mod flash;
211#[doc = "DMA Controller Configuration and Control"]
212pub struct DMA {
213    _marker: PhantomData<*const ()>,
214}
215unsafe impl Send for DMA {}
216impl DMA {
217    #[doc = r"Returns a pointer to the register block"]
218    #[inline(always)]
219    pub const fn ptr() -> *const dma::RegisterBlock {
220        0x4000_0600 as *const _
221    }
222}
223impl Deref for DMA {
224    type Target = dma::RegisterBlock;
225    #[inline(always)]
226    fn deref(&self) -> &Self::Target {
227        unsafe { &*DMA::ptr() }
228    }
229}
230#[doc = "DMA Controller Configuration and Control"]
231pub mod dma;
232#[doc = "DIO Interface and Digital Pad control"]
233pub struct DIO {
234    _marker: PhantomData<*const ()>,
235}
236unsafe impl Send for DIO {}
237impl DIO {
238    #[doc = r"Returns a pointer to the register block"]
239    #[inline(always)]
240    pub const fn ptr() -> *const dio::RegisterBlock {
241        0x4000_0700 as *const _
242    }
243}
244impl Deref for DIO {
245    type Target = dio::RegisterBlock;
246    #[inline(always)]
247    fn deref(&self) -> &Self::Target {
248        unsafe { &*DIO::ptr() }
249    }
250}
251#[doc = "DIO Interface and Digital Pad control"]
252pub mod dio;
253#[doc = "SPI Interface Configuration and Control"]
254pub struct SPI0 {
255    _marker: PhantomData<*const ()>,
256}
257unsafe impl Send for SPI0 {}
258impl SPI0 {
259    #[doc = r"Returns a pointer to the register block"]
260    #[inline(always)]
261    pub const fn ptr() -> *const spi0::RegisterBlock {
262        0x4000_0800 as *const _
263    }
264}
265impl Deref for SPI0 {
266    type Target = spi0::RegisterBlock;
267    #[inline(always)]
268    fn deref(&self) -> &Self::Target {
269        unsafe { &*SPI0::ptr() }
270    }
271}
272#[doc = "SPI Interface Configuration and Control"]
273pub mod spi0;
274#[doc = "SPI Interface Configuration and Control"]
275pub struct SPI1 {
276    _marker: PhantomData<*const ()>,
277}
278unsafe impl Send for SPI1 {}
279impl SPI1 {
280    #[doc = r"Returns a pointer to the register block"]
281    #[inline(always)]
282    pub const fn ptr() -> *const spi1::RegisterBlock {
283        0x4000_0900 as *const _
284    }
285}
286impl Deref for SPI1 {
287    type Target = spi1::RegisterBlock;
288    #[inline(always)]
289    fn deref(&self) -> &Self::Target {
290        unsafe { &*SPI1::ptr() }
291    }
292}
293#[doc = "SPI Interface Configuration and Control"]
294pub mod spi1;
295#[doc = "PCM Interface Configuration and Control"]
296pub struct PCM {
297    _marker: PhantomData<*const ()>,
298}
299unsafe impl Send for PCM {}
300impl PCM {
301    #[doc = r"Returns a pointer to the register block"]
302    #[inline(always)]
303    pub const fn ptr() -> *const pcm::RegisterBlock {
304        0x4000_0a00 as *const _
305    }
306}
307impl Deref for PCM {
308    type Target = pcm::RegisterBlock;
309    #[inline(always)]
310    fn deref(&self) -> &Self::Target {
311        unsafe { &*PCM::ptr() }
312    }
313}
314#[doc = "PCM Interface Configuration and Control"]
315pub mod pcm;
316#[doc = "I2C Interface Configuration and Control"]
317pub struct I2C {
318    _marker: PhantomData<*const ()>,
319}
320unsafe impl Send for I2C {}
321impl I2C {
322    #[doc = r"Returns a pointer to the register block"]
323    #[inline(always)]
324    pub const fn ptr() -> *const i2c::RegisterBlock {
325        0x4000_0b00 as *const _
326    }
327}
328impl Deref for I2C {
329    type Target = i2c::RegisterBlock;
330    #[inline(always)]
331    fn deref(&self) -> &Self::Target {
332        unsafe { &*I2C::ptr() }
333    }
334}
335#[doc = "I2C Interface Configuration and Control"]
336pub mod i2c;
337#[doc = "UART Interface Configuration and Control"]
338pub struct UART {
339    _marker: PhantomData<*const ()>,
340}
341unsafe impl Send for UART {}
342impl UART {
343    #[doc = r"Returns a pointer to the register block"]
344    #[inline(always)]
345    pub const fn ptr() -> *const uart::RegisterBlock {
346        0x4000_0c00 as *const _
347    }
348}
349impl Deref for UART {
350    type Target = uart::RegisterBlock;
351    #[inline(always)]
352    fn deref(&self) -> &Self::Target {
353        unsafe { &*UART::ptr() }
354    }
355}
356#[doc = "UART Interface Configuration and Control"]
357pub mod uart;
358#[doc = "PWM 0 and 1 Configuration and Control"]
359pub struct PWM {
360    _marker: PhantomData<*const ()>,
361}
362unsafe impl Send for PWM {}
363impl PWM {
364    #[doc = r"Returns a pointer to the register block"]
365    #[inline(always)]
366    pub const fn ptr() -> *const pwm::RegisterBlock {
367        0x4000_0d00 as *const _
368    }
369}
370impl Deref for PWM {
371    type Target = pwm::RegisterBlock;
372    #[inline(always)]
373    fn deref(&self) -> &Self::Target {
374        unsafe { &*PWM::ptr() }
375    }
376}
377#[doc = "PWM 0 and 1 Configuration and Control"]
378pub mod pwm;
379#[doc = "DMIC Input and Output Driver Configuration and Control"]
380pub struct AUDIO {
381    _marker: PhantomData<*const ()>,
382}
383unsafe impl Send for AUDIO {}
384impl AUDIO {
385    #[doc = r"Returns a pointer to the register block"]
386    #[inline(always)]
387    pub const fn ptr() -> *const audio::RegisterBlock {
388        0x4000_0e00 as *const _
389    }
390}
391impl Deref for AUDIO {
392    type Target = audio::RegisterBlock;
393    #[inline(always)]
394    fn deref(&self) -> &Self::Target {
395        unsafe { &*AUDIO::ptr() }
396    }
397}
398#[doc = "DMIC Input and Output Driver Configuration and Control"]
399pub mod audio;
400#[doc = "CRC Generator Control"]
401pub struct CRC {
402    _marker: PhantomData<*const ()>,
403}
404unsafe impl Send for CRC {}
405impl CRC {
406    #[doc = r"Returns a pointer to the register block"]
407    #[inline(always)]
408    pub const fn ptr() -> *const crc::RegisterBlock {
409        0x4000_0f00 as *const _
410    }
411}
412impl Deref for CRC {
413    type Target = crc::RegisterBlock;
414    #[inline(always)]
415    fn deref(&self) -> &Self::Target {
416        unsafe { &*CRC::ptr() }
417    }
418}
419#[doc = "CRC Generator Control"]
420pub mod crc;
421#[doc = "Audio Sink Clock Counters"]
422pub struct AUDIOSINK {
423    _marker: PhantomData<*const ()>,
424}
425unsafe impl Send for AUDIOSINK {}
426impl AUDIOSINK {
427    #[doc = r"Returns a pointer to the register block"]
428    #[inline(always)]
429    pub const fn ptr() -> *const audiosink::RegisterBlock {
430        0x4000_1000 as *const _
431    }
432}
433impl Deref for AUDIOSINK {
434    type Target = audiosink::RegisterBlock;
435    #[inline(always)]
436    fn deref(&self) -> &Self::Target {
437        unsafe { &*AUDIOSINK::ptr() }
438    }
439}
440#[doc = "Audio Sink Clock Counters"]
441pub mod audiosink;
442#[doc = "ASRC Configuration and Control"]
443pub struct ASRC {
444    _marker: PhantomData<*const ()>,
445}
446unsafe impl Send for ASRC {}
447impl ASRC {
448    #[doc = r"Returns a pointer to the register block"]
449    #[inline(always)]
450    pub const fn ptr() -> *const asrc::RegisterBlock {
451        0x4000_1100 as *const _
452    }
453}
454impl Deref for ASRC {
455    type Target = asrc::RegisterBlock;
456    #[inline(always)]
457    fn deref(&self) -> &Self::Target {
458        unsafe { &*ASRC::ptr() }
459    }
460}
461#[doc = "ASRC Configuration and Control"]
462pub mod asrc;
463#[doc = "Analog-to-Digital Converter and Battery Monitoring"]
464pub struct ADC {
465    _marker: PhantomData<*const ()>,
466}
467unsafe impl Send for ADC {}
468impl ADC {
469    #[doc = r"Returns a pointer to the register block"]
470    #[inline(always)]
471    pub const fn ptr() -> *const adc::RegisterBlock {
472        0x4000_1200 as *const _
473    }
474}
475impl Deref for ADC {
476    type Target = adc::RegisterBlock;
477    #[inline(always)]
478    fn deref(&self) -> &Self::Target {
479        unsafe { &*ADC::ptr() }
480    }
481}
482#[doc = "Analog-to-Digital Converter and Battery Monitoring"]
483pub mod adc;
484#[doc = "ACS domain (Analog Bridge Access)"]
485pub struct ACS {
486    _marker: PhantomData<*const ()>,
487}
488unsafe impl Send for ACS {}
489impl ACS {
490    #[doc = r"Returns a pointer to the register block"]
491    #[inline(always)]
492    pub const fn ptr() -> *const acs::RegisterBlock {
493        0x4000_1300 as *const _
494    }
495}
496impl Deref for ACS {
497    type Target = acs::RegisterBlock;
498    #[inline(always)]
499    fn deref(&self) -> &Self::Target {
500        unsafe { &*ACS::ptr() }
501    }
502}
503#[doc = "ACS domain (Analog Bridge Access)"]
504pub mod acs;
505#[doc = "Baseband Controller Interface"]
506pub struct BBIF {
507    _marker: PhantomData<*const ()>,
508}
509unsafe impl Send for BBIF {}
510impl BBIF {
511    #[doc = r"Returns a pointer to the register block"]
512    #[inline(always)]
513    pub const fn ptr() -> *const bbif::RegisterBlock {
514        0x4000_1400 as *const _
515    }
516}
517impl Deref for BBIF {
518    type Target = bbif::RegisterBlock;
519    #[inline(always)]
520    fn deref(&self) -> &Self::Target {
521        unsafe { &*BBIF::ptr() }
522    }
523}
524#[doc = "Baseband Controller Interface"]
525pub mod bbif;
526#[doc = "Baseband Controller"]
527pub struct BB {
528    _marker: PhantomData<*const ()>,
529}
530unsafe impl Send for BB {}
531impl BB {
532    #[doc = r"Returns a pointer to the register block"]
533    #[inline(always)]
534    pub const fn ptr() -> *const bb::RegisterBlock {
535        0x4000_1500 as *const _
536    }
537}
538impl Deref for BB {
539    type Target = bb::RegisterBlock;
540    #[inline(always)]
541    fn deref(&self) -> &Self::Target {
542        unsafe { &*BB::ptr() }
543    }
544}
545#[doc = "Baseband Controller"]
546pub mod bb;
547#[doc = "RF Front-End 2.4 GHz"]
548pub struct RF {
549    _marker: PhantomData<*const ()>,
550}
551unsafe impl Send for RF {}
552impl RF {
553    #[doc = r"Returns a pointer to the register block"]
554    #[inline(always)]
555    pub const fn ptr() -> *const rf::RegisterBlock {
556        0x4001_0000 as *const _
557    }
558}
559impl Deref for RF {
560    type Target = rf::RegisterBlock;
561    #[inline(always)]
562    fn deref(&self) -> &Self::Target {
563        unsafe { &*RF::ptr() }
564    }
565}
566#[doc = "RF Front-End 2.4 GHz"]
567pub mod rf;
568#[doc = "SYSTICK Timer"]
569pub struct SYSTICK {
570    _marker: PhantomData<*const ()>,
571}
572unsafe impl Send for SYSTICK {}
573impl SYSTICK {
574    #[doc = r"Returns a pointer to the register block"]
575    #[inline(always)]
576    pub const fn ptr() -> *const sys_tick::RegisterBlock {
577        0xe000_e010 as *const _
578    }
579}
580impl Deref for SYSTICK {
581    type Target = sys_tick::RegisterBlock;
582    #[inline(always)]
583    fn deref(&self) -> &Self::Target {
584        unsafe { &*SYSTICK::ptr() }
585    }
586}
587#[doc = "SYSTICK Timer"]
588pub mod sys_tick;
589#[doc = "System Control and ID register not in the SCB"]
590pub struct SCNSCB {
591    _marker: PhantomData<*const ()>,
592}
593unsafe impl Send for SCNSCB {}
594impl SCNSCB {
595    #[doc = r"Returns a pointer to the register block"]
596    #[inline(always)]
597    pub const fn ptr() -> *const scn_scb::RegisterBlock {
598        0xe000_e004 as *const _
599    }
600}
601impl Deref for SCNSCB {
602    type Target = scn_scb::RegisterBlock;
603    #[inline(always)]
604    fn deref(&self) -> &Self::Target {
605        unsafe { &*SCNSCB::ptr() }
606    }
607}
608#[doc = "System Control and ID register not in the SCB"]
609pub mod scn_scb;
610#[doc = "Debug Controller"]
611pub struct DEBUG {
612    _marker: PhantomData<*const ()>,
613}
614unsafe impl Send for DEBUG {}
615impl DEBUG {
616    #[doc = r"Returns a pointer to the register block"]
617    #[inline(always)]
618    pub const fn ptr() -> *const debug::RegisterBlock {
619        0xe000_edf0 as *const _
620    }
621}
622impl Deref for DEBUG {
623    type Target = debug::RegisterBlock;
624    #[inline(always)]
625    fn deref(&self) -> &Self::Target {
626        unsafe { &*DEBUG::ptr() }
627    }
628}
629#[doc = "Debug Controller"]
630pub mod debug;
631#[no_mangle]
632static mut DEVICE_PERIPHERALS: bool = false;
633#[doc = r"All the peripherals"]
634#[allow(non_snake_case)]
635pub struct Peripherals {
636    #[doc = "AHBREGS"]
637    pub AHBREGS: AHBREGS,
638    #[doc = "SYSCTRL"]
639    pub SYSCTRL: SYSCTRL,
640    #[doc = "CLK"]
641    pub CLK: CLK,
642    #[doc = "DIG"]
643    pub DIG: DIG,
644    #[doc = "WATCHDOG"]
645    pub WATCHDOG: WATCHDOG,
646    #[doc = "TIMER"]
647    pub TIMER: TIMER,
648    #[doc = "FLASH"]
649    pub FLASH: FLASH,
650    #[doc = "DMA"]
651    pub DMA: DMA,
652    #[doc = "DIO"]
653    pub DIO: DIO,
654    #[doc = "SPI0"]
655    pub SPI0: SPI0,
656    #[doc = "SPI1"]
657    pub SPI1: SPI1,
658    #[doc = "PCM"]
659    pub PCM: PCM,
660    #[doc = "I2C"]
661    pub I2C: I2C,
662    #[doc = "UART"]
663    pub UART: UART,
664    #[doc = "PWM"]
665    pub PWM: PWM,
666    #[doc = "AUDIO"]
667    pub AUDIO: AUDIO,
668    #[doc = "CRC"]
669    pub CRC: CRC,
670    #[doc = "AUDIOSINK"]
671    pub AUDIOSINK: AUDIOSINK,
672    #[doc = "ASRC"]
673    pub ASRC: ASRC,
674    #[doc = "ADC"]
675    pub ADC: ADC,
676    #[doc = "ACS"]
677    pub ACS: ACS,
678    #[doc = "BBIF"]
679    pub BBIF: BBIF,
680    #[doc = "BB"]
681    pub BB: BB,
682    #[doc = "RF"]
683    pub RF: RF,
684    #[doc = "SYSTICK"]
685    pub SYSTICK: SYSTICK,
686    #[doc = "SCNSCB"]
687    pub SCNSCB: SCNSCB,
688    #[doc = "DEBUG"]
689    pub DEBUG: DEBUG,
690}
691impl Peripherals {
692    #[doc = r"Returns all the peripherals *once*"]
693    #[inline]
694    pub fn take() -> Option<Self> {
695        cortex_m::interrupt::free(|_| {
696            if unsafe { DEVICE_PERIPHERALS } {
697                None
698            } else {
699                Some(unsafe { Peripherals::steal() })
700            }
701        })
702    }
703    #[doc = r"Unchecked version of `Peripherals::take`"]
704    #[inline]
705    pub unsafe fn steal() -> Self {
706        DEVICE_PERIPHERALS = true;
707        Peripherals {
708            AHBREGS: AHBREGS {
709                _marker: PhantomData,
710            },
711            SYSCTRL: SYSCTRL {
712                _marker: PhantomData,
713            },
714            CLK: CLK {
715                _marker: PhantomData,
716            },
717            DIG: DIG {
718                _marker: PhantomData,
719            },
720            WATCHDOG: WATCHDOG {
721                _marker: PhantomData,
722            },
723            TIMER: TIMER {
724                _marker: PhantomData,
725            },
726            FLASH: FLASH {
727                _marker: PhantomData,
728            },
729            DMA: DMA {
730                _marker: PhantomData,
731            },
732            DIO: DIO {
733                _marker: PhantomData,
734            },
735            SPI0: SPI0 {
736                _marker: PhantomData,
737            },
738            SPI1: SPI1 {
739                _marker: PhantomData,
740            },
741            PCM: PCM {
742                _marker: PhantomData,
743            },
744            I2C: I2C {
745                _marker: PhantomData,
746            },
747            UART: UART {
748                _marker: PhantomData,
749            },
750            PWM: PWM {
751                _marker: PhantomData,
752            },
753            AUDIO: AUDIO {
754                _marker: PhantomData,
755            },
756            CRC: CRC {
757                _marker: PhantomData,
758            },
759            AUDIOSINK: AUDIOSINK {
760                _marker: PhantomData,
761            },
762            ASRC: ASRC {
763                _marker: PhantomData,
764            },
765            ADC: ADC {
766                _marker: PhantomData,
767            },
768            ACS: ACS {
769                _marker: PhantomData,
770            },
771            BBIF: BBIF {
772                _marker: PhantomData,
773            },
774            BB: BB {
775                _marker: PhantomData,
776            },
777            RF: RF {
778                _marker: PhantomData,
779            },
780            SYSTICK: SYSTICK {
781                _marker: PhantomData,
782            },
783            SCNSCB: SCNSCB {
784                _marker: PhantomData,
785            },
786            DEBUG: DEBUG {
787                _marker: PhantomData,
788            },
789        }
790    }
791}