r528_pac/
lib.rs

1#![doc = "Peripheral access API for ALLWINNER_R528_UNOFFICIAL microcontrollers (generated using svd2rust v0.24.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.24.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#![deny(const_err)]
4#![deny(dead_code)]
5#![deny(improper_ctypes)]
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(private_in_public)]
13#![deny(unconditional_recursion)]
14#![deny(unused_allocation)]
15#![deny(unused_comparisons)]
16#![deny(unused_parens)]
17#![deny(while_true)]
18#![allow(non_camel_case_types)]
19#![allow(non_snake_case)]
20#![no_std]
21use core::marker::PhantomData;
22use core::ops::Deref;
23#[allow(unused_imports)]
24use generic::*;
25#[doc = r"Common register and bit access and modify traits"]
26pub mod generic;
27#[doc(hidden)]
28pub mod interrupt;
29pub use self::interrupt::Interrupt;
30#[doc = "Clock Controller Unit"]
31pub struct CCU {
32    _marker: PhantomData<*const ()>,
33}
34unsafe impl Send for CCU {}
35impl CCU {
36    #[doc = r"Pointer to the register block"]
37    pub const PTR: *const ccu::RegisterBlock = 0x0200_1000 as *const _;
38    #[doc = r"Return the pointer to the register block"]
39    #[inline(always)]
40    pub const fn ptr() -> *const ccu::RegisterBlock {
41        Self::PTR
42    }
43}
44impl Deref for CCU {
45    type Target = ccu::RegisterBlock;
46    #[inline(always)]
47    fn deref(&self) -> &Self::Target {
48        unsafe { &*Self::PTR }
49    }
50}
51impl core::fmt::Debug for CCU {
52    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
53        f.debug_struct("CCU").finish()
54    }
55}
56#[doc = "Clock Controller Unit"]
57pub mod ccu;
58#[doc = "System Configuration"]
59pub struct SYS_CFG {
60    _marker: PhantomData<*const ()>,
61}
62unsafe impl Send for SYS_CFG {}
63impl SYS_CFG {
64    #[doc = r"Pointer to the register block"]
65    pub const PTR: *const sys_cfg::RegisterBlock = 0x0300_0000 as *const _;
66    #[doc = r"Return the pointer to the register block"]
67    #[inline(always)]
68    pub const fn ptr() -> *const sys_cfg::RegisterBlock {
69        Self::PTR
70    }
71}
72impl Deref for SYS_CFG {
73    type Target = sys_cfg::RegisterBlock;
74    #[inline(always)]
75    fn deref(&self) -> &Self::Target {
76        unsafe { &*Self::PTR }
77    }
78}
79impl core::fmt::Debug for SYS_CFG {
80    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
81        f.debug_struct("SYS_CFG").finish()
82    }
83}
84#[doc = "System Configuration"]
85pub mod sys_cfg;
86#[doc = "Timer Module, includes timer0, timer1, watchdog and audio video synchronization"]
87pub struct TIMER {
88    _marker: PhantomData<*const ()>,
89}
90unsafe impl Send for TIMER {}
91impl TIMER {
92    #[doc = r"Pointer to the register block"]
93    pub const PTR: *const timer::RegisterBlock = 0x0205_0000 as *const _;
94    #[doc = r"Return the pointer to the register block"]
95    #[inline(always)]
96    pub const fn ptr() -> *const timer::RegisterBlock {
97        Self::PTR
98    }
99}
100impl Deref for TIMER {
101    type Target = timer::RegisterBlock;
102    #[inline(always)]
103    fn deref(&self) -> &Self::Target {
104        unsafe { &*Self::PTR }
105    }
106}
107impl core::fmt::Debug for TIMER {
108    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
109        f.debug_struct("TIMER").finish()
110    }
111}
112#[doc = "Timer Module, includes timer0, timer1, watchdog and audio video synchronization"]
113pub mod timer;
114#[doc = "High Speed Timer"]
115pub struct HSTIMER {
116    _marker: PhantomData<*const ()>,
117}
118unsafe impl Send for HSTIMER {}
119impl HSTIMER {
120    #[doc = r"Pointer to the register block"]
121    pub const PTR: *const hstimer::RegisterBlock = 0x0300_8000 as *const _;
122    #[doc = r"Return the pointer to the register block"]
123    #[inline(always)]
124    pub const fn ptr() -> *const hstimer::RegisterBlock {
125        Self::PTR
126    }
127}
128impl Deref for HSTIMER {
129    type Target = hstimer::RegisterBlock;
130    #[inline(always)]
131    fn deref(&self) -> &Self::Target {
132        unsafe { &*Self::PTR }
133    }
134}
135impl core::fmt::Debug for HSTIMER {
136    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
137        f.debug_struct("HSTIMER").finish()
138    }
139}
140#[doc = "High Speed Timer"]
141pub mod hstimer;
142#[doc = "Platform Level Interrupt Control"]
143pub struct PLIC {
144    _marker: PhantomData<*const ()>,
145}
146unsafe impl Send for PLIC {}
147impl PLIC {
148    #[doc = r"Pointer to the register block"]
149    pub const PTR: *const plic::RegisterBlock = 0x1000_0000 as *const _;
150    #[doc = r"Return the pointer to the register block"]
151    #[inline(always)]
152    pub const fn ptr() -> *const plic::RegisterBlock {
153        Self::PTR
154    }
155}
156impl Deref for PLIC {
157    type Target = plic::RegisterBlock;
158    #[inline(always)]
159    fn deref(&self) -> &Self::Target {
160        unsafe { &*Self::PTR }
161    }
162}
163impl core::fmt::Debug for PLIC {
164    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
165        f.debug_struct("PLIC").finish()
166    }
167}
168#[doc = "Platform Level Interrupt Control"]
169pub mod plic;
170#[doc = "Direct Memory Access Controller"]
171pub struct DMAC {
172    _marker: PhantomData<*const ()>,
173}
174unsafe impl Send for DMAC {}
175impl DMAC {
176    #[doc = r"Pointer to the register block"]
177    pub const PTR: *const dmac::RegisterBlock = 0x0300_2000 as *const _;
178    #[doc = r"Return the pointer to the register block"]
179    #[inline(always)]
180    pub const fn ptr() -> *const dmac::RegisterBlock {
181        Self::PTR
182    }
183}
184impl Deref for DMAC {
185    type Target = dmac::RegisterBlock;
186    #[inline(always)]
187    fn deref(&self) -> &Self::Target {
188        unsafe { &*Self::PTR }
189    }
190}
191impl core::fmt::Debug for DMAC {
192    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
193        f.debug_struct("DMAC").finish()
194    }
195}
196#[doc = "Direct Memory Access Controller"]
197pub mod dmac;
198#[doc = "Thermal Sensor Controller"]
199pub struct THS {
200    _marker: PhantomData<*const ()>,
201}
202unsafe impl Send for THS {}
203impl THS {
204    #[doc = r"Pointer to the register block"]
205    pub const PTR: *const ths::RegisterBlock = 0x0200_9400 as *const _;
206    #[doc = r"Return the pointer to the register block"]
207    #[inline(always)]
208    pub const fn ptr() -> *const ths::RegisterBlock {
209        Self::PTR
210    }
211}
212impl Deref for THS {
213    type Target = ths::RegisterBlock;
214    #[inline(always)]
215    fn deref(&self) -> &Self::Target {
216        unsafe { &*Self::PTR }
217    }
218}
219impl core::fmt::Debug for THS {
220    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
221        f.debug_struct("THS").finish()
222    }
223}
224#[doc = "Thermal Sensor Controller"]
225pub mod ths;
226#[doc = "I/O Memory Management Unit"]
227pub struct IOMMU {
228    _marker: PhantomData<*const ()>,
229}
230unsafe impl Send for IOMMU {}
231impl IOMMU {
232    #[doc = r"Pointer to the register block"]
233    pub const PTR: *const iommu::RegisterBlock = 0x0201_0000 as *const _;
234    #[doc = r"Return the pointer to the register block"]
235    #[inline(always)]
236    pub const fn ptr() -> *const iommu::RegisterBlock {
237        Self::PTR
238    }
239}
240impl Deref for IOMMU {
241    type Target = iommu::RegisterBlock;
242    #[inline(always)]
243    fn deref(&self) -> &Self::Target {
244        unsafe { &*Self::PTR }
245    }
246}
247impl core::fmt::Debug for IOMMU {
248    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
249        f.debug_struct("IOMMU").finish()
250    }
251}
252#[doc = "I/O Memory Management Unit"]
253pub mod iommu;
254#[doc = "DSP Message Box"]
255pub struct DSP_MSGBOX {
256    _marker: PhantomData<*const ()>,
257}
258unsafe impl Send for DSP_MSGBOX {}
259impl DSP_MSGBOX {
260    #[doc = r"Pointer to the register block"]
261    pub const PTR: *const dsp_msgbox::RegisterBlock = 0x0170_1000 as *const _;
262    #[doc = r"Return the pointer to the register block"]
263    #[inline(always)]
264    pub const fn ptr() -> *const dsp_msgbox::RegisterBlock {
265        Self::PTR
266    }
267}
268impl Deref for DSP_MSGBOX {
269    type Target = dsp_msgbox::RegisterBlock;
270    #[inline(always)]
271    fn deref(&self) -> &Self::Target {
272        unsafe { &*Self::PTR }
273    }
274}
275impl core::fmt::Debug for DSP_MSGBOX {
276    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
277        f.debug_struct("DSP_MSGBOX").finish()
278    }
279}
280#[doc = "DSP Message Box"]
281pub mod dsp_msgbox;
282#[doc = "RISC-V Message Box"]
283pub struct RV_MSGBOX {
284    _marker: PhantomData<*const ()>,
285}
286unsafe impl Send for RV_MSGBOX {}
287impl RV_MSGBOX {
288    #[doc = r"Pointer to the register block"]
289    pub const PTR: *const dsp_msgbox::RegisterBlock = 0x0601_f000 as *const _;
290    #[doc = r"Return the pointer to the register block"]
291    #[inline(always)]
292    pub const fn ptr() -> *const dsp_msgbox::RegisterBlock {
293        Self::PTR
294    }
295}
296impl Deref for RV_MSGBOX {
297    type Target = dsp_msgbox::RegisterBlock;
298    #[inline(always)]
299    fn deref(&self) -> &Self::Target {
300        unsafe { &*Self::PTR }
301    }
302}
303impl core::fmt::Debug for RV_MSGBOX {
304    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
305        f.debug_struct("RV_MSGBOX").finish()
306    }
307}
308#[doc = "RISC-V Message Box"]
309pub use dsp_msgbox as rv_msgbox;
310#[doc = "Spinlock"]
311pub struct SPINLOCK {
312    _marker: PhantomData<*const ()>,
313}
314unsafe impl Send for SPINLOCK {}
315impl SPINLOCK {
316    #[doc = r"Pointer to the register block"]
317    pub const PTR: *const spinlock::RegisterBlock = 0x0300_5000 as *const _;
318    #[doc = r"Return the pointer to the register block"]
319    #[inline(always)]
320    pub const fn ptr() -> *const spinlock::RegisterBlock {
321        Self::PTR
322    }
323}
324impl Deref for SPINLOCK {
325    type Target = spinlock::RegisterBlock;
326    #[inline(always)]
327    fn deref(&self) -> &Self::Target {
328        unsafe { &*Self::PTR }
329    }
330}
331impl core::fmt::Debug for SPINLOCK {
332    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
333        f.debug_struct("SPINLOCK").finish()
334    }
335}
336#[doc = "Spinlock"]
337pub mod spinlock;
338#[doc = "Real Time CLock"]
339pub struct RTC {
340    _marker: PhantomData<*const ()>,
341}
342unsafe impl Send for RTC {}
343impl RTC {
344    #[doc = r"Pointer to the register block"]
345    pub const PTR: *const rtc::RegisterBlock = 0x0709_0000 as *const _;
346    #[doc = r"Return the pointer to the register block"]
347    #[inline(always)]
348    pub const fn ptr() -> *const rtc::RegisterBlock {
349        Self::PTR
350    }
351}
352impl Deref for RTC {
353    type Target = rtc::RegisterBlock;
354    #[inline(always)]
355    fn deref(&self) -> &Self::Target {
356        unsafe { &*Self::PTR }
357    }
358}
359impl core::fmt::Debug for RTC {
360    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
361        f.debug_struct("RTC").finish()
362    }
363}
364#[doc = "Real Time CLock"]
365pub mod rtc;
366#[doc = "Timing COntroller LCD"]
367pub struct TCON_LCD0 {
368    _marker: PhantomData<*const ()>,
369}
370unsafe impl Send for TCON_LCD0 {}
371impl TCON_LCD0 {
372    #[doc = r"Pointer to the register block"]
373    pub const PTR: *const tcon_lcd0::RegisterBlock = 0x0546_1000 as *const _;
374    #[doc = r"Return the pointer to the register block"]
375    #[inline(always)]
376    pub const fn ptr() -> *const tcon_lcd0::RegisterBlock {
377        Self::PTR
378    }
379}
380impl Deref for TCON_LCD0 {
381    type Target = tcon_lcd0::RegisterBlock;
382    #[inline(always)]
383    fn deref(&self) -> &Self::Target {
384        unsafe { &*Self::PTR }
385    }
386}
387impl core::fmt::Debug for TCON_LCD0 {
388    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
389        f.debug_struct("TCON_LCD0").finish()
390    }
391}
392#[doc = "Timing COntroller LCD"]
393pub mod tcon_lcd0;
394#[doc = "Timing COntroller TV"]
395pub struct TCON_TV0 {
396    _marker: PhantomData<*const ()>,
397}
398unsafe impl Send for TCON_TV0 {}
399impl TCON_TV0 {
400    #[doc = r"Pointer to the register block"]
401    pub const PTR: *const tcon_tv0::RegisterBlock = 0x0547_0000 as *const _;
402    #[doc = r"Return the pointer to the register block"]
403    #[inline(always)]
404    pub const fn ptr() -> *const tcon_tv0::RegisterBlock {
405        Self::PTR
406    }
407}
408impl Deref for TCON_TV0 {
409    type Target = tcon_tv0::RegisterBlock;
410    #[inline(always)]
411    fn deref(&self) -> &Self::Target {
412        unsafe { &*Self::PTR }
413    }
414}
415impl core::fmt::Debug for TCON_TV0 {
416    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
417        f.debug_struct("TCON_TV0").finish()
418    }
419}
420#[doc = "Timing COntroller TV"]
421pub mod tcon_tv0;
422#[doc = "TV Encoder TOP"]
423pub struct TVE_TOP {
424    _marker: PhantomData<*const ()>,
425}
426unsafe impl Send for TVE_TOP {}
427impl TVE_TOP {
428    #[doc = r"Pointer to the register block"]
429    pub const PTR: *const tve_top::RegisterBlock = 0x0560_0000 as *const _;
430    #[doc = r"Return the pointer to the register block"]
431    #[inline(always)]
432    pub const fn ptr() -> *const tve_top::RegisterBlock {
433        Self::PTR
434    }
435}
436impl Deref for TVE_TOP {
437    type Target = tve_top::RegisterBlock;
438    #[inline(always)]
439    fn deref(&self) -> &Self::Target {
440        unsafe { &*Self::PTR }
441    }
442}
443impl core::fmt::Debug for TVE_TOP {
444    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
445        f.debug_struct("TVE_TOP").finish()
446    }
447}
448#[doc = "TV Encoder TOP"]
449pub mod tve_top;
450#[doc = "TV Encoder"]
451pub struct TVE {
452    _marker: PhantomData<*const ()>,
453}
454unsafe impl Send for TVE {}
455impl TVE {
456    #[doc = r"Pointer to the register block"]
457    pub const PTR: *const tve::RegisterBlock = 0x0560_4000 as *const _;
458    #[doc = r"Return the pointer to the register block"]
459    #[inline(always)]
460    pub const fn ptr() -> *const tve::RegisterBlock {
461        Self::PTR
462    }
463}
464impl Deref for TVE {
465    type Target = tve::RegisterBlock;
466    #[inline(always)]
467    fn deref(&self) -> &Self::Target {
468        unsafe { &*Self::PTR }
469    }
470}
471impl core::fmt::Debug for TVE {
472    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
473        f.debug_struct("TVE").finish()
474    }
475}
476#[doc = "TV Encoder"]
477pub mod tve;
478#[doc = "CMOS Sensor Interface Controller"]
479pub struct CSIC {
480    _marker: PhantomData<*const ()>,
481}
482unsafe impl Send for CSIC {}
483impl CSIC {
484    #[doc = r"Pointer to the register block"]
485    pub const PTR: *const csic::RegisterBlock = 0x0580_0000 as *const _;
486    #[doc = r"Return the pointer to the register block"]
487    #[inline(always)]
488    pub const fn ptr() -> *const csic::RegisterBlock {
489        Self::PTR
490    }
491}
492impl Deref for CSIC {
493    type Target = csic::RegisterBlock;
494    #[inline(always)]
495    fn deref(&self) -> &Self::Target {
496        unsafe { &*Self::PTR }
497    }
498}
499impl core::fmt::Debug for CSIC {
500    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
501        f.debug_struct("CSIC").finish()
502    }
503}
504#[doc = "CMOS Sensor Interface Controller"]
505pub mod csic;
506#[doc = "Television Decoder TOP"]
507pub struct TVD_TOP {
508    _marker: PhantomData<*const ()>,
509}
510unsafe impl Send for TVD_TOP {}
511impl TVD_TOP {
512    #[doc = r"Pointer to the register block"]
513    pub const PTR: *const tvd_top::RegisterBlock = 0x05c0_0000 as *const _;
514    #[doc = r"Return the pointer to the register block"]
515    #[inline(always)]
516    pub const fn ptr() -> *const tvd_top::RegisterBlock {
517        Self::PTR
518    }
519}
520impl Deref for TVD_TOP {
521    type Target = tvd_top::RegisterBlock;
522    #[inline(always)]
523    fn deref(&self) -> &Self::Target {
524        unsafe { &*Self::PTR }
525    }
526}
527impl core::fmt::Debug for TVD_TOP {
528    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
529        f.debug_struct("TVD_TOP").finish()
530    }
531}
532#[doc = "Television Decoder TOP"]
533pub mod tvd_top;
534#[doc = "Television Decoder"]
535pub struct TVD0 {
536    _marker: PhantomData<*const ()>,
537}
538unsafe impl Send for TVD0 {}
539impl TVD0 {
540    #[doc = r"Pointer to the register block"]
541    pub const PTR: *const tvd0::RegisterBlock = 0x05c0_1000 as *const _;
542    #[doc = r"Return the pointer to the register block"]
543    #[inline(always)]
544    pub const fn ptr() -> *const tvd0::RegisterBlock {
545        Self::PTR
546    }
547}
548impl Deref for TVD0 {
549    type Target = tvd0::RegisterBlock;
550    #[inline(always)]
551    fn deref(&self) -> &Self::Target {
552        unsafe { &*Self::PTR }
553    }
554}
555impl core::fmt::Debug for TVD0 {
556    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
557        f.debug_struct("TVD0").finish()
558    }
559}
560#[doc = "Television Decoder"]
561pub mod tvd0;
562#[doc = "SD/MMC Host Controller"]
563pub struct SMHC0 {
564    _marker: PhantomData<*const ()>,
565}
566unsafe impl Send for SMHC0 {}
567impl SMHC0 {
568    #[doc = r"Pointer to the register block"]
569    pub const PTR: *const smhc::RegisterBlock = 0x0402_0000 as *const _;
570    #[doc = r"Return the pointer to the register block"]
571    #[inline(always)]
572    pub const fn ptr() -> *const smhc::RegisterBlock {
573        Self::PTR
574    }
575}
576impl Deref for SMHC0 {
577    type Target = smhc::RegisterBlock;
578    #[inline(always)]
579    fn deref(&self) -> &Self::Target {
580        unsafe { &*Self::PTR }
581    }
582}
583impl core::fmt::Debug for SMHC0 {
584    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
585        f.debug_struct("SMHC0").finish()
586    }
587}
588#[doc = "SD/MMC Host Controller"]
589pub struct SMHC1 {
590    _marker: PhantomData<*const ()>,
591}
592unsafe impl Send for SMHC1 {}
593impl SMHC1 {
594    #[doc = r"Pointer to the register block"]
595    pub const PTR: *const smhc::RegisterBlock = 0x0402_1000 as *const _;
596    #[doc = r"Return the pointer to the register block"]
597    #[inline(always)]
598    pub const fn ptr() -> *const smhc::RegisterBlock {
599        Self::PTR
600    }
601}
602impl Deref for SMHC1 {
603    type Target = smhc::RegisterBlock;
604    #[inline(always)]
605    fn deref(&self) -> &Self::Target {
606        unsafe { &*Self::PTR }
607    }
608}
609impl core::fmt::Debug for SMHC1 {
610    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
611        f.debug_struct("SMHC1").finish()
612    }
613}
614#[doc = "SD/MMC Host Controller"]
615pub struct SMHC2 {
616    _marker: PhantomData<*const ()>,
617}
618unsafe impl Send for SMHC2 {}
619impl SMHC2 {
620    #[doc = r"Pointer to the register block"]
621    pub const PTR: *const smhc::RegisterBlock = 0x0402_2000 as *const _;
622    #[doc = r"Return the pointer to the register block"]
623    #[inline(always)]
624    pub const fn ptr() -> *const smhc::RegisterBlock {
625        Self::PTR
626    }
627}
628impl Deref for SMHC2 {
629    type Target = smhc::RegisterBlock;
630    #[inline(always)]
631    fn deref(&self) -> &Self::Target {
632        unsafe { &*Self::PTR }
633    }
634}
635impl core::fmt::Debug for SMHC2 {
636    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
637        f.debug_struct("SMHC2").finish()
638    }
639}
640#[doc = "SD/MMC Host Controller"]
641pub mod smhc;
642#[doc = "I2S/PCM"]
643pub struct I2S_PCM0 {
644    _marker: PhantomData<*const ()>,
645}
646unsafe impl Send for I2S_PCM0 {}
647impl I2S_PCM0 {
648    #[doc = r"Pointer to the register block"]
649    pub const PTR: *const i2s_pcm::RegisterBlock = 0x0203_2000 as *const _;
650    #[doc = r"Return the pointer to the register block"]
651    #[inline(always)]
652    pub const fn ptr() -> *const i2s_pcm::RegisterBlock {
653        Self::PTR
654    }
655}
656impl Deref for I2S_PCM0 {
657    type Target = i2s_pcm::RegisterBlock;
658    #[inline(always)]
659    fn deref(&self) -> &Self::Target {
660        unsafe { &*Self::PTR }
661    }
662}
663impl core::fmt::Debug for I2S_PCM0 {
664    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
665        f.debug_struct("I2S_PCM0").finish()
666    }
667}
668#[doc = "I2S/PCM"]
669pub struct I2S_PCM1 {
670    _marker: PhantomData<*const ()>,
671}
672unsafe impl Send for I2S_PCM1 {}
673impl I2S_PCM1 {
674    #[doc = r"Pointer to the register block"]
675    pub const PTR: *const i2s_pcm::RegisterBlock = 0x0203_3000 as *const _;
676    #[doc = r"Return the pointer to the register block"]
677    #[inline(always)]
678    pub const fn ptr() -> *const i2s_pcm::RegisterBlock {
679        Self::PTR
680    }
681}
682impl Deref for I2S_PCM1 {
683    type Target = i2s_pcm::RegisterBlock;
684    #[inline(always)]
685    fn deref(&self) -> &Self::Target {
686        unsafe { &*Self::PTR }
687    }
688}
689impl core::fmt::Debug for I2S_PCM1 {
690    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
691        f.debug_struct("I2S_PCM1").finish()
692    }
693}
694#[doc = "I2S/PCM"]
695pub struct I2S_PCM2 {
696    _marker: PhantomData<*const ()>,
697}
698unsafe impl Send for I2S_PCM2 {}
699impl I2S_PCM2 {
700    #[doc = r"Pointer to the register block"]
701    pub const PTR: *const i2s_pcm::RegisterBlock = 0x0203_4000 as *const _;
702    #[doc = r"Return the pointer to the register block"]
703    #[inline(always)]
704    pub const fn ptr() -> *const i2s_pcm::RegisterBlock {
705        Self::PTR
706    }
707}
708impl Deref for I2S_PCM2 {
709    type Target = i2s_pcm::RegisterBlock;
710    #[inline(always)]
711    fn deref(&self) -> &Self::Target {
712        unsafe { &*Self::PTR }
713    }
714}
715impl core::fmt::Debug for I2S_PCM2 {
716    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
717        f.debug_struct("I2S_PCM2").finish()
718    }
719}
720#[doc = "I2S/PCM"]
721pub mod i2s_pcm;
722#[doc = "DMIC"]
723pub struct DMIC {
724    _marker: PhantomData<*const ()>,
725}
726unsafe impl Send for DMIC {}
727impl DMIC {
728    #[doc = r"Pointer to the register block"]
729    pub const PTR: *const dmic::RegisterBlock = 0x0203_1000 as *const _;
730    #[doc = r"Return the pointer to the register block"]
731    #[inline(always)]
732    pub const fn ptr() -> *const dmic::RegisterBlock {
733        Self::PTR
734    }
735}
736impl Deref for DMIC {
737    type Target = dmic::RegisterBlock;
738    #[inline(always)]
739    fn deref(&self) -> &Self::Target {
740        unsafe { &*Self::PTR }
741    }
742}
743impl core::fmt::Debug for DMIC {
744    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
745        f.debug_struct("DMIC").finish()
746    }
747}
748#[doc = "DMIC"]
749pub mod dmic;
750#[doc = "One Wire Audio"]
751pub struct OWA {
752    _marker: PhantomData<*const ()>,
753}
754unsafe impl Send for OWA {}
755impl OWA {
756    #[doc = r"Pointer to the register block"]
757    pub const PTR: *const owa::RegisterBlock = 0x0203_6000 as *const _;
758    #[doc = r"Return the pointer to the register block"]
759    #[inline(always)]
760    pub const fn ptr() -> *const owa::RegisterBlock {
761        Self::PTR
762    }
763}
764impl Deref for OWA {
765    type Target = owa::RegisterBlock;
766    #[inline(always)]
767    fn deref(&self) -> &Self::Target {
768        unsafe { &*Self::PTR }
769    }
770}
771impl core::fmt::Debug for OWA {
772    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
773        f.debug_struct("OWA").finish()
774    }
775}
776#[doc = "One Wire Audio"]
777pub mod owa;
778#[doc = "Audio Codec"]
779pub struct AUDIOCODEC {
780    _marker: PhantomData<*const ()>,
781}
782unsafe impl Send for AUDIOCODEC {}
783impl AUDIOCODEC {
784    #[doc = r"Pointer to the register block"]
785    pub const PTR: *const audio_codec::RegisterBlock = 0x0203_0000 as *const _;
786    #[doc = r"Return the pointer to the register block"]
787    #[inline(always)]
788    pub const fn ptr() -> *const audio_codec::RegisterBlock {
789        Self::PTR
790    }
791}
792impl Deref for AUDIOCODEC {
793    type Target = audio_codec::RegisterBlock;
794    #[inline(always)]
795    fn deref(&self) -> &Self::Target {
796        unsafe { &*Self::PTR }
797    }
798}
799impl core::fmt::Debug for AUDIOCODEC {
800    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
801        f.debug_struct("AUDIOCODEC").finish()
802    }
803}
804#[doc = "Audio Codec"]
805pub mod audio_codec;
806#[doc = "Two Wire Interface"]
807pub struct TWI0 {
808    _marker: PhantomData<*const ()>,
809}
810unsafe impl Send for TWI0 {}
811impl TWI0 {
812    #[doc = r"Pointer to the register block"]
813    pub const PTR: *const twi::RegisterBlock = 0x0250_2000 as *const _;
814    #[doc = r"Return the pointer to the register block"]
815    #[inline(always)]
816    pub const fn ptr() -> *const twi::RegisterBlock {
817        Self::PTR
818    }
819}
820impl Deref for TWI0 {
821    type Target = twi::RegisterBlock;
822    #[inline(always)]
823    fn deref(&self) -> &Self::Target {
824        unsafe { &*Self::PTR }
825    }
826}
827impl core::fmt::Debug for TWI0 {
828    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
829        f.debug_struct("TWI0").finish()
830    }
831}
832#[doc = "Two Wire Interface"]
833pub struct TWI1 {
834    _marker: PhantomData<*const ()>,
835}
836unsafe impl Send for TWI1 {}
837impl TWI1 {
838    #[doc = r"Pointer to the register block"]
839    pub const PTR: *const twi::RegisterBlock = 0x0250_2400 as *const _;
840    #[doc = r"Return the pointer to the register block"]
841    #[inline(always)]
842    pub const fn ptr() -> *const twi::RegisterBlock {
843        Self::PTR
844    }
845}
846impl Deref for TWI1 {
847    type Target = twi::RegisterBlock;
848    #[inline(always)]
849    fn deref(&self) -> &Self::Target {
850        unsafe { &*Self::PTR }
851    }
852}
853impl core::fmt::Debug for TWI1 {
854    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
855        f.debug_struct("TWI1").finish()
856    }
857}
858#[doc = "Two Wire Interface"]
859pub struct TWI2 {
860    _marker: PhantomData<*const ()>,
861}
862unsafe impl Send for TWI2 {}
863impl TWI2 {
864    #[doc = r"Pointer to the register block"]
865    pub const PTR: *const twi::RegisterBlock = 0x0250_2800 as *const _;
866    #[doc = r"Return the pointer to the register block"]
867    #[inline(always)]
868    pub const fn ptr() -> *const twi::RegisterBlock {
869        Self::PTR
870    }
871}
872impl Deref for TWI2 {
873    type Target = twi::RegisterBlock;
874    #[inline(always)]
875    fn deref(&self) -> &Self::Target {
876        unsafe { &*Self::PTR }
877    }
878}
879impl core::fmt::Debug for TWI2 {
880    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
881        f.debug_struct("TWI2").finish()
882    }
883}
884#[doc = "Two Wire Interface"]
885pub struct TWI3 {
886    _marker: PhantomData<*const ()>,
887}
888unsafe impl Send for TWI3 {}
889impl TWI3 {
890    #[doc = r"Pointer to the register block"]
891    pub const PTR: *const twi::RegisterBlock = 0x0250_2c00 as *const _;
892    #[doc = r"Return the pointer to the register block"]
893    #[inline(always)]
894    pub const fn ptr() -> *const twi::RegisterBlock {
895        Self::PTR
896    }
897}
898impl Deref for TWI3 {
899    type Target = twi::RegisterBlock;
900    #[inline(always)]
901    fn deref(&self) -> &Self::Target {
902        unsafe { &*Self::PTR }
903    }
904}
905impl core::fmt::Debug for TWI3 {
906    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
907        f.debug_struct("TWI3").finish()
908    }
909}
910#[doc = "Two Wire Interface"]
911pub mod twi;
912#[doc = "Universal Asynchronous Receiver Transmitter"]
913pub struct UART0 {
914    _marker: PhantomData<*const ()>,
915}
916unsafe impl Send for UART0 {}
917impl UART0 {
918    #[doc = r"Pointer to the register block"]
919    pub const PTR: *const uart::RegisterBlock = 0x0250_0000 as *const _;
920    #[doc = r"Return the pointer to the register block"]
921    #[inline(always)]
922    pub const fn ptr() -> *const uart::RegisterBlock {
923        Self::PTR
924    }
925}
926impl Deref for UART0 {
927    type Target = uart::RegisterBlock;
928    #[inline(always)]
929    fn deref(&self) -> &Self::Target {
930        unsafe { &*Self::PTR }
931    }
932}
933impl core::fmt::Debug for UART0 {
934    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
935        f.debug_struct("UART0").finish()
936    }
937}
938#[doc = "Universal Asynchronous Receiver Transmitter"]
939pub struct UART1 {
940    _marker: PhantomData<*const ()>,
941}
942unsafe impl Send for UART1 {}
943impl UART1 {
944    #[doc = r"Pointer to the register block"]
945    pub const PTR: *const uart::RegisterBlock = 0x0250_0400 as *const _;
946    #[doc = r"Return the pointer to the register block"]
947    #[inline(always)]
948    pub const fn ptr() -> *const uart::RegisterBlock {
949        Self::PTR
950    }
951}
952impl Deref for UART1 {
953    type Target = uart::RegisterBlock;
954    #[inline(always)]
955    fn deref(&self) -> &Self::Target {
956        unsafe { &*Self::PTR }
957    }
958}
959impl core::fmt::Debug for UART1 {
960    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
961        f.debug_struct("UART1").finish()
962    }
963}
964#[doc = "Universal Asynchronous Receiver Transmitter"]
965pub struct UART2 {
966    _marker: PhantomData<*const ()>,
967}
968unsafe impl Send for UART2 {}
969impl UART2 {
970    #[doc = r"Pointer to the register block"]
971    pub const PTR: *const uart::RegisterBlock = 0x0250_0800 as *const _;
972    #[doc = r"Return the pointer to the register block"]
973    #[inline(always)]
974    pub const fn ptr() -> *const uart::RegisterBlock {
975        Self::PTR
976    }
977}
978impl Deref for UART2 {
979    type Target = uart::RegisterBlock;
980    #[inline(always)]
981    fn deref(&self) -> &Self::Target {
982        unsafe { &*Self::PTR }
983    }
984}
985impl core::fmt::Debug for UART2 {
986    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
987        f.debug_struct("UART2").finish()
988    }
989}
990#[doc = "Universal Asynchronous Receiver Transmitter"]
991pub struct UART3 {
992    _marker: PhantomData<*const ()>,
993}
994unsafe impl Send for UART3 {}
995impl UART3 {
996    #[doc = r"Pointer to the register block"]
997    pub const PTR: *const uart::RegisterBlock = 0x0250_0c00 as *const _;
998    #[doc = r"Return the pointer to the register block"]
999    #[inline(always)]
1000    pub const fn ptr() -> *const uart::RegisterBlock {
1001        Self::PTR
1002    }
1003}
1004impl Deref for UART3 {
1005    type Target = uart::RegisterBlock;
1006    #[inline(always)]
1007    fn deref(&self) -> &Self::Target {
1008        unsafe { &*Self::PTR }
1009    }
1010}
1011impl core::fmt::Debug for UART3 {
1012    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1013        f.debug_struct("UART3").finish()
1014    }
1015}
1016#[doc = "Universal Asynchronous Receiver Transmitter"]
1017pub struct UART4 {
1018    _marker: PhantomData<*const ()>,
1019}
1020unsafe impl Send for UART4 {}
1021impl UART4 {
1022    #[doc = r"Pointer to the register block"]
1023    pub const PTR: *const uart::RegisterBlock = 0x0250_1000 as *const _;
1024    #[doc = r"Return the pointer to the register block"]
1025    #[inline(always)]
1026    pub const fn ptr() -> *const uart::RegisterBlock {
1027        Self::PTR
1028    }
1029}
1030impl Deref for UART4 {
1031    type Target = uart::RegisterBlock;
1032    #[inline(always)]
1033    fn deref(&self) -> &Self::Target {
1034        unsafe { &*Self::PTR }
1035    }
1036}
1037impl core::fmt::Debug for UART4 {
1038    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1039        f.debug_struct("UART4").finish()
1040    }
1041}
1042#[doc = "Universal Asynchronous Receiver Transmitter"]
1043pub struct UART5 {
1044    _marker: PhantomData<*const ()>,
1045}
1046unsafe impl Send for UART5 {}
1047impl UART5 {
1048    #[doc = r"Pointer to the register block"]
1049    pub const PTR: *const uart::RegisterBlock = 0x0250_1400 as *const _;
1050    #[doc = r"Return the pointer to the register block"]
1051    #[inline(always)]
1052    pub const fn ptr() -> *const uart::RegisterBlock {
1053        Self::PTR
1054    }
1055}
1056impl Deref for UART5 {
1057    type Target = uart::RegisterBlock;
1058    #[inline(always)]
1059    fn deref(&self) -> &Self::Target {
1060        unsafe { &*Self::PTR }
1061    }
1062}
1063impl core::fmt::Debug for UART5 {
1064    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1065        f.debug_struct("UART5").finish()
1066    }
1067}
1068#[doc = "Universal Asynchronous Receiver Transmitter"]
1069pub mod uart;
1070#[doc = "Serial Peripheral Interface"]
1071pub struct SPI0 {
1072    _marker: PhantomData<*const ()>,
1073}
1074unsafe impl Send for SPI0 {}
1075impl SPI0 {
1076    #[doc = r"Pointer to the register block"]
1077    pub const PTR: *const spi0::RegisterBlock = 0x0402_5000 as *const _;
1078    #[doc = r"Return the pointer to the register block"]
1079    #[inline(always)]
1080    pub const fn ptr() -> *const spi0::RegisterBlock {
1081        Self::PTR
1082    }
1083}
1084impl Deref for SPI0 {
1085    type Target = spi0::RegisterBlock;
1086    #[inline(always)]
1087    fn deref(&self) -> &Self::Target {
1088        unsafe { &*Self::PTR }
1089    }
1090}
1091impl core::fmt::Debug for SPI0 {
1092    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1093        f.debug_struct("SPI0").finish()
1094    }
1095}
1096#[doc = "Serial Peripheral Interface"]
1097pub mod spi0;
1098#[doc = "Serial Peripheral Interface Display Bus Interface"]
1099pub struct SPI_DBI {
1100    _marker: PhantomData<*const ()>,
1101}
1102unsafe impl Send for SPI_DBI {}
1103impl SPI_DBI {
1104    #[doc = r"Pointer to the register block"]
1105    pub const PTR: *const spi_dbi::RegisterBlock = 0x0402_6000 as *const _;
1106    #[doc = r"Return the pointer to the register block"]
1107    #[inline(always)]
1108    pub const fn ptr() -> *const spi_dbi::RegisterBlock {
1109        Self::PTR
1110    }
1111}
1112impl Deref for SPI_DBI {
1113    type Target = spi_dbi::RegisterBlock;
1114    #[inline(always)]
1115    fn deref(&self) -> &Self::Target {
1116        unsafe { &*Self::PTR }
1117    }
1118}
1119impl core::fmt::Debug for SPI_DBI {
1120    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1121        f.debug_struct("SPI_DBI").finish()
1122    }
1123}
1124#[doc = "Serial Peripheral Interface Display Bus Interface"]
1125pub mod spi_dbi;
1126#[doc = "USB2.0 HOST"]
1127pub struct USB1 {
1128    _marker: PhantomData<*const ()>,
1129}
1130unsafe impl Send for USB1 {}
1131impl USB1 {
1132    #[doc = r"Pointer to the register block"]
1133    pub const PTR: *const usb1::RegisterBlock = 0x0420_0000 as *const _;
1134    #[doc = r"Return the pointer to the register block"]
1135    #[inline(always)]
1136    pub const fn ptr() -> *const usb1::RegisterBlock {
1137        Self::PTR
1138    }
1139}
1140impl Deref for USB1 {
1141    type Target = usb1::RegisterBlock;
1142    #[inline(always)]
1143    fn deref(&self) -> &Self::Target {
1144        unsafe { &*Self::PTR }
1145    }
1146}
1147impl core::fmt::Debug for USB1 {
1148    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1149        f.debug_struct("USB1").finish()
1150    }
1151}
1152#[doc = "USB2.0 HOST"]
1153pub mod usb1;
1154#[doc = "Gerneral Purpose Input/Output"]
1155pub struct GPIO {
1156    _marker: PhantomData<*const ()>,
1157}
1158unsafe impl Send for GPIO {}
1159impl GPIO {
1160    #[doc = r"Pointer to the register block"]
1161    pub const PTR: *const gpio::RegisterBlock = 0x0200_0000 as *const _;
1162    #[doc = r"Return the pointer to the register block"]
1163    #[inline(always)]
1164    pub const fn ptr() -> *const gpio::RegisterBlock {
1165        Self::PTR
1166    }
1167}
1168impl Deref for GPIO {
1169    type Target = gpio::RegisterBlock;
1170    #[inline(always)]
1171    fn deref(&self) -> &Self::Target {
1172        unsafe { &*Self::PTR }
1173    }
1174}
1175impl core::fmt::Debug for GPIO {
1176    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1177        f.debug_struct("GPIO").finish()
1178    }
1179}
1180#[doc = "Gerneral Purpose Input/Output"]
1181pub mod gpio;
1182#[doc = "General Purpose ADC"]
1183pub struct GPADC {
1184    _marker: PhantomData<*const ()>,
1185}
1186unsafe impl Send for GPADC {}
1187impl GPADC {
1188    #[doc = r"Pointer to the register block"]
1189    pub const PTR: *const gpadc::RegisterBlock = 0x0200_9000 as *const _;
1190    #[doc = r"Return the pointer to the register block"]
1191    #[inline(always)]
1192    pub const fn ptr() -> *const gpadc::RegisterBlock {
1193        Self::PTR
1194    }
1195}
1196impl Deref for GPADC {
1197    type Target = gpadc::RegisterBlock;
1198    #[inline(always)]
1199    fn deref(&self) -> &Self::Target {
1200        unsafe { &*Self::PTR }
1201    }
1202}
1203impl core::fmt::Debug for GPADC {
1204    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1205        f.debug_struct("GPADC").finish()
1206    }
1207}
1208#[doc = "General Purpose ADC"]
1209pub mod gpadc;
1210#[doc = "Touch Panel ADC"]
1211pub struct TPADC {
1212    _marker: PhantomData<*const ()>,
1213}
1214unsafe impl Send for TPADC {}
1215impl TPADC {
1216    #[doc = r"Pointer to the register block"]
1217    pub const PTR: *const tpadc::RegisterBlock = 0x0200_9c00 as *const _;
1218    #[doc = r"Return the pointer to the register block"]
1219    #[inline(always)]
1220    pub const fn ptr() -> *const tpadc::RegisterBlock {
1221        Self::PTR
1222    }
1223}
1224impl Deref for TPADC {
1225    type Target = tpadc::RegisterBlock;
1226    #[inline(always)]
1227    fn deref(&self) -> &Self::Target {
1228        unsafe { &*Self::PTR }
1229    }
1230}
1231impl core::fmt::Debug for TPADC {
1232    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1233        f.debug_struct("TPADC").finish()
1234    }
1235}
1236#[doc = "Touch Panel ADC"]
1237pub mod tpadc;
1238#[doc = "Low Rate ADC"]
1239pub struct LRADC {
1240    _marker: PhantomData<*const ()>,
1241}
1242unsafe impl Send for LRADC {}
1243impl LRADC {
1244    #[doc = r"Pointer to the register block"]
1245    pub const PTR: *const lradc::RegisterBlock = 0x0200_9800 as *const _;
1246    #[doc = r"Return the pointer to the register block"]
1247    #[inline(always)]
1248    pub const fn ptr() -> *const lradc::RegisterBlock {
1249        Self::PTR
1250    }
1251}
1252impl Deref for LRADC {
1253    type Target = lradc::RegisterBlock;
1254    #[inline(always)]
1255    fn deref(&self) -> &Self::Target {
1256        unsafe { &*Self::PTR }
1257    }
1258}
1259impl core::fmt::Debug for LRADC {
1260    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1261        f.debug_struct("LRADC").finish()
1262    }
1263}
1264#[doc = "Low Rate ADC"]
1265pub mod lradc;
1266#[doc = "Pulse Width Modulation"]
1267pub struct PWM {
1268    _marker: PhantomData<*const ()>,
1269}
1270unsafe impl Send for PWM {}
1271impl PWM {
1272    #[doc = r"Pointer to the register block"]
1273    pub const PTR: *const pwm::RegisterBlock = 0x0200_0c00 as *const _;
1274    #[doc = r"Return the pointer to the register block"]
1275    #[inline(always)]
1276    pub const fn ptr() -> *const pwm::RegisterBlock {
1277        Self::PTR
1278    }
1279}
1280impl Deref for PWM {
1281    type Target = pwm::RegisterBlock;
1282    #[inline(always)]
1283    fn deref(&self) -> &Self::Target {
1284        unsafe { &*Self::PTR }
1285    }
1286}
1287impl core::fmt::Debug for PWM {
1288    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1289        f.debug_struct("PWM").finish()
1290    }
1291}
1292#[doc = "Pulse Width Modulation"]
1293pub mod pwm;
1294#[doc = "LEDC"]
1295pub struct LEDC {
1296    _marker: PhantomData<*const ()>,
1297}
1298unsafe impl Send for LEDC {}
1299impl LEDC {
1300    #[doc = r"Pointer to the register block"]
1301    pub const PTR: *const ledc::RegisterBlock = 0x0200_8000 as *const _;
1302    #[doc = r"Return the pointer to the register block"]
1303    #[inline(always)]
1304    pub const fn ptr() -> *const ledc::RegisterBlock {
1305        Self::PTR
1306    }
1307}
1308impl Deref for LEDC {
1309    type Target = ledc::RegisterBlock;
1310    #[inline(always)]
1311    fn deref(&self) -> &Self::Target {
1312        unsafe { &*Self::PTR }
1313    }
1314}
1315impl core::fmt::Debug for LEDC {
1316    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1317        f.debug_struct("LEDC").finish()
1318    }
1319}
1320#[doc = "LEDC"]
1321pub mod ledc;
1322#[doc = "Ethernet Medium Access Controller"]
1323pub struct EMAC {
1324    _marker: PhantomData<*const ()>,
1325}
1326unsafe impl Send for EMAC {}
1327impl EMAC {
1328    #[doc = r"Pointer to the register block"]
1329    pub const PTR: *const emac::RegisterBlock = 0x0450_0000 as *const _;
1330    #[doc = r"Return the pointer to the register block"]
1331    #[inline(always)]
1332    pub const fn ptr() -> *const emac::RegisterBlock {
1333        Self::PTR
1334    }
1335}
1336impl Deref for EMAC {
1337    type Target = emac::RegisterBlock;
1338    #[inline(always)]
1339    fn deref(&self) -> &Self::Target {
1340        unsafe { &*Self::PTR }
1341    }
1342}
1343impl core::fmt::Debug for EMAC {
1344    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1345        f.debug_struct("EMAC").finish()
1346    }
1347}
1348#[doc = "Ethernet Medium Access Controller"]
1349pub mod emac;
1350#[doc = "Counsumer Infrared Receiver"]
1351pub struct CIR_RX {
1352    _marker: PhantomData<*const ()>,
1353}
1354unsafe impl Send for CIR_RX {}
1355impl CIR_RX {
1356    #[doc = r"Pointer to the register block"]
1357    pub const PTR: *const cir_rx::RegisterBlock = 0x0704_0000 as *const _;
1358    #[doc = r"Return the pointer to the register block"]
1359    #[inline(always)]
1360    pub const fn ptr() -> *const cir_rx::RegisterBlock {
1361        Self::PTR
1362    }
1363}
1364impl Deref for CIR_RX {
1365    type Target = cir_rx::RegisterBlock;
1366    #[inline(always)]
1367    fn deref(&self) -> &Self::Target {
1368        unsafe { &*Self::PTR }
1369    }
1370}
1371impl core::fmt::Debug for CIR_RX {
1372    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1373        f.debug_struct("CIR_RX").finish()
1374    }
1375}
1376#[doc = "Counsumer Infrared Receiver"]
1377pub mod cir_rx;
1378#[doc = "Counsumer Infrared Transmitter"]
1379pub struct CIR_TX {
1380    _marker: PhantomData<*const ()>,
1381}
1382unsafe impl Send for CIR_TX {}
1383impl CIR_TX {
1384    #[doc = r"Pointer to the register block"]
1385    pub const PTR: *const cir_tx::RegisterBlock = 0x0200_3000 as *const _;
1386    #[doc = r"Return the pointer to the register block"]
1387    #[inline(always)]
1388    pub const fn ptr() -> *const cir_tx::RegisterBlock {
1389        Self::PTR
1390    }
1391}
1392impl Deref for CIR_TX {
1393    type Target = cir_tx::RegisterBlock;
1394    #[inline(always)]
1395    fn deref(&self) -> &Self::Target {
1396        unsafe { &*Self::PTR }
1397    }
1398}
1399impl core::fmt::Debug for CIR_TX {
1400    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1401        f.debug_struct("CIR_TX").finish()
1402    }
1403}
1404#[doc = "Counsumer Infrared Transmitter"]
1405pub mod cir_tx;
1406#[doc = "Crypoto Engine"]
1407pub struct CE_NS {
1408    _marker: PhantomData<*const ()>,
1409}
1410unsafe impl Send for CE_NS {}
1411impl CE_NS {
1412    #[doc = r"Pointer to the register block"]
1413    pub const PTR: *const ce_ns::RegisterBlock = 0x0304_0000 as *const _;
1414    #[doc = r"Return the pointer to the register block"]
1415    #[inline(always)]
1416    pub const fn ptr() -> *const ce_ns::RegisterBlock {
1417        Self::PTR
1418    }
1419}
1420impl Deref for CE_NS {
1421    type Target = ce_ns::RegisterBlock;
1422    #[inline(always)]
1423    fn deref(&self) -> &Self::Target {
1424        unsafe { &*Self::PTR }
1425    }
1426}
1427impl core::fmt::Debug for CE_NS {
1428    fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1429        f.debug_struct("CE_NS").finish()
1430    }
1431}
1432#[doc = "Crypoto Engine"]
1433pub mod ce_ns;
1434#[no_mangle]
1435static mut DEVICE_PERIPHERALS: bool = false;
1436#[doc = r"All the peripherals"]
1437#[allow(non_snake_case)]
1438pub struct Peripherals {
1439    #[doc = "CCU"]
1440    pub CCU: CCU,
1441    #[doc = "SYS_CFG"]
1442    pub SYS_CFG: SYS_CFG,
1443    #[doc = "TIMER"]
1444    pub TIMER: TIMER,
1445    #[doc = "HSTIMER"]
1446    pub HSTIMER: HSTIMER,
1447    #[doc = "PLIC"]
1448    pub PLIC: PLIC,
1449    #[doc = "DMAC"]
1450    pub DMAC: DMAC,
1451    #[doc = "THS"]
1452    pub THS: THS,
1453    #[doc = "IOMMU"]
1454    pub IOMMU: IOMMU,
1455    #[doc = "DSP_MSGBOX"]
1456    pub DSP_MSGBOX: DSP_MSGBOX,
1457    #[doc = "RV_MSGBOX"]
1458    pub RV_MSGBOX: RV_MSGBOX,
1459    #[doc = "SPINLOCK"]
1460    pub SPINLOCK: SPINLOCK,
1461    #[doc = "RTC"]
1462    pub RTC: RTC,
1463    #[doc = "TCON_LCD0"]
1464    pub TCON_LCD0: TCON_LCD0,
1465    #[doc = "TCON_TV0"]
1466    pub TCON_TV0: TCON_TV0,
1467    #[doc = "TVE_TOP"]
1468    pub TVE_TOP: TVE_TOP,
1469    #[doc = "TVE"]
1470    pub TVE: TVE,
1471    #[doc = "CSIC"]
1472    pub CSIC: CSIC,
1473    #[doc = "TVD_TOP"]
1474    pub TVD_TOP: TVD_TOP,
1475    #[doc = "TVD0"]
1476    pub TVD0: TVD0,
1477    #[doc = "SMHC0"]
1478    pub SMHC0: SMHC0,
1479    #[doc = "SMHC1"]
1480    pub SMHC1: SMHC1,
1481    #[doc = "SMHC2"]
1482    pub SMHC2: SMHC2,
1483    #[doc = "I2S_PCM0"]
1484    pub I2S_PCM0: I2S_PCM0,
1485    #[doc = "I2S_PCM1"]
1486    pub I2S_PCM1: I2S_PCM1,
1487    #[doc = "I2S_PCM2"]
1488    pub I2S_PCM2: I2S_PCM2,
1489    #[doc = "DMIC"]
1490    pub DMIC: DMIC,
1491    #[doc = "OWA"]
1492    pub OWA: OWA,
1493    #[doc = "AUDIOCODEC"]
1494    pub AUDIOCODEC: AUDIOCODEC,
1495    #[doc = "TWI0"]
1496    pub TWI0: TWI0,
1497    #[doc = "TWI1"]
1498    pub TWI1: TWI1,
1499    #[doc = "TWI2"]
1500    pub TWI2: TWI2,
1501    #[doc = "TWI3"]
1502    pub TWI3: TWI3,
1503    #[doc = "UART0"]
1504    pub UART0: UART0,
1505    #[doc = "UART1"]
1506    pub UART1: UART1,
1507    #[doc = "UART2"]
1508    pub UART2: UART2,
1509    #[doc = "UART3"]
1510    pub UART3: UART3,
1511    #[doc = "UART4"]
1512    pub UART4: UART4,
1513    #[doc = "UART5"]
1514    pub UART5: UART5,
1515    #[doc = "SPI0"]
1516    pub SPI0: SPI0,
1517    #[doc = "SPI_DBI"]
1518    pub SPI_DBI: SPI_DBI,
1519    #[doc = "USB1"]
1520    pub USB1: USB1,
1521    #[doc = "GPIO"]
1522    pub GPIO: GPIO,
1523    #[doc = "GPADC"]
1524    pub GPADC: GPADC,
1525    #[doc = "TPADC"]
1526    pub TPADC: TPADC,
1527    #[doc = "LRADC"]
1528    pub LRADC: LRADC,
1529    #[doc = "PWM"]
1530    pub PWM: PWM,
1531    #[doc = "LEDC"]
1532    pub LEDC: LEDC,
1533    #[doc = "EMAC"]
1534    pub EMAC: EMAC,
1535    #[doc = "CIR_RX"]
1536    pub CIR_RX: CIR_RX,
1537    #[doc = "CIR_TX"]
1538    pub CIR_TX: CIR_TX,
1539    #[doc = "CE_NS"]
1540    pub CE_NS: CE_NS,
1541}
1542impl Peripherals {
1543    #[doc = r"Unchecked version of `Peripherals::take`"]
1544    #[inline]
1545    pub unsafe fn steal() -> Self {
1546        DEVICE_PERIPHERALS = true;
1547        Peripherals {
1548            CCU: CCU {
1549                _marker: PhantomData,
1550            },
1551            SYS_CFG: SYS_CFG {
1552                _marker: PhantomData,
1553            },
1554            TIMER: TIMER {
1555                _marker: PhantomData,
1556            },
1557            HSTIMER: HSTIMER {
1558                _marker: PhantomData,
1559            },
1560            PLIC: PLIC {
1561                _marker: PhantomData,
1562            },
1563            DMAC: DMAC {
1564                _marker: PhantomData,
1565            },
1566            THS: THS {
1567                _marker: PhantomData,
1568            },
1569            IOMMU: IOMMU {
1570                _marker: PhantomData,
1571            },
1572            DSP_MSGBOX: DSP_MSGBOX {
1573                _marker: PhantomData,
1574            },
1575            RV_MSGBOX: RV_MSGBOX {
1576                _marker: PhantomData,
1577            },
1578            SPINLOCK: SPINLOCK {
1579                _marker: PhantomData,
1580            },
1581            RTC: RTC {
1582                _marker: PhantomData,
1583            },
1584            TCON_LCD0: TCON_LCD0 {
1585                _marker: PhantomData,
1586            },
1587            TCON_TV0: TCON_TV0 {
1588                _marker: PhantomData,
1589            },
1590            TVE_TOP: TVE_TOP {
1591                _marker: PhantomData,
1592            },
1593            TVE: TVE {
1594                _marker: PhantomData,
1595            },
1596            CSIC: CSIC {
1597                _marker: PhantomData,
1598            },
1599            TVD_TOP: TVD_TOP {
1600                _marker: PhantomData,
1601            },
1602            TVD0: TVD0 {
1603                _marker: PhantomData,
1604            },
1605            SMHC0: SMHC0 {
1606                _marker: PhantomData,
1607            },
1608            SMHC1: SMHC1 {
1609                _marker: PhantomData,
1610            },
1611            SMHC2: SMHC2 {
1612                _marker: PhantomData,
1613            },
1614            I2S_PCM0: I2S_PCM0 {
1615                _marker: PhantomData,
1616            },
1617            I2S_PCM1: I2S_PCM1 {
1618                _marker: PhantomData,
1619            },
1620            I2S_PCM2: I2S_PCM2 {
1621                _marker: PhantomData,
1622            },
1623            DMIC: DMIC {
1624                _marker: PhantomData,
1625            },
1626            OWA: OWA {
1627                _marker: PhantomData,
1628            },
1629            AUDIOCODEC: AUDIOCODEC {
1630                _marker: PhantomData,
1631            },
1632            TWI0: TWI0 {
1633                _marker: PhantomData,
1634            },
1635            TWI1: TWI1 {
1636                _marker: PhantomData,
1637            },
1638            TWI2: TWI2 {
1639                _marker: PhantomData,
1640            },
1641            TWI3: TWI3 {
1642                _marker: PhantomData,
1643            },
1644            UART0: UART0 {
1645                _marker: PhantomData,
1646            },
1647            UART1: UART1 {
1648                _marker: PhantomData,
1649            },
1650            UART2: UART2 {
1651                _marker: PhantomData,
1652            },
1653            UART3: UART3 {
1654                _marker: PhantomData,
1655            },
1656            UART4: UART4 {
1657                _marker: PhantomData,
1658            },
1659            UART5: UART5 {
1660                _marker: PhantomData,
1661            },
1662            SPI0: SPI0 {
1663                _marker: PhantomData,
1664            },
1665            SPI_DBI: SPI_DBI {
1666                _marker: PhantomData,
1667            },
1668            USB1: USB1 {
1669                _marker: PhantomData,
1670            },
1671            GPIO: GPIO {
1672                _marker: PhantomData,
1673            },
1674            GPADC: GPADC {
1675                _marker: PhantomData,
1676            },
1677            TPADC: TPADC {
1678                _marker: PhantomData,
1679            },
1680            LRADC: LRADC {
1681                _marker: PhantomData,
1682            },
1683            PWM: PWM {
1684                _marker: PhantomData,
1685            },
1686            LEDC: LEDC {
1687                _marker: PhantomData,
1688            },
1689            EMAC: EMAC {
1690                _marker: PhantomData,
1691            },
1692            CIR_RX: CIR_RX {
1693                _marker: PhantomData,
1694            },
1695            CIR_TX: CIR_TX {
1696                _marker: PhantomData,
1697            },
1698            CE_NS: CE_NS {
1699                _marker: PhantomData,
1700            },
1701        }
1702    }
1703}