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}