1#[doc = concat!("assert_eq!(chip_name, ", chip!(), ")")]
12#[macro_export]
14#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
15macro_rules! chip {
16 () => {
17 "esp32s3"
18 };
19}
20#[macro_export]
22#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
23macro_rules! property {
24 ("chip") => {
25 "esp32s3"
26 };
27 ("arch") => {
28 "xtensa"
29 };
30 ("cores") => {
31 2
32 };
33 ("cores", str) => {
34 stringify!(2)
35 };
36 ("trm") => {
37 "https://www.espressif.com/sites/default/files/documentation/esp32-s3_technical_reference_manual_en.pdf"
38 };
39 ("soc.cpu_has_csr_pc") => {
40 false
41 };
42 ("soc.cpu_has_prv_mode") => {
43 false
44 };
45 ("soc.rc_fast_clk_default") => {
46 17500000
47 };
48 ("soc.rc_fast_clk_default", str) => {
49 stringify!(17500000)
50 };
51 ("soc.rc_slow_clock") => {
52 136000
53 };
54 ("soc.rc_slow_clock", str) => {
55 stringify!(136000)
56 };
57 ("soc.xtal_frequency") => {
58 40
59 };
60 ("soc.xtal_frequency", str) => {
61 stringify!(40)
62 };
63 ("aes.dma") => {
64 true
65 };
66 ("aes.has_split_text_registers") => {
67 true
68 };
69 ("aes.endianness_configurable") => {
70 false
71 };
72 ("assist_debug.has_sp_monitor") => {
73 false
74 };
75 ("assist_debug.has_region_monitor") => {
76 true
77 };
78 ("gpio.has_bank_1") => {
79 true
80 };
81 ("gpio.gpio_function") => {
82 1
83 };
84 ("gpio.gpio_function", str) => {
85 stringify!(1)
86 };
87 ("gpio.constant_0_input") => {
88 60
89 };
90 ("gpio.constant_0_input", str) => {
91 stringify!(60)
92 };
93 ("gpio.constant_1_input") => {
94 56
95 };
96 ("gpio.constant_1_input", str) => {
97 stringify!(56)
98 };
99 ("gpio.remap_iomux_pin_registers") => {
100 false
101 };
102 ("gpio.func_in_sel_offset") => {
103 0
104 };
105 ("gpio.func_in_sel_offset", str) => {
106 stringify!(0)
107 };
108 ("gpio.input_signal_max") => {
109 255
110 };
111 ("gpio.input_signal_max", str) => {
112 stringify!(255)
113 };
114 ("gpio.output_signal_max") => {
115 256
116 };
117 ("gpio.output_signal_max", str) => {
118 stringify!(256)
119 };
120 ("i2c_master.has_fsm_timeouts") => {
121 true
122 };
123 ("i2c_master.has_hw_bus_clear") => {
124 false
125 };
126 ("i2c_master.has_bus_timeout_enable") => {
127 true
128 };
129 ("i2c_master.separate_filter_config_registers") => {
130 false
131 };
132 ("i2c_master.can_estimate_nack_reason") => {
133 true
134 };
135 ("i2c_master.has_conf_update") => {
136 true
137 };
138 ("i2c_master.has_reliable_fsm_reset") => {
139 false
140 };
141 ("i2c_master.has_arbitration_en") => {
142 true
143 };
144 ("i2c_master.has_tx_fifo_watermark") => {
145 true
146 };
147 ("i2c_master.bus_timeout_is_exponential") => {
148 true
149 };
150 ("i2c_master.max_bus_timeout") => {
151 31
152 };
153 ("i2c_master.max_bus_timeout", str) => {
154 stringify!(31)
155 };
156 ("i2c_master.ll_intr_mask") => {
157 262143
158 };
159 ("i2c_master.ll_intr_mask", str) => {
160 stringify!(262143)
161 };
162 ("i2c_master.fifo_size") => {
163 32
164 };
165 ("i2c_master.fifo_size", str) => {
166 stringify!(32)
167 };
168 ("interrupts.status_registers") => {
169 4
170 };
171 ("interrupts.status_registers", str) => {
172 stringify!(4)
173 };
174 ("rmt.ram_start") => {
175 1610704896
176 };
177 ("rmt.ram_start", str) => {
178 stringify!(1610704896)
179 };
180 ("rmt.channel_ram_size") => {
181 48
182 };
183 ("rmt.channel_ram_size", str) => {
184 stringify!(48)
185 };
186 ("rmt.has_tx_immediate_stop") => {
187 true
188 };
189 ("rmt.has_tx_loop_count") => {
190 true
191 };
192 ("rmt.has_tx_loop_auto_stop") => {
193 true
194 };
195 ("rmt.has_tx_carrier_data_only") => {
196 true
197 };
198 ("rmt.has_tx_sync") => {
199 true
200 };
201 ("rmt.has_rx_wrap") => {
202 true
203 };
204 ("rmt.has_rx_demodulation") => {
205 true
206 };
207 ("rmt.has_dma") => {
208 true
209 };
210 ("rmt.has_per_channel_clock") => {
211 false
212 };
213 ("rng.apb_cycle_wait_num") => {
214 16
215 };
216 ("rng.apb_cycle_wait_num", str) => {
217 stringify!(16)
218 };
219 ("rsa.size_increment") => {
220 32
221 };
222 ("rsa.size_increment", str) => {
223 stringify!(32)
224 };
225 ("rsa.memory_size_bytes") => {
226 512
227 };
228 ("rsa.memory_size_bytes", str) => {
229 stringify!(512)
230 };
231 ("sha.dma") => {
232 true
233 };
234 ("spi_master.has_octal") => {
235 true
236 };
237 ("timergroup.timg_has_timer1") => {
238 true
239 };
240 ("timergroup.timg_has_divcnt_rst") => {
241 false
242 };
243 ("timergroup.default_clock_source") => {
244 0
245 };
246 ("timergroup.default_clock_source", str) => {
247 stringify!(0)
248 };
249 ("uart.ram_size") => {
250 128
251 };
252 ("uart.ram_size", str) => {
253 stringify!(128)
254 };
255 ("uart.peripheral_controls_mem_clk") => {
256 false
257 };
258 ("wifi.has_wifi6") => {
259 false
260 };
261 ("bt.controller") => {
262 "btdm"
263 };
264 ("phy.combo_module") => {
265 true
266 };
267 ("phy.backed_up_digital_register_count") => {
268 21
269 };
270 ("phy.backed_up_digital_register_count", str) => {
271 stringify!(21)
272 };
273}
274#[macro_export]
275#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
276macro_rules! for_each_soc_xtal_options {
277 ($($pattern:tt => $code:tt;)*) => {
278 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
279 _for_each_inner!((40)); _for_each_inner!((all(40)));
280 };
281}
282#[macro_export]
286#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
287macro_rules! implement_peripheral_clocks {
288 () => {
289 #[doc(hidden)]
290 #[derive(Debug, Clone, Copy, PartialEq, Eq)]
291 #[repr(u8)]
292 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
293 pub enum Peripheral {
294 #[doc = "AES peripheral clock signal"]
295 Aes,
296 #[doc = "APB_SAR_ADC peripheral clock signal"]
297 ApbSarAdc,
298 #[doc = "DMA peripheral clock signal"]
299 Dma,
300 #[doc = "DS peripheral clock signal"]
301 Ds,
302 #[doc = "HMAC peripheral clock signal"]
303 Hmac,
304 #[doc = "I2C_EXT0 peripheral clock signal"]
305 I2cExt0,
306 #[doc = "I2C_EXT1 peripheral clock signal"]
307 I2cExt1,
308 #[doc = "I2S0 peripheral clock signal"]
309 I2s0,
310 #[doc = "I2S1 peripheral clock signal"]
311 I2s1,
312 #[doc = "LCD_CAM peripheral clock signal"]
313 LcdCam,
314 #[doc = "LEDC peripheral clock signal"]
315 Ledc,
316 #[doc = "MCPWM0 peripheral clock signal"]
317 Mcpwm0,
318 #[doc = "MCPWM1 peripheral clock signal"]
319 Mcpwm1,
320 #[doc = "PCNT peripheral clock signal"]
321 Pcnt,
322 #[doc = "PERI_BACKUP peripheral clock signal"]
323 PeriBackup,
324 #[doc = "RMT peripheral clock signal"]
325 Rmt,
326 #[doc = "RSA peripheral clock signal"]
327 Rsa,
328 #[doc = "SDIO_HOST peripheral clock signal"]
329 SdioHost,
330 #[doc = "SHA peripheral clock signal"]
331 Sha,
332 #[doc = "SPI2 peripheral clock signal"]
333 Spi2,
334 #[doc = "SPI3 peripheral clock signal"]
335 Spi3,
336 #[doc = "SYSTIMER peripheral clock signal"]
337 Systimer,
338 #[doc = "TIMG0 peripheral clock signal"]
339 Timg0,
340 #[doc = "TIMG1 peripheral clock signal"]
341 Timg1,
342 #[doc = "TWAI0 peripheral clock signal"]
343 Twai0,
344 #[doc = "UART0 peripheral clock signal"]
345 Uart0,
346 #[doc = "UART1 peripheral clock signal"]
347 Uart1,
348 #[doc = "UART2 peripheral clock signal"]
349 Uart2,
350 #[doc = "UART_MEM peripheral clock signal"]
351 UartMem,
352 #[doc = "UHCI0 peripheral clock signal"]
353 Uhci0,
354 #[doc = "USB peripheral clock signal"]
355 Usb,
356 #[doc = "USB_DEVICE peripheral clock signal"]
357 UsbDevice,
358 }
359 impl Peripheral {
360 const KEEP_ENABLED: &[Peripheral] = &[
361 Self::Systimer,
362 Self::Timg0,
363 Self::Uart0,
364 Self::UartMem,
365 Self::UsbDevice,
366 ];
367 const COUNT: usize = Self::ALL.len();
368 const ALL: &[Self] = &[
369 Self::Aes,
370 Self::ApbSarAdc,
371 Self::Dma,
372 Self::Ds,
373 Self::Hmac,
374 Self::I2cExt0,
375 Self::I2cExt1,
376 Self::I2s0,
377 Self::I2s1,
378 Self::LcdCam,
379 Self::Ledc,
380 Self::Mcpwm0,
381 Self::Mcpwm1,
382 Self::Pcnt,
383 Self::PeriBackup,
384 Self::Rmt,
385 Self::Rsa,
386 Self::SdioHost,
387 Self::Sha,
388 Self::Spi2,
389 Self::Spi3,
390 Self::Systimer,
391 Self::Timg0,
392 Self::Timg1,
393 Self::Twai0,
394 Self::Uart0,
395 Self::Uart1,
396 Self::Uart2,
397 Self::UartMem,
398 Self::Uhci0,
399 Self::Usb,
400 Self::UsbDevice,
401 ];
402 }
403 unsafe fn enable_internal_racey(peripheral: Peripheral, enable: bool) {
404 match peripheral {
405 Peripheral::Aes => {
406 crate::peripherals::SYSTEM::regs()
407 .perip_clk_en1()
408 .modify(|_, w| w.crypto_aes_clk_en().bit(enable));
409 }
410 Peripheral::ApbSarAdc => {
411 crate::peripherals::SYSTEM::regs()
412 .perip_clk_en0()
413 .modify(|_, w| w.apb_saradc_clk_en().bit(enable));
414 }
415 Peripheral::Dma => {
416 crate::peripherals::SYSTEM::regs()
417 .perip_clk_en1()
418 .modify(|_, w| w.dma_clk_en().bit(enable));
419 }
420 Peripheral::Ds => {
421 crate::peripherals::SYSTEM::regs()
422 .perip_clk_en1()
423 .modify(|_, w| w.crypto_ds_clk_en().bit(enable));
424 }
425 Peripheral::Hmac => {
426 crate::peripherals::SYSTEM::regs()
427 .perip_clk_en1()
428 .modify(|_, w| w.crypto_hmac_clk_en().bit(enable));
429 }
430 Peripheral::I2cExt0 => {
431 crate::peripherals::SYSTEM::regs()
432 .perip_clk_en0()
433 .modify(|_, w| w.i2c_ext0_clk_en().bit(enable));
434 }
435 Peripheral::I2cExt1 => {
436 crate::peripherals::SYSTEM::regs()
437 .perip_clk_en0()
438 .modify(|_, w| w.i2c_ext1_clk_en().bit(enable));
439 }
440 Peripheral::I2s0 => {
441 crate::peripherals::SYSTEM::regs()
442 .perip_clk_en0()
443 .modify(|_, w| w.i2s0_clk_en().bit(enable));
444 }
445 Peripheral::I2s1 => {
446 crate::peripherals::SYSTEM::regs()
447 .perip_clk_en0()
448 .modify(|_, w| w.i2s1_clk_en().bit(enable));
449 }
450 Peripheral::LcdCam => {
451 crate::peripherals::SYSTEM::regs()
452 .perip_clk_en1()
453 .modify(|_, w| w.lcd_cam_clk_en().bit(enable));
454 }
455 Peripheral::Ledc => {
456 crate::peripherals::SYSTEM::regs()
457 .perip_clk_en0()
458 .modify(|_, w| w.ledc_clk_en().bit(enable));
459 }
460 Peripheral::Mcpwm0 => {
461 crate::peripherals::SYSTEM::regs()
462 .perip_clk_en0()
463 .modify(|_, w| w.pwm0_clk_en().bit(enable));
464 }
465 Peripheral::Mcpwm1 => {
466 crate::peripherals::SYSTEM::regs()
467 .perip_clk_en0()
468 .modify(|_, w| w.pwm1_clk_en().bit(enable));
469 }
470 Peripheral::Pcnt => {
471 crate::peripherals::SYSTEM::regs()
472 .perip_clk_en0()
473 .modify(|_, w| w.pcnt_clk_en().bit(enable));
474 }
475 Peripheral::PeriBackup => {
476 crate::peripherals::SYSTEM::regs()
477 .perip_clk_en1()
478 .modify(|_, w| w.peri_backup_clk_en().bit(enable));
479 }
480 Peripheral::Rmt => {
481 crate::peripherals::SYSTEM::regs()
482 .perip_clk_en0()
483 .modify(|_, w| w.rmt_clk_en().bit(enable));
484 }
485 Peripheral::Rsa => {
486 crate::peripherals::SYSTEM::regs()
487 .perip_clk_en1()
488 .modify(|_, w| w.crypto_rsa_clk_en().bit(enable));
489 }
490 Peripheral::SdioHost => {
491 crate::peripherals::SYSTEM::regs()
492 .perip_clk_en1()
493 .modify(|_, w| w.sdio_host_clk_en().bit(enable));
494 }
495 Peripheral::Sha => {
496 crate::peripherals::SYSTEM::regs()
497 .perip_clk_en1()
498 .modify(|_, w| w.crypto_sha_clk_en().bit(enable));
499 }
500 Peripheral::Spi2 => {
501 crate::peripherals::SYSTEM::regs()
502 .perip_clk_en0()
503 .modify(|_, w| w.spi2_clk_en().bit(enable));
504 }
505 Peripheral::Spi3 => {
506 crate::peripherals::SYSTEM::regs()
507 .perip_clk_en0()
508 .modify(|_, w| w.spi3_clk_en().bit(enable));
509 }
510 Peripheral::Systimer => {
511 crate::peripherals::SYSTEM::regs()
512 .perip_clk_en0()
513 .modify(|_, w| w.systimer_clk_en().bit(enable));
514 }
515 Peripheral::Timg0 => {
516 crate::peripherals::SYSTEM::regs()
517 .perip_clk_en0()
518 .modify(|_, w| w.timergroup_clk_en().bit(enable));
519 }
520 Peripheral::Timg1 => {
521 crate::peripherals::SYSTEM::regs()
522 .perip_clk_en0()
523 .modify(|_, w| w.timergroup1_clk_en().bit(enable));
524 }
525 Peripheral::Twai0 => {
526 crate::peripherals::SYSTEM::regs()
527 .perip_clk_en0()
528 .modify(|_, w| w.twai_clk_en().bit(enable));
529 }
530 Peripheral::Uart0 => {
531 crate::peripherals::SYSTEM::regs()
532 .perip_clk_en0()
533 .modify(|_, w| w.uart_clk_en().bit(enable));
534 }
535 Peripheral::Uart1 => {
536 crate::peripherals::SYSTEM::regs()
537 .perip_clk_en0()
538 .modify(|_, w| w.uart1_clk_en().bit(enable));
539 }
540 Peripheral::Uart2 => {
541 crate::peripherals::SYSTEM::regs()
542 .perip_clk_en1()
543 .modify(|_, w| w.uart2_clk_en().bit(enable));
544 }
545 Peripheral::UartMem => {
546 crate::peripherals::SYSTEM::regs()
547 .perip_clk_en0()
548 .modify(|_, w| w.uart_mem_clk_en().bit(enable));
549 }
550 Peripheral::Uhci0 => {
551 crate::peripherals::SYSTEM::regs()
552 .perip_clk_en0()
553 .modify(|_, w| w.uhci0_clk_en().bit(enable));
554 }
555 Peripheral::Usb => {
556 crate::peripherals::SYSTEM::regs()
557 .perip_clk_en0()
558 .modify(|_, w| w.usb_clk_en().bit(enable));
559 }
560 Peripheral::UsbDevice => {
561 crate::peripherals::SYSTEM::regs()
562 .perip_clk_en1()
563 .modify(|_, w| w.usb_device_clk_en().bit(enable));
564 }
565 }
566 }
567 unsafe fn assert_peri_reset_racey(peripheral: Peripheral, reset: bool) {
568 match peripheral {
569 Peripheral::Aes => {
570 crate::peripherals::SYSTEM::regs()
571 .perip_rst_en1()
572 .modify(|_, w| w.crypto_aes_rst().bit(reset));
573 }
574 Peripheral::ApbSarAdc => {
575 crate::peripherals::SYSTEM::regs()
576 .perip_rst_en0()
577 .modify(|_, w| w.apb_saradc_rst().bit(reset));
578 }
579 Peripheral::Dma => {
580 crate::peripherals::SYSTEM::regs()
581 .perip_rst_en1()
582 .modify(|_, w| w.dma_rst().bit(reset));
583 }
584 Peripheral::Ds => {
585 crate::peripherals::SYSTEM::regs()
586 .perip_rst_en1()
587 .modify(|_, w| w.crypto_ds_rst().bit(reset));
588 }
589 Peripheral::Hmac => {
590 crate::peripherals::SYSTEM::regs()
591 .perip_rst_en1()
592 .modify(|_, w| w.crypto_hmac_rst().bit(reset));
593 }
594 Peripheral::I2cExt0 => {
595 crate::peripherals::SYSTEM::regs()
596 .perip_rst_en0()
597 .modify(|_, w| w.i2c_ext0_rst().bit(reset));
598 }
599 Peripheral::I2cExt1 => {
600 crate::peripherals::SYSTEM::regs()
601 .perip_rst_en0()
602 .modify(|_, w| w.i2c_ext1_rst().bit(reset));
603 }
604 Peripheral::I2s0 => {
605 crate::peripherals::SYSTEM::regs()
606 .perip_rst_en0()
607 .modify(|_, w| w.i2s0_rst().bit(reset));
608 }
609 Peripheral::I2s1 => {
610 crate::peripherals::SYSTEM::regs()
611 .perip_rst_en0()
612 .modify(|_, w| w.i2s1_rst().bit(reset));
613 }
614 Peripheral::LcdCam => {
615 crate::peripherals::SYSTEM::regs()
616 .perip_rst_en1()
617 .modify(|_, w| w.lcd_cam_rst().bit(reset));
618 }
619 Peripheral::Ledc => {
620 crate::peripherals::SYSTEM::regs()
621 .perip_rst_en0()
622 .modify(|_, w| w.ledc_rst().bit(reset));
623 }
624 Peripheral::Mcpwm0 => {
625 crate::peripherals::SYSTEM::regs()
626 .perip_rst_en0()
627 .modify(|_, w| w.pwm0_rst().bit(reset));
628 }
629 Peripheral::Mcpwm1 => {
630 crate::peripherals::SYSTEM::regs()
631 .perip_rst_en0()
632 .modify(|_, w| w.pwm1_rst().bit(reset));
633 }
634 Peripheral::Pcnt => {
635 crate::peripherals::SYSTEM::regs()
636 .perip_rst_en0()
637 .modify(|_, w| w.pcnt_rst().bit(reset));
638 }
639 Peripheral::PeriBackup => {
640 crate::peripherals::SYSTEM::regs()
641 .perip_rst_en1()
642 .modify(|_, w| w.peri_backup_rst().bit(reset));
643 }
644 Peripheral::Rmt => {
645 crate::peripherals::SYSTEM::regs()
646 .perip_rst_en0()
647 .modify(|_, w| w.rmt_rst().bit(reset));
648 }
649 Peripheral::Rsa => {
650 crate::peripherals::SYSTEM::regs()
651 .perip_rst_en1()
652 .modify(|_, w| w.crypto_rsa_rst().bit(reset));
653 }
654 Peripheral::SdioHost => {
655 crate::peripherals::SYSTEM::regs()
656 .perip_rst_en1()
657 .modify(|_, w| w.sdio_host_rst().bit(reset));
658 }
659 Peripheral::Sha => {
660 crate::peripherals::SYSTEM::regs()
661 .perip_rst_en1()
662 .modify(|_, w| w.crypto_sha_rst().bit(reset));
663 }
664 Peripheral::Spi2 => {
665 crate::peripherals::SYSTEM::regs()
666 .perip_rst_en0()
667 .modify(|_, w| w.spi2_rst().bit(reset));
668 }
669 Peripheral::Spi3 => {
670 crate::peripherals::SYSTEM::regs()
671 .perip_rst_en0()
672 .modify(|_, w| w.spi3_rst().bit(reset));
673 }
674 Peripheral::Systimer => {
675 crate::peripherals::SYSTEM::regs()
676 .perip_rst_en0()
677 .modify(|_, w| w.systimer_rst().bit(reset));
678 }
679 Peripheral::Timg0 => {
680 crate::peripherals::SYSTEM::regs()
681 .perip_rst_en0()
682 .modify(|_, w| w.timergroup_rst().bit(reset));
683 }
684 Peripheral::Timg1 => {
685 crate::peripherals::SYSTEM::regs()
686 .perip_rst_en0()
687 .modify(|_, w| w.timergroup1_rst().bit(reset));
688 }
689 Peripheral::Twai0 => {
690 crate::peripherals::SYSTEM::regs()
691 .perip_rst_en0()
692 .modify(|_, w| w.twai_rst().bit(reset));
693 }
694 Peripheral::Uart0 => {
695 crate::peripherals::SYSTEM::regs()
696 .perip_rst_en0()
697 .modify(|_, w| w.uart_rst().bit(reset));
698 }
699 Peripheral::Uart1 => {
700 crate::peripherals::SYSTEM::regs()
701 .perip_rst_en0()
702 .modify(|_, w| w.uart1_rst().bit(reset));
703 }
704 Peripheral::Uart2 => {
705 crate::peripherals::SYSTEM::regs()
706 .perip_rst_en1()
707 .modify(|_, w| w.uart2_rst().bit(reset));
708 }
709 Peripheral::UartMem => {
710 crate::peripherals::SYSTEM::regs()
711 .perip_rst_en0()
712 .modify(|_, w| w.uart_mem_rst().bit(reset));
713 }
714 Peripheral::Uhci0 => {
715 crate::peripherals::SYSTEM::regs()
716 .perip_rst_en0()
717 .modify(|_, w| w.uhci0_rst().bit(reset));
718 }
719 Peripheral::Usb => {
720 crate::peripherals::SYSTEM::regs()
721 .perip_rst_en0()
722 .modify(|_, w| w.usb_rst().bit(reset));
723 }
724 Peripheral::UsbDevice => {
725 crate::peripherals::SYSTEM::regs()
726 .perip_rst_en1()
727 .modify(|_, w| w.usb_device_rst().bit(reset));
728 }
729 }
730 }
731 };
732}
733#[macro_export]
741#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
742macro_rules! memory_range {
743 ("DRAM") => {
744 1070104576..1070596096
745 };
746 (size as str, "DRAM") => {
747 "491520"
748 };
749 ("DRAM2_UNINIT") => {
750 1070446336..1070520080
751 };
752 (size as str, "DRAM2_UNINIT") => {
753 "73744"
754 };
755}
756#[macro_export]
757#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
758macro_rules! for_each_aes_key_length {
759 ($($pattern:tt => $code:tt;)*) => {
760 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
761 _for_each_inner!((128)); _for_each_inner!((256)); _for_each_inner!((128, 0, 4));
762 _for_each_inner!((256, 2, 6)); _for_each_inner!((bits(128), (256)));
763 _for_each_inner!((modes(128, 0, 4), (256, 2, 6)));
764 };
765}
766#[macro_export]
788#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
789macro_rules! for_each_rmt_channel {
790 ($($pattern:tt => $code:tt;)*) => {
791 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
792 _for_each_inner!((0)); _for_each_inner!((1)); _for_each_inner!((2));
793 _for_each_inner!((3)); _for_each_inner!((4)); _for_each_inner!((5));
794 _for_each_inner!((6)); _for_each_inner!((7)); _for_each_inner!((0, 0));
795 _for_each_inner!((1, 1)); _for_each_inner!((2, 2)); _for_each_inner!((3, 3));
796 _for_each_inner!((4, 0)); _for_each_inner!((5, 1)); _for_each_inner!((6, 2));
797 _for_each_inner!((7, 3)); _for_each_inner!((all(0), (1), (2), (3), (4), (5), (6),
798 (7))); _for_each_inner!((tx(0, 0), (1, 1), (2, 2), (3, 3)));
799 _for_each_inner!((rx(4, 0), (5, 1), (6, 2), (7, 3)));
800 };
801}
802#[macro_export]
803#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
804macro_rules! for_each_rmt_clock_source {
805 ($($pattern:tt => $code:tt;)*) => {
806 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
807 _for_each_inner!((Apb, 1)); _for_each_inner!((RcFast, 2));
808 _for_each_inner!((Xtal, 3)); _for_each_inner!((Apb)); _for_each_inner!((all(Apb,
809 1), (RcFast, 2), (Xtal, 3))); _for_each_inner!((default(Apb)));
810 };
811}
812#[macro_export]
813#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
814macro_rules! for_each_rsa_exponentiation {
815 ($($pattern:tt => $code:tt;)*) => {
816 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
817 _for_each_inner!((32)); _for_each_inner!((64)); _for_each_inner!((96));
818 _for_each_inner!((128)); _for_each_inner!((160)); _for_each_inner!((192));
819 _for_each_inner!((224)); _for_each_inner!((256)); _for_each_inner!((288));
820 _for_each_inner!((320)); _for_each_inner!((352)); _for_each_inner!((384));
821 _for_each_inner!((416)); _for_each_inner!((448)); _for_each_inner!((480));
822 _for_each_inner!((512)); _for_each_inner!((544)); _for_each_inner!((576));
823 _for_each_inner!((608)); _for_each_inner!((640)); _for_each_inner!((672));
824 _for_each_inner!((704)); _for_each_inner!((736)); _for_each_inner!((768));
825 _for_each_inner!((800)); _for_each_inner!((832)); _for_each_inner!((864));
826 _for_each_inner!((896)); _for_each_inner!((928)); _for_each_inner!((960));
827 _for_each_inner!((992)); _for_each_inner!((1024)); _for_each_inner!((1056));
828 _for_each_inner!((1088)); _for_each_inner!((1120)); _for_each_inner!((1152));
829 _for_each_inner!((1184)); _for_each_inner!((1216)); _for_each_inner!((1248));
830 _for_each_inner!((1280)); _for_each_inner!((1312)); _for_each_inner!((1344));
831 _for_each_inner!((1376)); _for_each_inner!((1408)); _for_each_inner!((1440));
832 _for_each_inner!((1472)); _for_each_inner!((1504)); _for_each_inner!((1536));
833 _for_each_inner!((1568)); _for_each_inner!((1600)); _for_each_inner!((1632));
834 _for_each_inner!((1664)); _for_each_inner!((1696)); _for_each_inner!((1728));
835 _for_each_inner!((1760)); _for_each_inner!((1792)); _for_each_inner!((1824));
836 _for_each_inner!((1856)); _for_each_inner!((1888)); _for_each_inner!((1920));
837 _for_each_inner!((1952)); _for_each_inner!((1984)); _for_each_inner!((2016));
838 _for_each_inner!((2048)); _for_each_inner!((2080)); _for_each_inner!((2112));
839 _for_each_inner!((2144)); _for_each_inner!((2176)); _for_each_inner!((2208));
840 _for_each_inner!((2240)); _for_each_inner!((2272)); _for_each_inner!((2304));
841 _for_each_inner!((2336)); _for_each_inner!((2368)); _for_each_inner!((2400));
842 _for_each_inner!((2432)); _for_each_inner!((2464)); _for_each_inner!((2496));
843 _for_each_inner!((2528)); _for_each_inner!((2560)); _for_each_inner!((2592));
844 _for_each_inner!((2624)); _for_each_inner!((2656)); _for_each_inner!((2688));
845 _for_each_inner!((2720)); _for_each_inner!((2752)); _for_each_inner!((2784));
846 _for_each_inner!((2816)); _for_each_inner!((2848)); _for_each_inner!((2880));
847 _for_each_inner!((2912)); _for_each_inner!((2944)); _for_each_inner!((2976));
848 _for_each_inner!((3008)); _for_each_inner!((3040)); _for_each_inner!((3072));
849 _for_each_inner!((3104)); _for_each_inner!((3136)); _for_each_inner!((3168));
850 _for_each_inner!((3200)); _for_each_inner!((3232)); _for_each_inner!((3264));
851 _for_each_inner!((3296)); _for_each_inner!((3328)); _for_each_inner!((3360));
852 _for_each_inner!((3392)); _for_each_inner!((3424)); _for_each_inner!((3456));
853 _for_each_inner!((3488)); _for_each_inner!((3520)); _for_each_inner!((3552));
854 _for_each_inner!((3584)); _for_each_inner!((3616)); _for_each_inner!((3648));
855 _for_each_inner!((3680)); _for_each_inner!((3712)); _for_each_inner!((3744));
856 _for_each_inner!((3776)); _for_each_inner!((3808)); _for_each_inner!((3840));
857 _for_each_inner!((3872)); _for_each_inner!((3904)); _for_each_inner!((3936));
858 _for_each_inner!((3968)); _for_each_inner!((4000)); _for_each_inner!((4032));
859 _for_each_inner!((4064)); _for_each_inner!((4096)); _for_each_inner!((all(32),
860 (64), (96), (128), (160), (192), (224), (256), (288), (320), (352), (384), (416),
861 (448), (480), (512), (544), (576), (608), (640), (672), (704), (736), (768),
862 (800), (832), (864), (896), (928), (960), (992), (1024), (1056), (1088), (1120),
863 (1152), (1184), (1216), (1248), (1280), (1312), (1344), (1376), (1408), (1440),
864 (1472), (1504), (1536), (1568), (1600), (1632), (1664), (1696), (1728), (1760),
865 (1792), (1824), (1856), (1888), (1920), (1952), (1984), (2016), (2048), (2080),
866 (2112), (2144), (2176), (2208), (2240), (2272), (2304), (2336), (2368), (2400),
867 (2432), (2464), (2496), (2528), (2560), (2592), (2624), (2656), (2688), (2720),
868 (2752), (2784), (2816), (2848), (2880), (2912), (2944), (2976), (3008), (3040),
869 (3072), (3104), (3136), (3168), (3200), (3232), (3264), (3296), (3328), (3360),
870 (3392), (3424), (3456), (3488), (3520), (3552), (3584), (3616), (3648), (3680),
871 (3712), (3744), (3776), (3808), (3840), (3872), (3904), (3936), (3968), (4000),
872 (4032), (4064), (4096)));
873 };
874}
875#[macro_export]
876#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
877macro_rules! for_each_rsa_multiplication {
878 ($($pattern:tt => $code:tt;)*) => {
879 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
880 _for_each_inner!((32)); _for_each_inner!((64)); _for_each_inner!((96));
881 _for_each_inner!((128)); _for_each_inner!((160)); _for_each_inner!((192));
882 _for_each_inner!((224)); _for_each_inner!((256)); _for_each_inner!((288));
883 _for_each_inner!((320)); _for_each_inner!((352)); _for_each_inner!((384));
884 _for_each_inner!((416)); _for_each_inner!((448)); _for_each_inner!((480));
885 _for_each_inner!((512)); _for_each_inner!((544)); _for_each_inner!((576));
886 _for_each_inner!((608)); _for_each_inner!((640)); _for_each_inner!((672));
887 _for_each_inner!((704)); _for_each_inner!((736)); _for_each_inner!((768));
888 _for_each_inner!((800)); _for_each_inner!((832)); _for_each_inner!((864));
889 _for_each_inner!((896)); _for_each_inner!((928)); _for_each_inner!((960));
890 _for_each_inner!((992)); _for_each_inner!((1024)); _for_each_inner!((1056));
891 _for_each_inner!((1088)); _for_each_inner!((1120)); _for_each_inner!((1152));
892 _for_each_inner!((1184)); _for_each_inner!((1216)); _for_each_inner!((1248));
893 _for_each_inner!((1280)); _for_each_inner!((1312)); _for_each_inner!((1344));
894 _for_each_inner!((1376)); _for_each_inner!((1408)); _for_each_inner!((1440));
895 _for_each_inner!((1472)); _for_each_inner!((1504)); _for_each_inner!((1536));
896 _for_each_inner!((1568)); _for_each_inner!((1600)); _for_each_inner!((1632));
897 _for_each_inner!((1664)); _for_each_inner!((1696)); _for_each_inner!((1728));
898 _for_each_inner!((1760)); _for_each_inner!((1792)); _for_each_inner!((1824));
899 _for_each_inner!((1856)); _for_each_inner!((1888)); _for_each_inner!((1920));
900 _for_each_inner!((1952)); _for_each_inner!((1984)); _for_each_inner!((2016));
901 _for_each_inner!((2048)); _for_each_inner!((all(32), (64), (96), (128), (160),
902 (192), (224), (256), (288), (320), (352), (384), (416), (448), (480), (512),
903 (544), (576), (608), (640), (672), (704), (736), (768), (800), (832), (864),
904 (896), (928), (960), (992), (1024), (1056), (1088), (1120), (1152), (1184),
905 (1216), (1248), (1280), (1312), (1344), (1376), (1408), (1440), (1472), (1504),
906 (1536), (1568), (1600), (1632), (1664), (1696), (1728), (1760), (1792), (1824),
907 (1856), (1888), (1920), (1952), (1984), (2016), (2048)));
908 };
909}
910#[macro_export]
911#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
912macro_rules! for_each_sha_algorithm {
913 ($($pattern:tt => $code:tt;)*) => {
914 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
915 _for_each_inner!((Sha1, "SHA-1"(sizes : 64, 20, 8) (insecure_against :
916 "collision", "length extension"), 0)); _for_each_inner!((Sha224, "SHA-224"(sizes
917 : 64, 28, 8) (insecure_against : "length extension"), 1));
918 _for_each_inner!((Sha256, "SHA-256"(sizes : 64, 32, 8) (insecure_against :
919 "length extension"), 2)); _for_each_inner!((Sha384, "SHA-384"(sizes : 128, 48,
920 16) (insecure_against :), 3)); _for_each_inner!((Sha512, "SHA-512"(sizes : 128,
921 64, 16) (insecure_against : "length extension"), 4));
922 _for_each_inner!((Sha512_224, "SHA-512/224"(sizes : 128, 28, 16)
923 (insecure_against :), 5)); _for_each_inner!((Sha512_256, "SHA-512/256"(sizes :
924 128, 32, 16) (insecure_against :), 6)); _for_each_inner!((algos(Sha1,
925 "SHA-1"(sizes : 64, 20, 8) (insecure_against : "collision", "length extension"),
926 0), (Sha224, "SHA-224"(sizes : 64, 28, 8) (insecure_against :
927 "length extension"), 1), (Sha256, "SHA-256"(sizes : 64, 32, 8) (insecure_against
928 : "length extension"), 2), (Sha384, "SHA-384"(sizes : 128, 48, 16)
929 (insecure_against :), 3), (Sha512, "SHA-512"(sizes : 128, 64, 16)
930 (insecure_against : "length extension"), 4), (Sha512_224, "SHA-512/224"(sizes :
931 128, 28, 16) (insecure_against :), 5), (Sha512_256, "SHA-512/256"(sizes : 128,
932 32, 16) (insecure_against :), 6)));
933 };
934}
935#[macro_export]
952#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
953macro_rules! for_each_i2c_master {
954 ($($pattern:tt => $code:tt;)*) => {
955 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
956 _for_each_inner!((I2C0, I2cExt0, I2CEXT0_SCL, I2CEXT0_SDA));
957 _for_each_inner!((I2C1, I2cExt1, I2CEXT1_SCL, I2CEXT1_SDA));
958 _for_each_inner!((all(I2C0, I2cExt0, I2CEXT0_SCL, I2CEXT0_SDA), (I2C1, I2cExt1,
959 I2CEXT1_SCL, I2CEXT1_SDA)));
960 };
961}
962#[macro_export]
979#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
980macro_rules! for_each_uart {
981 ($($pattern:tt => $code:tt;)*) => {
982 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
983 _for_each_inner!((UART0, Uart0, U0RXD, U0TXD, U0CTS, U0RTS));
984 _for_each_inner!((UART1, Uart1, U1RXD, U1TXD, U1CTS, U1RTS));
985 _for_each_inner!((UART2, Uart2, U2RXD, U2TXD, U2CTS, U2RTS));
986 _for_each_inner!((all(UART0, Uart0, U0RXD, U0TXD, U0CTS, U0RTS), (UART1, Uart1,
987 U1RXD, U1TXD, U1CTS, U1RTS), (UART2, Uart2, U2RXD, U2TXD, U2CTS, U2RTS)));
988 };
989}
990#[macro_export]
1012#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1013macro_rules! for_each_spi_master {
1014 ($($pattern:tt => $code:tt;)*) => {
1015 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
1016 _for_each_inner!((SPI2, Spi2, FSPICLK[FSPICS0, FSPICS1, FSPICS2, FSPICS3,
1017 FSPICS4, FSPICS5] [FSPID, FSPIQ, FSPIWP, FSPIHD, FSPIIO4, FSPIIO5, FSPIIO6,
1018 FSPIIO7], true)); _for_each_inner!((SPI3, Spi3, SPI3_CLK[SPI3_CS0, SPI3_CS1,
1019 SPI3_CS2] [SPI3_D, SPI3_Q, SPI3_WP, SPI3_HD], true)); _for_each_inner!((all(SPI2,
1020 Spi2, FSPICLK[FSPICS0, FSPICS1, FSPICS2, FSPICS3, FSPICS4, FSPICS5] [FSPID,
1021 FSPIQ, FSPIWP, FSPIHD, FSPIIO4, FSPIIO5, FSPIIO6, FSPIIO7], true), (SPI3, Spi3,
1022 SPI3_CLK[SPI3_CS0, SPI3_CS1, SPI3_CS2] [SPI3_D, SPI3_Q, SPI3_WP, SPI3_HD],
1023 true)));
1024 };
1025}
1026#[macro_export]
1043#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1044macro_rules! for_each_spi_slave {
1045 ($($pattern:tt => $code:tt;)*) => {
1046 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
1047 _for_each_inner!((SPI2, Spi2, FSPICLK, FSPID, FSPIQ, FSPICS0));
1048 _for_each_inner!((SPI3, Spi3, SPI3_CLK, SPI3_D, SPI3_Q, SPI3_CS0));
1049 _for_each_inner!((all(SPI2, Spi2, FSPICLK, FSPID, FSPIQ, FSPICS0), (SPI3, Spi3,
1050 SPI3_CLK, SPI3_D, SPI3_Q, SPI3_CS0)));
1051 };
1052}
1053#[macro_export]
1054#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1055macro_rules! for_each_peripheral {
1056 ($($pattern:tt => $code:tt;)*) => {
1057 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
1058 _for_each_inner!((GPIO0 <= virtual())); _for_each_inner!((GPIO1 <= virtual()));
1059 _for_each_inner!((GPIO2 <= virtual())); _for_each_inner!((GPIO3 <= virtual()));
1060 _for_each_inner!((GPIO4 <= virtual())); _for_each_inner!((GPIO5 <= virtual()));
1061 _for_each_inner!((GPIO6 <= virtual())); _for_each_inner!((GPIO7 <= virtual()));
1062 _for_each_inner!((GPIO8 <= virtual())); _for_each_inner!((GPIO9 <= virtual()));
1063 _for_each_inner!((GPIO10 <= virtual())); _for_each_inner!((GPIO11 <= virtual()));
1064 _for_each_inner!((GPIO12 <= virtual())); _for_each_inner!((GPIO13 <= virtual()));
1065 _for_each_inner!((GPIO14 <= virtual())); _for_each_inner!((GPIO15 <= virtual()));
1066 _for_each_inner!((GPIO16 <= virtual())); _for_each_inner!((GPIO17 <= virtual()));
1067 _for_each_inner!((GPIO18 <= virtual())); _for_each_inner!((GPIO19 <= virtual()));
1068 _for_each_inner!((GPIO20 <= virtual())); _for_each_inner!((GPIO21 <= virtual()));
1069 _for_each_inner!((GPIO33 <= virtual())); _for_each_inner!((GPIO34 <= virtual()));
1070 _for_each_inner!((GPIO35 <= virtual())); _for_each_inner!((GPIO36 <= virtual()));
1071 _for_each_inner!((GPIO37 <= virtual())); _for_each_inner!((GPIO38 <= virtual()));
1072 _for_each_inner!((GPIO39 <= virtual())); _for_each_inner!((GPIO40 <= virtual()));
1073 _for_each_inner!((GPIO41 <= virtual())); _for_each_inner!((GPIO42 <= virtual()));
1074 _for_each_inner!((GPIO43 <= virtual())); _for_each_inner!((GPIO44 <= virtual()));
1075 _for_each_inner!((GPIO45 <= virtual())); _for_each_inner!((GPIO46 <= virtual()));
1076 _for_each_inner!((GPIO47 <= virtual())); _for_each_inner!((GPIO48 <= virtual()));
1077 _for_each_inner!((AES <= AES(AES : { bind_peri_interrupt, enable_peri_interrupt,
1078 disable_peri_interrupt }) (unstable))); _for_each_inner!((APB_CTRL <= APB_CTRL()
1079 (unstable))); _for_each_inner!((APB_SARADC <= APB_SARADC() (unstable)));
1080 _for_each_inner!((ASSIST_DEBUG <= ASSIST_DEBUG() (unstable)));
1081 _for_each_inner!((DMA <= DMA() (unstable))); _for_each_inner!((DS <= DS()
1082 (unstable))); _for_each_inner!((EFUSE <= EFUSE() (unstable)));
1083 _for_each_inner!((EXTMEM <= EXTMEM() (unstable))); _for_each_inner!((GPIO <=
1084 GPIO() (unstable))); _for_each_inner!((GPIO_SD <= GPIO_SD() (unstable)));
1085 _for_each_inner!((HMAC <= HMAC() (unstable))); _for_each_inner!((I2C0 <=
1086 I2C0(I2C_EXT0 : { bind_peri_interrupt, enable_peri_interrupt,
1087 disable_peri_interrupt }))); _for_each_inner!((I2C1 <= I2C1(I2C_EXT1 : {
1088 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })));
1089 _for_each_inner!((I2S0 <= I2S0(I2S0 : { bind_peri_interrupt,
1090 enable_peri_interrupt, disable_peri_interrupt }) (unstable)));
1091 _for_each_inner!((I2S1 <= I2S1(I2S1 : { bind_peri_interrupt,
1092 enable_peri_interrupt, disable_peri_interrupt }) (unstable)));
1093 _for_each_inner!((INTERRUPT_CORE0 <= INTERRUPT_CORE0() (unstable)));
1094 _for_each_inner!((INTERRUPT_CORE1 <= INTERRUPT_CORE1() (unstable)));
1095 _for_each_inner!((IO_MUX <= IO_MUX() (unstable))); _for_each_inner!((LCD_CAM <=
1096 LCD_CAM() (unstable))); _for_each_inner!((LEDC <= LEDC() (unstable)));
1097 _for_each_inner!((LPWR <= RTC_CNTL() (unstable))); _for_each_inner!((MCPWM0 <=
1098 MCPWM0() (unstable))); _for_each_inner!((MCPWM1 <= MCPWM1() (unstable)));
1099 _for_each_inner!((PCNT <= PCNT() (unstable))); _for_each_inner!((PERI_BACKUP <=
1100 PERI_BACKUP() (unstable))); _for_each_inner!((RMT <= RMT() (unstable)));
1101 _for_each_inner!((RNG <= RNG() (unstable))); _for_each_inner!((RSA <= RSA(RSA : {
1102 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
1103 (unstable))); _for_each_inner!((RTC_CNTL <= RTC_CNTL() (unstable)));
1104 _for_each_inner!((RTC_I2C <= RTC_I2C() (unstable))); _for_each_inner!((RTC_IO <=
1105 RTC_IO() (unstable))); _for_each_inner!((SDHOST <= SDHOST() (unstable)));
1106 _for_each_inner!((SENS <= SENS() (unstable))); _for_each_inner!((SENSITIVE <=
1107 SENSITIVE() (unstable))); _for_each_inner!((SHA <= SHA(SHA : {
1108 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
1109 (unstable))); _for_each_inner!((SPI0 <= SPI0() (unstable)));
1110 _for_each_inner!((SPI1 <= SPI1() (unstable))); _for_each_inner!((SPI2 <=
1111 SPI2(SPI2 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt
1112 }))); _for_each_inner!((SPI3 <= SPI3(SPI3 : { bind_peri_interrupt,
1113 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((SYSTEM <=
1114 SYSTEM() (unstable))); _for_each_inner!((SYSTIMER <= SYSTIMER() (unstable)));
1115 _for_each_inner!((TIMG0 <= TIMG0() (unstable))); _for_each_inner!((TIMG1 <=
1116 TIMG1() (unstable))); _for_each_inner!((TWAI0 <= TWAI0() (unstable)));
1117 _for_each_inner!((UART0 <= UART0(UART0 : { bind_peri_interrupt,
1118 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((UART1 <=
1119 UART1(UART1 : { bind_peri_interrupt, enable_peri_interrupt,
1120 disable_peri_interrupt }))); _for_each_inner!((UART2 <= UART2(UART2 : {
1121 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })));
1122 _for_each_inner!((UHCI0 <= UHCI0() (unstable))); _for_each_inner!((USB0 <= USB0()
1123 (unstable))); _for_each_inner!((USB_DEVICE <= USB_DEVICE(USB_DEVICE : {
1124 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
1125 (unstable))); _for_each_inner!((USB_WRAP <= USB_WRAP() (unstable)));
1126 _for_each_inner!((WCL <= WCL() (unstable))); _for_each_inner!((XTS_AES <=
1127 XTS_AES() (unstable))); _for_each_inner!((DMA_CH0 <= virtual() (unstable)));
1128 _for_each_inner!((DMA_CH1 <= virtual() (unstable))); _for_each_inner!((DMA_CH2 <=
1129 virtual() (unstable))); _for_each_inner!((DMA_CH3 <= virtual() (unstable)));
1130 _for_each_inner!((DMA_CH4 <= virtual() (unstable))); _for_each_inner!((ADC1 <=
1131 virtual() (unstable))); _for_each_inner!((ADC2 <= virtual() (unstable)));
1132 _for_each_inner!((BT <= virtual() (unstable))); _for_each_inner!((CPU_CTRL <=
1133 virtual() (unstable))); _for_each_inner!((FLASH <= virtual() (unstable)));
1134 _for_each_inner!((PSRAM <= virtual() (unstable))); _for_each_inner!((SW_INTERRUPT
1135 <= virtual() (unstable))); _for_each_inner!((ULP_RISCV_CORE <= virtual()
1136 (unstable))); _for_each_inner!((WIFI <= virtual() (unstable)));
1137 _for_each_inner!((all(GPIO0 <= virtual()), (GPIO1 <= virtual()), (GPIO2 <=
1138 virtual()), (GPIO3 <= virtual()), (GPIO4 <= virtual()), (GPIO5 <= virtual()),
1139 (GPIO6 <= virtual()), (GPIO7 <= virtual()), (GPIO8 <= virtual()), (GPIO9 <=
1140 virtual()), (GPIO10 <= virtual()), (GPIO11 <= virtual()), (GPIO12 <= virtual()),
1141 (GPIO13 <= virtual()), (GPIO14 <= virtual()), (GPIO15 <= virtual()), (GPIO16 <=
1142 virtual()), (GPIO17 <= virtual()), (GPIO18 <= virtual()), (GPIO19 <= virtual()),
1143 (GPIO20 <= virtual()), (GPIO21 <= virtual()), (GPIO33 <= virtual()), (GPIO34 <=
1144 virtual()), (GPIO35 <= virtual()), (GPIO36 <= virtual()), (GPIO37 <= virtual()),
1145 (GPIO38 <= virtual()), (GPIO39 <= virtual()), (GPIO40 <= virtual()), (GPIO41 <=
1146 virtual()), (GPIO42 <= virtual()), (GPIO43 <= virtual()), (GPIO44 <= virtual()),
1147 (GPIO45 <= virtual()), (GPIO46 <= virtual()), (GPIO47 <= virtual()), (GPIO48 <=
1148 virtual()), (AES <= AES(AES : { bind_peri_interrupt, enable_peri_interrupt,
1149 disable_peri_interrupt }) (unstable)), (APB_CTRL <= APB_CTRL() (unstable)),
1150 (APB_SARADC <= APB_SARADC() (unstable)), (ASSIST_DEBUG <= ASSIST_DEBUG()
1151 (unstable)), (DMA <= DMA() (unstable)), (DS <= DS() (unstable)), (EFUSE <=
1152 EFUSE() (unstable)), (EXTMEM <= EXTMEM() (unstable)), (GPIO <= GPIO()
1153 (unstable)), (GPIO_SD <= GPIO_SD() (unstable)), (HMAC <= HMAC() (unstable)),
1154 (I2C0 <= I2C0(I2C_EXT0 : { bind_peri_interrupt, enable_peri_interrupt,
1155 disable_peri_interrupt })), (I2C1 <= I2C1(I2C_EXT1 : { bind_peri_interrupt,
1156 enable_peri_interrupt, disable_peri_interrupt })), (I2S0 <= I2S0(I2S0 : {
1157 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
1158 (unstable)), (I2S1 <= I2S1(I2S1 : { bind_peri_interrupt, enable_peri_interrupt,
1159 disable_peri_interrupt }) (unstable)), (INTERRUPT_CORE0 <= INTERRUPT_CORE0()
1160 (unstable)), (INTERRUPT_CORE1 <= INTERRUPT_CORE1() (unstable)), (IO_MUX <=
1161 IO_MUX() (unstable)), (LCD_CAM <= LCD_CAM() (unstable)), (LEDC <= LEDC()
1162 (unstable)), (LPWR <= RTC_CNTL() (unstable)), (MCPWM0 <= MCPWM0() (unstable)),
1163 (MCPWM1 <= MCPWM1() (unstable)), (PCNT <= PCNT() (unstable)), (PERI_BACKUP <=
1164 PERI_BACKUP() (unstable)), (RMT <= RMT() (unstable)), (RNG <= RNG() (unstable)),
1165 (RSA <= RSA(RSA : { bind_peri_interrupt, enable_peri_interrupt,
1166 disable_peri_interrupt }) (unstable)), (RTC_CNTL <= RTC_CNTL() (unstable)),
1167 (RTC_I2C <= RTC_I2C() (unstable)), (RTC_IO <= RTC_IO() (unstable)), (SDHOST <=
1168 SDHOST() (unstable)), (SENS <= SENS() (unstable)), (SENSITIVE <= SENSITIVE()
1169 (unstable)), (SHA <= SHA(SHA : { bind_peri_interrupt, enable_peri_interrupt,
1170 disable_peri_interrupt }) (unstable)), (SPI0 <= SPI0() (unstable)), (SPI1 <=
1171 SPI1() (unstable)), (SPI2 <= SPI2(SPI2 : { bind_peri_interrupt,
1172 enable_peri_interrupt, disable_peri_interrupt })), (SPI3 <= SPI3(SPI3 : {
1173 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (SYSTEM
1174 <= SYSTEM() (unstable)), (SYSTIMER <= SYSTIMER() (unstable)), (TIMG0 <= TIMG0()
1175 (unstable)), (TIMG1 <= TIMG1() (unstable)), (TWAI0 <= TWAI0() (unstable)), (UART0
1176 <= UART0(UART0 : { bind_peri_interrupt, enable_peri_interrupt,
1177 disable_peri_interrupt })), (UART1 <= UART1(UART1 : { bind_peri_interrupt,
1178 enable_peri_interrupt, disable_peri_interrupt })), (UART2 <= UART2(UART2 : {
1179 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (UHCI0 <=
1180 UHCI0() (unstable)), (USB0 <= USB0() (unstable)), (USB_DEVICE <=
1181 USB_DEVICE(USB_DEVICE : { bind_peri_interrupt, enable_peri_interrupt,
1182 disable_peri_interrupt }) (unstable)), (USB_WRAP <= USB_WRAP() (unstable)), (WCL
1183 <= WCL() (unstable)), (XTS_AES <= XTS_AES() (unstable)), (DMA_CH0 <= virtual()
1184 (unstable)), (DMA_CH1 <= virtual() (unstable)), (DMA_CH2 <= virtual()
1185 (unstable)), (DMA_CH3 <= virtual() (unstable)), (DMA_CH4 <= virtual()
1186 (unstable)), (ADC1 <= virtual() (unstable)), (ADC2 <= virtual() (unstable)), (BT
1187 <= virtual() (unstable)), (CPU_CTRL <= virtual() (unstable)), (FLASH <= virtual()
1188 (unstable)), (PSRAM <= virtual() (unstable)), (SW_INTERRUPT <= virtual()
1189 (unstable)), (ULP_RISCV_CORE <= virtual() (unstable)), (WIFI <= virtual()
1190 (unstable))));
1191 };
1192}
1193#[macro_export]
1220#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1221macro_rules! for_each_gpio {
1222 ($($pattern:tt => $code:tt;)*) => {
1223 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
1224 _for_each_inner!((0, GPIO0() () ([Input] [Output]))); _for_each_inner!((1,
1225 GPIO1() () ([Input] [Output]))); _for_each_inner!((2, GPIO2() () ([Input]
1226 [Output]))); _for_each_inner!((3, GPIO3() () ([Input] [Output])));
1227 _for_each_inner!((4, GPIO4() () ([Input] [Output]))); _for_each_inner!((5,
1228 GPIO5() () ([Input] [Output]))); _for_each_inner!((6, GPIO6() () ([Input]
1229 [Output]))); _for_each_inner!((7, GPIO7() () ([Input] [Output])));
1230 _for_each_inner!((8, GPIO8() (_3 => SUBSPICS1) ([Input] [Output])));
1231 _for_each_inner!((9, GPIO9(_3 => SUBSPIHD _4 => FSPIHD) (_3 => SUBSPIHD _4 =>
1232 FSPIHD) ([Input] [Output]))); _for_each_inner!((10, GPIO10(_2 => FSPIIO4 _4 =>
1233 FSPICS0) (_2 => FSPIIO4 _3 => SUBSPICS0 _4 => FSPICS0) ([Input] [Output])));
1234 _for_each_inner!((11, GPIO11(_2 => FSPIIO5 _3 => SUBSPID _4 => FSPID) (_2 =>
1235 FSPIIO5 _3 => SUBSPID _4 => FSPID) ([Input] [Output]))); _for_each_inner!((12,
1236 GPIO12(_2 => FSPIIO6 _4 => FSPICLK) (_2 => FSPIIO6 _3 => SUBSPICLK _4 => FSPICLK)
1237 ([Input] [Output]))); _for_each_inner!((13, GPIO13(_2 => FSPIIO7 _3 => SUBSPIQ _4
1238 => FSPIQ) (_2 => FSPIIO7 _3 => SUBSPIQ _4 => FSPIQ) ([Input] [Output])));
1239 _for_each_inner!((14, GPIO14(_3 => SUBSPIWP _4 => FSPIWP) (_2 => FSPIDQS _3 =>
1240 SUBSPIWP _4 => FSPIWP) ([Input] [Output]))); _for_each_inner!((15, GPIO15() (_2
1241 => U0RTS) ([Input] [Output]))); _for_each_inner!((16, GPIO16(_2 => U0CTS) ()
1242 ([Input] [Output]))); _for_each_inner!((17, GPIO17() (_2 => U1TXD) ([Input]
1243 [Output]))); _for_each_inner!((18, GPIO18(_2 => U1RXD) (_3 => CLK_OUT3) ([Input]
1244 [Output]))); _for_each_inner!((19, GPIO19() (_2 => U1RTS _3 => CLK_OUT2) ([Input]
1245 [Output]))); _for_each_inner!((20, GPIO20(_2 => U1CTS) (_3 => CLK_OUT1) ([Input]
1246 [Output]))); _for_each_inner!((21, GPIO21() () ([Input] [Output])));
1247 _for_each_inner!((33, GPIO33(_2 => FSPIHD _3 => SUBSPIHD _4 => SPIIO4) (_2 =>
1248 FSPIHD _3 => SUBSPIHD _4 => SPIIO4) ([Input] [Output]))); _for_each_inner!((34,
1249 GPIO34(_2 => FSPICS0 _4 => SPIIO5) (_2 => FSPICS0 _3 => SUBSPICS0 _4 => SPIIO5)
1250 ([Input] [Output]))); _for_each_inner!((35, GPIO35(_2 => FSPID _3 => SUBSPID _4
1251 => SPIIO6) (_2 => FSPID _3 => SUBSPID _4 => SPIIO6) ([Input] [Output])));
1252 _for_each_inner!((36, GPIO36(_2 => FSPICLK _4 => SPIIO7) (_2 => FSPICLK _3 =>
1253 SUBSPICLK _4 => SPIIO7) ([Input] [Output]))); _for_each_inner!((37, GPIO37(_2 =>
1254 FSPIQ _3 => SUBSPIQ _4 => SPIDQS) (_2 => FSPIQ _3 => SUBSPIQ _4 => SPIDQS)
1255 ([Input] [Output]))); _for_each_inner!((38, GPIO38(_2 => FSPIWP _3 => SUBSPIWP)
1256 (_2 => FSPIWP _3 => SUBSPIWP) ([Input] [Output]))); _for_each_inner!((39,
1257 GPIO39() (_2 => CLK_OUT3 _3 => SUBSPICS1) ([Input] [Output])));
1258 _for_each_inner!((40, GPIO40() (_2 => CLK_OUT2) ([Input] [Output])));
1259 _for_each_inner!((41, GPIO41() (_2 => CLK_OUT1) ([Input] [Output])));
1260 _for_each_inner!((42, GPIO42() () ([Input] [Output]))); _for_each_inner!((43,
1261 GPIO43() (_0 => U0TXD _2 => CLK_OUT1) ([Input] [Output]))); _for_each_inner!((44,
1262 GPIO44(_0 => U0RXD) (_2 => CLK_OUT2) ([Input] [Output]))); _for_each_inner!((45,
1263 GPIO45() () ([Input] [Output]))); _for_each_inner!((46, GPIO46() () ([Input]
1264 [Output]))); _for_each_inner!((47, GPIO47() (_0 => SPICLK_P_DIFF _2 =>
1265 SUBSPICLK_P_DIFF) ([Input] [Output]))); _for_each_inner!((48, GPIO48() (_0 =>
1266 SPICLK_N_DIFF _2 => SUBSPICLK_N_DIFF) ([Input] [Output])));
1267 _for_each_inner!((all(0, GPIO0() () ([Input] [Output])), (1, GPIO1() () ([Input]
1268 [Output])), (2, GPIO2() () ([Input] [Output])), (3, GPIO3() () ([Input]
1269 [Output])), (4, GPIO4() () ([Input] [Output])), (5, GPIO5() () ([Input]
1270 [Output])), (6, GPIO6() () ([Input] [Output])), (7, GPIO7() () ([Input]
1271 [Output])), (8, GPIO8() (_3 => SUBSPICS1) ([Input] [Output])), (9, GPIO9(_3 =>
1272 SUBSPIHD _4 => FSPIHD) (_3 => SUBSPIHD _4 => FSPIHD) ([Input] [Output])), (10,
1273 GPIO10(_2 => FSPIIO4 _4 => FSPICS0) (_2 => FSPIIO4 _3 => SUBSPICS0 _4 => FSPICS0)
1274 ([Input] [Output])), (11, GPIO11(_2 => FSPIIO5 _3 => SUBSPID _4 => FSPID) (_2 =>
1275 FSPIIO5 _3 => SUBSPID _4 => FSPID) ([Input] [Output])), (12, GPIO12(_2 => FSPIIO6
1276 _4 => FSPICLK) (_2 => FSPIIO6 _3 => SUBSPICLK _4 => FSPICLK) ([Input] [Output])),
1277 (13, GPIO13(_2 => FSPIIO7 _3 => SUBSPIQ _4 => FSPIQ) (_2 => FSPIIO7 _3 => SUBSPIQ
1278 _4 => FSPIQ) ([Input] [Output])), (14, GPIO14(_3 => SUBSPIWP _4 => FSPIWP) (_2 =>
1279 FSPIDQS _3 => SUBSPIWP _4 => FSPIWP) ([Input] [Output])), (15, GPIO15() (_2 =>
1280 U0RTS) ([Input] [Output])), (16, GPIO16(_2 => U0CTS) () ([Input] [Output])), (17,
1281 GPIO17() (_2 => U1TXD) ([Input] [Output])), (18, GPIO18(_2 => U1RXD) (_3 =>
1282 CLK_OUT3) ([Input] [Output])), (19, GPIO19() (_2 => U1RTS _3 => CLK_OUT2)
1283 ([Input] [Output])), (20, GPIO20(_2 => U1CTS) (_3 => CLK_OUT1) ([Input]
1284 [Output])), (21, GPIO21() () ([Input] [Output])), (33, GPIO33(_2 => FSPIHD _3 =>
1285 SUBSPIHD _4 => SPIIO4) (_2 => FSPIHD _3 => SUBSPIHD _4 => SPIIO4) ([Input]
1286 [Output])), (34, GPIO34(_2 => FSPICS0 _4 => SPIIO5) (_2 => FSPICS0 _3 =>
1287 SUBSPICS0 _4 => SPIIO5) ([Input] [Output])), (35, GPIO35(_2 => FSPID _3 =>
1288 SUBSPID _4 => SPIIO6) (_2 => FSPID _3 => SUBSPID _4 => SPIIO6) ([Input]
1289 [Output])), (36, GPIO36(_2 => FSPICLK _4 => SPIIO7) (_2 => FSPICLK _3 =>
1290 SUBSPICLK _4 => SPIIO7) ([Input] [Output])), (37, GPIO37(_2 => FSPIQ _3 =>
1291 SUBSPIQ _4 => SPIDQS) (_2 => FSPIQ _3 => SUBSPIQ _4 => SPIDQS) ([Input]
1292 [Output])), (38, GPIO38(_2 => FSPIWP _3 => SUBSPIWP) (_2 => FSPIWP _3 =>
1293 SUBSPIWP) ([Input] [Output])), (39, GPIO39() (_2 => CLK_OUT3 _3 => SUBSPICS1)
1294 ([Input] [Output])), (40, GPIO40() (_2 => CLK_OUT2) ([Input] [Output])), (41,
1295 GPIO41() (_2 => CLK_OUT1) ([Input] [Output])), (42, GPIO42() () ([Input]
1296 [Output])), (43, GPIO43() (_0 => U0TXD _2 => CLK_OUT1) ([Input] [Output])), (44,
1297 GPIO44(_0 => U0RXD) (_2 => CLK_OUT2) ([Input] [Output])), (45, GPIO45() ()
1298 ([Input] [Output])), (46, GPIO46() () ([Input] [Output])), (47, GPIO47() (_0 =>
1299 SPICLK_P_DIFF _2 => SUBSPICLK_P_DIFF) ([Input] [Output])), (48, GPIO48() (_0 =>
1300 SPICLK_N_DIFF _2 => SUBSPICLK_N_DIFF) ([Input] [Output]))));
1301 };
1302}
1303#[macro_export]
1330#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1331macro_rules! for_each_analog_function {
1332 ($($pattern:tt => $code:tt;)*) => {
1333 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
1334 _for_each_inner!((TOUCH1, GPIO1)); _for_each_inner!((ADC1_CH0, GPIO1));
1335 _for_each_inner!((TOUCH2, GPIO2)); _for_each_inner!((ADC1_CH1, GPIO2));
1336 _for_each_inner!((TOUCH3, GPIO3)); _for_each_inner!((ADC1_CH2, GPIO3));
1337 _for_each_inner!((TOUCH4, GPIO4)); _for_each_inner!((ADC1_CH3, GPIO4));
1338 _for_each_inner!((TOUCH5, GPIO5)); _for_each_inner!((ADC1_CH4, GPIO5));
1339 _for_each_inner!((TOUCH6, GPIO6)); _for_each_inner!((ADC1_CH5, GPIO6));
1340 _for_each_inner!((TOUCH7, GPIO7)); _for_each_inner!((ADC1_CH6, GPIO7));
1341 _for_each_inner!((TOUCH8, GPIO8)); _for_each_inner!((ADC1_CH7, GPIO8));
1342 _for_each_inner!((TOUCH9, GPIO9)); _for_each_inner!((ADC1_CH8, GPIO9));
1343 _for_each_inner!((TOUCH10, GPIO10)); _for_each_inner!((ADC1_CH9, GPIO10));
1344 _for_each_inner!((TOUCH11, GPIO11)); _for_each_inner!((ADC2_CH0, GPIO11));
1345 _for_each_inner!((TOUCH12, GPIO12)); _for_each_inner!((ADC2_CH1, GPIO12));
1346 _for_each_inner!((TOUCH13, GPIO13)); _for_each_inner!((ADC2_CH2, GPIO13));
1347 _for_each_inner!((TOUCH14, GPIO14)); _for_each_inner!((ADC2_CH3, GPIO14));
1348 _for_each_inner!((XTAL_32K_P, GPIO15)); _for_each_inner!((ADC2_CH4, GPIO15));
1349 _for_each_inner!((XTAL_32K_N, GPIO16)); _for_each_inner!((ADC2_CH5, GPIO16));
1350 _for_each_inner!((ADC2_CH6, GPIO17)); _for_each_inner!((ADC2_CH7, GPIO18));
1351 _for_each_inner!((USB_DM, GPIO19)); _for_each_inner!((ADC2_CH8, GPIO19));
1352 _for_each_inner!((USB_DP, GPIO20)); _for_each_inner!((ADC2_CH9, GPIO20));
1353 _for_each_inner!(((TOUCH1, TOUCHn, 1), GPIO1)); _for_each_inner!(((ADC1_CH0,
1354 ADCn_CHm, 1, 0), GPIO1)); _for_each_inner!(((TOUCH2, TOUCHn, 2), GPIO2));
1355 _for_each_inner!(((ADC1_CH1, ADCn_CHm, 1, 1), GPIO2)); _for_each_inner!(((TOUCH3,
1356 TOUCHn, 3), GPIO3)); _for_each_inner!(((ADC1_CH2, ADCn_CHm, 1, 2), GPIO3));
1357 _for_each_inner!(((TOUCH4, TOUCHn, 4), GPIO4)); _for_each_inner!(((ADC1_CH3,
1358 ADCn_CHm, 1, 3), GPIO4)); _for_each_inner!(((TOUCH5, TOUCHn, 5), GPIO5));
1359 _for_each_inner!(((ADC1_CH4, ADCn_CHm, 1, 4), GPIO5)); _for_each_inner!(((TOUCH6,
1360 TOUCHn, 6), GPIO6)); _for_each_inner!(((ADC1_CH5, ADCn_CHm, 1, 5), GPIO6));
1361 _for_each_inner!(((TOUCH7, TOUCHn, 7), GPIO7)); _for_each_inner!(((ADC1_CH6,
1362 ADCn_CHm, 1, 6), GPIO7)); _for_each_inner!(((TOUCH8, TOUCHn, 8), GPIO8));
1363 _for_each_inner!(((ADC1_CH7, ADCn_CHm, 1, 7), GPIO8)); _for_each_inner!(((TOUCH9,
1364 TOUCHn, 9), GPIO9)); _for_each_inner!(((ADC1_CH8, ADCn_CHm, 1, 8), GPIO9));
1365 _for_each_inner!(((TOUCH10, TOUCHn, 10), GPIO10)); _for_each_inner!(((ADC1_CH9,
1366 ADCn_CHm, 1, 9), GPIO10)); _for_each_inner!(((TOUCH11, TOUCHn, 11), GPIO11));
1367 _for_each_inner!(((ADC2_CH0, ADCn_CHm, 2, 0), GPIO11));
1368 _for_each_inner!(((TOUCH12, TOUCHn, 12), GPIO12)); _for_each_inner!(((ADC2_CH1,
1369 ADCn_CHm, 2, 1), GPIO12)); _for_each_inner!(((TOUCH13, TOUCHn, 13), GPIO13));
1370 _for_each_inner!(((ADC2_CH2, ADCn_CHm, 2, 2), GPIO13));
1371 _for_each_inner!(((TOUCH14, TOUCHn, 14), GPIO14)); _for_each_inner!(((ADC2_CH3,
1372 ADCn_CHm, 2, 3), GPIO14)); _for_each_inner!(((ADC2_CH4, ADCn_CHm, 2, 4),
1373 GPIO15)); _for_each_inner!(((ADC2_CH5, ADCn_CHm, 2, 5), GPIO16));
1374 _for_each_inner!(((ADC2_CH6, ADCn_CHm, 2, 6), GPIO17));
1375 _for_each_inner!(((ADC2_CH7, ADCn_CHm, 2, 7), GPIO18));
1376 _for_each_inner!(((ADC2_CH8, ADCn_CHm, 2, 8), GPIO19));
1377 _for_each_inner!(((ADC2_CH9, ADCn_CHm, 2, 9), GPIO20));
1378 _for_each_inner!((all(TOUCH1, GPIO1), (ADC1_CH0, GPIO1), (TOUCH2, GPIO2),
1379 (ADC1_CH1, GPIO2), (TOUCH3, GPIO3), (ADC1_CH2, GPIO3), (TOUCH4, GPIO4),
1380 (ADC1_CH3, GPIO4), (TOUCH5, GPIO5), (ADC1_CH4, GPIO5), (TOUCH6, GPIO6),
1381 (ADC1_CH5, GPIO6), (TOUCH7, GPIO7), (ADC1_CH6, GPIO7), (TOUCH8, GPIO8),
1382 (ADC1_CH7, GPIO8), (TOUCH9, GPIO9), (ADC1_CH8, GPIO9), (TOUCH10, GPIO10),
1383 (ADC1_CH9, GPIO10), (TOUCH11, GPIO11), (ADC2_CH0, GPIO11), (TOUCH12, GPIO12),
1384 (ADC2_CH1, GPIO12), (TOUCH13, GPIO13), (ADC2_CH2, GPIO13), (TOUCH14, GPIO14),
1385 (ADC2_CH3, GPIO14), (XTAL_32K_P, GPIO15), (ADC2_CH4, GPIO15), (XTAL_32K_N,
1386 GPIO16), (ADC2_CH5, GPIO16), (ADC2_CH6, GPIO17), (ADC2_CH7, GPIO18), (USB_DM,
1387 GPIO19), (ADC2_CH8, GPIO19), (USB_DP, GPIO20), (ADC2_CH9, GPIO20)));
1388 _for_each_inner!((all_expanded((TOUCH1, TOUCHn, 1), GPIO1), ((ADC1_CH0, ADCn_CHm,
1389 1, 0), GPIO1), ((TOUCH2, TOUCHn, 2), GPIO2), ((ADC1_CH1, ADCn_CHm, 1, 1), GPIO2),
1390 ((TOUCH3, TOUCHn, 3), GPIO3), ((ADC1_CH2, ADCn_CHm, 1, 2), GPIO3), ((TOUCH4,
1391 TOUCHn, 4), GPIO4), ((ADC1_CH3, ADCn_CHm, 1, 3), GPIO4), ((TOUCH5, TOUCHn, 5),
1392 GPIO5), ((ADC1_CH4, ADCn_CHm, 1, 4), GPIO5), ((TOUCH6, TOUCHn, 6), GPIO6),
1393 ((ADC1_CH5, ADCn_CHm, 1, 5), GPIO6), ((TOUCH7, TOUCHn, 7), GPIO7), ((ADC1_CH6,
1394 ADCn_CHm, 1, 6), GPIO7), ((TOUCH8, TOUCHn, 8), GPIO8), ((ADC1_CH7, ADCn_CHm, 1,
1395 7), GPIO8), ((TOUCH9, TOUCHn, 9), GPIO9), ((ADC1_CH8, ADCn_CHm, 1, 8), GPIO9),
1396 ((TOUCH10, TOUCHn, 10), GPIO10), ((ADC1_CH9, ADCn_CHm, 1, 9), GPIO10), ((TOUCH11,
1397 TOUCHn, 11), GPIO11), ((ADC2_CH0, ADCn_CHm, 2, 0), GPIO11), ((TOUCH12, TOUCHn,
1398 12), GPIO12), ((ADC2_CH1, ADCn_CHm, 2, 1), GPIO12), ((TOUCH13, TOUCHn, 13),
1399 GPIO13), ((ADC2_CH2, ADCn_CHm, 2, 2), GPIO13), ((TOUCH14, TOUCHn, 14), GPIO14),
1400 ((ADC2_CH3, ADCn_CHm, 2, 3), GPIO14), ((ADC2_CH4, ADCn_CHm, 2, 4), GPIO15),
1401 ((ADC2_CH5, ADCn_CHm, 2, 5), GPIO16), ((ADC2_CH6, ADCn_CHm, 2, 6), GPIO17),
1402 ((ADC2_CH7, ADCn_CHm, 2, 7), GPIO18), ((ADC2_CH8, ADCn_CHm, 2, 8), GPIO19),
1403 ((ADC2_CH9, ADCn_CHm, 2, 9), GPIO20)));
1404 };
1405}
1406#[macro_export]
1433#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1434macro_rules! for_each_lp_function {
1435 ($($pattern:tt => $code:tt;)*) => {
1436 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
1437 _for_each_inner!((RTC_GPIO0, GPIO0)); _for_each_inner!((SAR_I2C_SCL_0, GPIO0));
1438 _for_each_inner!((RTC_GPIO1, GPIO1)); _for_each_inner!((SAR_I2C_SDA_0, GPIO1));
1439 _for_each_inner!((RTC_GPIO2, GPIO2)); _for_each_inner!((SAR_I2C_SCL_1, GPIO2));
1440 _for_each_inner!((RTC_GPIO3, GPIO3)); _for_each_inner!((SAR_I2C_SDA_1, GPIO3));
1441 _for_each_inner!((RTC_GPIO4, GPIO4)); _for_each_inner!((RTC_GPIO5, GPIO5));
1442 _for_each_inner!((RTC_GPIO6, GPIO6)); _for_each_inner!((RTC_GPIO7, GPIO7));
1443 _for_each_inner!((RTC_GPIO8, GPIO8)); _for_each_inner!((RTC_GPIO9, GPIO9));
1444 _for_each_inner!((RTC_GPIO10, GPIO10)); _for_each_inner!((RTC_GPIO11, GPIO11));
1445 _for_each_inner!((RTC_GPIO12, GPIO12)); _for_each_inner!((RTC_GPIO13, GPIO13));
1446 _for_each_inner!((RTC_GPIO14, GPIO14)); _for_each_inner!((RTC_GPIO15, GPIO15));
1447 _for_each_inner!((RTC_GPIO16, GPIO16)); _for_each_inner!((RTC_GPIO17, GPIO17));
1448 _for_each_inner!((RTC_GPIO18, GPIO18)); _for_each_inner!((RTC_GPIO19, GPIO19));
1449 _for_each_inner!((RTC_GPIO20, GPIO20)); _for_each_inner!((RTC_GPIO21, GPIO21));
1450 _for_each_inner!(((RTC_GPIO0, RTC_GPIOn, 0), GPIO0));
1451 _for_each_inner!(((SAR_I2C_SCL_0, SAR_I2C_SCL_n, 0), GPIO0));
1452 _for_each_inner!(((RTC_GPIO1, RTC_GPIOn, 1), GPIO1));
1453 _for_each_inner!(((SAR_I2C_SDA_0, SAR_I2C_SDA_n, 0), GPIO1));
1454 _for_each_inner!(((RTC_GPIO2, RTC_GPIOn, 2), GPIO2));
1455 _for_each_inner!(((SAR_I2C_SCL_1, SAR_I2C_SCL_n, 1), GPIO2));
1456 _for_each_inner!(((RTC_GPIO3, RTC_GPIOn, 3), GPIO3));
1457 _for_each_inner!(((SAR_I2C_SDA_1, SAR_I2C_SDA_n, 1), GPIO3));
1458 _for_each_inner!(((RTC_GPIO4, RTC_GPIOn, 4), GPIO4));
1459 _for_each_inner!(((RTC_GPIO5, RTC_GPIOn, 5), GPIO5));
1460 _for_each_inner!(((RTC_GPIO6, RTC_GPIOn, 6), GPIO6));
1461 _for_each_inner!(((RTC_GPIO7, RTC_GPIOn, 7), GPIO7));
1462 _for_each_inner!(((RTC_GPIO8, RTC_GPIOn, 8), GPIO8));
1463 _for_each_inner!(((RTC_GPIO9, RTC_GPIOn, 9), GPIO9));
1464 _for_each_inner!(((RTC_GPIO10, RTC_GPIOn, 10), GPIO10));
1465 _for_each_inner!(((RTC_GPIO11, RTC_GPIOn, 11), GPIO11));
1466 _for_each_inner!(((RTC_GPIO12, RTC_GPIOn, 12), GPIO12));
1467 _for_each_inner!(((RTC_GPIO13, RTC_GPIOn, 13), GPIO13));
1468 _for_each_inner!(((RTC_GPIO14, RTC_GPIOn, 14), GPIO14));
1469 _for_each_inner!(((RTC_GPIO15, RTC_GPIOn, 15), GPIO15));
1470 _for_each_inner!(((RTC_GPIO16, RTC_GPIOn, 16), GPIO16));
1471 _for_each_inner!(((RTC_GPIO17, RTC_GPIOn, 17), GPIO17));
1472 _for_each_inner!(((RTC_GPIO18, RTC_GPIOn, 18), GPIO18));
1473 _for_each_inner!(((RTC_GPIO19, RTC_GPIOn, 19), GPIO19));
1474 _for_each_inner!(((RTC_GPIO20, RTC_GPIOn, 20), GPIO20));
1475 _for_each_inner!(((RTC_GPIO21, RTC_GPIOn, 21), GPIO21));
1476 _for_each_inner!((all(RTC_GPIO0, GPIO0), (SAR_I2C_SCL_0, GPIO0), (RTC_GPIO1,
1477 GPIO1), (SAR_I2C_SDA_0, GPIO1), (RTC_GPIO2, GPIO2), (SAR_I2C_SCL_1, GPIO2),
1478 (RTC_GPIO3, GPIO3), (SAR_I2C_SDA_1, GPIO3), (RTC_GPIO4, GPIO4), (RTC_GPIO5,
1479 GPIO5), (RTC_GPIO6, GPIO6), (RTC_GPIO7, GPIO7), (RTC_GPIO8, GPIO8), (RTC_GPIO9,
1480 GPIO9), (RTC_GPIO10, GPIO10), (RTC_GPIO11, GPIO11), (RTC_GPIO12, GPIO12),
1481 (RTC_GPIO13, GPIO13), (RTC_GPIO14, GPIO14), (RTC_GPIO15, GPIO15), (RTC_GPIO16,
1482 GPIO16), (RTC_GPIO17, GPIO17), (RTC_GPIO18, GPIO18), (RTC_GPIO19, GPIO19),
1483 (RTC_GPIO20, GPIO20), (RTC_GPIO21, GPIO21)));
1484 _for_each_inner!((all_expanded((RTC_GPIO0, RTC_GPIOn, 0), GPIO0),
1485 ((SAR_I2C_SCL_0, SAR_I2C_SCL_n, 0), GPIO0), ((RTC_GPIO1, RTC_GPIOn, 1), GPIO1),
1486 ((SAR_I2C_SDA_0, SAR_I2C_SDA_n, 0), GPIO1), ((RTC_GPIO2, RTC_GPIOn, 2), GPIO2),
1487 ((SAR_I2C_SCL_1, SAR_I2C_SCL_n, 1), GPIO2), ((RTC_GPIO3, RTC_GPIOn, 3), GPIO3),
1488 ((SAR_I2C_SDA_1, SAR_I2C_SDA_n, 1), GPIO3), ((RTC_GPIO4, RTC_GPIOn, 4), GPIO4),
1489 ((RTC_GPIO5, RTC_GPIOn, 5), GPIO5), ((RTC_GPIO6, RTC_GPIOn, 6), GPIO6),
1490 ((RTC_GPIO7, RTC_GPIOn, 7), GPIO7), ((RTC_GPIO8, RTC_GPIOn, 8), GPIO8),
1491 ((RTC_GPIO9, RTC_GPIOn, 9), GPIO9), ((RTC_GPIO10, RTC_GPIOn, 10), GPIO10),
1492 ((RTC_GPIO11, RTC_GPIOn, 11), GPIO11), ((RTC_GPIO12, RTC_GPIOn, 12), GPIO12),
1493 ((RTC_GPIO13, RTC_GPIOn, 13), GPIO13), ((RTC_GPIO14, RTC_GPIOn, 14), GPIO14),
1494 ((RTC_GPIO15, RTC_GPIOn, 15), GPIO15), ((RTC_GPIO16, RTC_GPIOn, 16), GPIO16),
1495 ((RTC_GPIO17, RTC_GPIOn, 17), GPIO17), ((RTC_GPIO18, RTC_GPIOn, 18), GPIO18),
1496 ((RTC_GPIO19, RTC_GPIOn, 19), GPIO19), ((RTC_GPIO20, RTC_GPIOn, 20), GPIO20),
1497 ((RTC_GPIO21, RTC_GPIOn, 21), GPIO21)));
1498 };
1499}
1500#[macro_export]
1504#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1505macro_rules! define_io_mux_signals {
1506 () => {
1507 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
1508 #[derive(Debug, PartialEq, Copy, Clone)]
1509 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
1510 #[doc(hidden)]
1511 pub enum InputSignal {
1512 SPIQ = 0,
1513 SPID = 1,
1514 SPIHD = 2,
1515 SPIWP = 3,
1516 SPID4 = 7,
1517 SPID5 = 8,
1518 SPID6 = 9,
1519 SPID7 = 10,
1520 SPIDQS = 11,
1521 U0RXD = 12,
1522 U0CTS = 13,
1523 U0DSR = 14,
1524 U1RXD = 15,
1525 U1CTS = 16,
1526 U1DSR = 17,
1527 U2RXD = 18,
1528 U2CTS = 19,
1529 U2DSR = 20,
1530 I2S1_MCLK = 21,
1531 I2S0O_BCK = 22,
1532 I2S0_MCLK = 23,
1533 I2S0O_WS = 24,
1534 I2S0I_SD = 25,
1535 I2S0I_BCK = 26,
1536 I2S0I_WS = 27,
1537 I2S1O_BCK = 28,
1538 I2S1O_WS = 29,
1539 I2S1I_SD = 30,
1540 I2S1I_BCK = 31,
1541 I2S1I_WS = 32,
1542 PCNT0_SIG_CH0 = 33,
1543 PCNT0_SIG_CH1 = 34,
1544 PCNT0_CTRL_CH0 = 35,
1545 PCNT0_CTRL_CH1 = 36,
1546 PCNT1_SIG_CH0 = 37,
1547 PCNT1_SIG_CH1 = 38,
1548 PCNT1_CTRL_CH0 = 39,
1549 PCNT1_CTRL_CH1 = 40,
1550 PCNT2_SIG_CH0 = 41,
1551 PCNT2_SIG_CH1 = 42,
1552 PCNT2_CTRL_CH0 = 43,
1553 PCNT2_CTRL_CH1 = 44,
1554 PCNT3_SIG_CH0 = 45,
1555 PCNT3_SIG_CH1 = 46,
1556 PCNT3_CTRL_CH0 = 47,
1557 PCNT3_CTRL_CH1 = 48,
1558 I2S0I_SD1 = 51,
1559 I2S0I_SD2 = 52,
1560 I2S0I_SD3 = 53,
1561 USB_EXTPHY_VP = 55,
1562 USB_EXTPHY_VM = 56,
1563 USB_EXTPHY_RCV = 57,
1564 USB_OTG_IDDIG = 58,
1565 USB_OTG_AVALID = 59,
1566 USB_SRP_BVALID = 60,
1567 USB_OTG_VBUSVALID = 61,
1568 USB_SRP_SESSEND = 62,
1569 SPI3_CLK = 66,
1570 SPI3_Q = 67,
1571 SPI3_D = 68,
1572 SPI3_HD = 69,
1573 SPI3_WP = 70,
1574 SPI3_CS0 = 71,
1575 RMT_SIG_0 = 81,
1576 RMT_SIG_1 = 82,
1577 RMT_SIG_2 = 83,
1578 RMT_SIG_3 = 84,
1579 I2CEXT0_SCL = 89,
1580 I2CEXT0_SDA = 90,
1581 I2CEXT1_SCL = 91,
1582 I2CEXT1_SDA = 92,
1583 FSPICLK = 101,
1584 FSPIQ = 102,
1585 FSPID = 103,
1586 FSPIHD = 104,
1587 FSPIWP = 105,
1588 FSPIIO4 = 106,
1589 FSPIIO5 = 107,
1590 FSPIIO6 = 108,
1591 FSPIIO7 = 109,
1592 FSPICS0 = 110,
1593 TWAI_RX = 116,
1594 SUBSPIQ = 120,
1595 SUBSPID = 121,
1596 SUBSPIHD = 122,
1597 SUBSPIWP = 123,
1598 CAM_DATA_0 = 133,
1599 CAM_DATA_1 = 134,
1600 CAM_DATA_2 = 135,
1601 CAM_DATA_3 = 136,
1602 CAM_DATA_4 = 137,
1603 CAM_DATA_5 = 138,
1604 CAM_DATA_6 = 139,
1605 CAM_DATA_7 = 140,
1606 CAM_DATA_8 = 141,
1607 CAM_DATA_9 = 142,
1608 CAM_DATA_10 = 143,
1609 CAM_DATA_11 = 144,
1610 CAM_DATA_12 = 145,
1611 CAM_DATA_13 = 146,
1612 CAM_DATA_14 = 147,
1613 CAM_DATA_15 = 148,
1614 CAM_PCLK = 149,
1615 CAM_H_ENABLE = 150,
1616 CAM_H_SYNC = 151,
1617 CAM_V_SYNC = 152,
1618 SUBSPID4 = 155,
1619 SUBSPID5 = 156,
1620 SUBSPID6 = 157,
1621 SUBSPID7 = 158,
1622 SUBSPIDQS = 159,
1623 PWM0_SYNC0 = 160,
1624 PWM0_SYNC1 = 161,
1625 PWM0_SYNC2 = 162,
1626 PWM0_F0 = 163,
1627 PWM0_F1 = 164,
1628 PWM0_F2 = 165,
1629 PWM0_CAP0 = 166,
1630 PWM0_CAP1 = 167,
1631 PWM0_CAP2 = 168,
1632 PWM1_SYNC0 = 169,
1633 PWM1_SYNC1 = 170,
1634 PWM1_SYNC2 = 171,
1635 PWM1_F0 = 172,
1636 PWM1_F1 = 173,
1637 PWM1_F2 = 174,
1638 PWM1_CAP0 = 175,
1639 PWM1_CAP1 = 176,
1640 PWM1_CAP2 = 177,
1641 SDHOST_CCMD_IN_1 = 178,
1642 SDHOST_CCMD_IN_2 = 179,
1643 SDHOST_CDATA_IN_10 = 180,
1644 SDHOST_CDATA_IN_11 = 181,
1645 SDHOST_CDATA_IN_12 = 182,
1646 SDHOST_CDATA_IN_13 = 183,
1647 SDHOST_CDATA_IN_14 = 184,
1648 SDHOST_CDATA_IN_15 = 185,
1649 SDHOST_CDATA_IN_16 = 186,
1650 SDHOST_CDATA_IN_17 = 187,
1651 SDHOST_DATA_STROBE_1 = 192,
1652 SDHOST_DATA_STROBE_2 = 193,
1653 SDHOST_CARD_DETECT_N_1 = 194,
1654 SDHOST_CARD_DETECT_N_2 = 195,
1655 SDHOST_CARD_WRITE_PRT_1 = 196,
1656 SDHOST_CARD_WRITE_PRT_2 = 197,
1657 SDHOST_CARD_INT_N_1 = 198,
1658 SDHOST_CARD_INT_N_2 = 199,
1659 SDHOST_CDATA_IN_20 = 213,
1660 SDHOST_CDATA_IN_21 = 214,
1661 SDHOST_CDATA_IN_22 = 215,
1662 SDHOST_CDATA_IN_23 = 216,
1663 SDHOST_CDATA_IN_24 = 217,
1664 SDHOST_CDATA_IN_25 = 218,
1665 SDHOST_CDATA_IN_26 = 219,
1666 SDHOST_CDATA_IN_27 = 220,
1667 PRO_ALONEGPIO_IN0 = 221,
1668 PRO_ALONEGPIO_IN1 = 222,
1669 PRO_ALONEGPIO_IN2 = 223,
1670 PRO_ALONEGPIO_IN3 = 224,
1671 PRO_ALONEGPIO_IN4 = 225,
1672 PRO_ALONEGPIO_IN5 = 226,
1673 PRO_ALONEGPIO_IN6 = 227,
1674 PRO_ALONEGPIO_IN7 = 228,
1675 USB_JTAG_TDO_BRIDGE = 251,
1676 CORE1_GPIO_IN3 = 252,
1677 CORE1_GPIO_IN4 = 253,
1678 CORE1_GPIO_IN5 = 254,
1679 CORE1_GPIO_IN6 = 255,
1680 SPIIO4,
1681 SPIIO5,
1682 SPIIO6,
1683 SPIIO7,
1684 MTDI,
1685 MTCK,
1686 MTMS,
1687 }
1688 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
1689 #[derive(Debug, PartialEq, Copy, Clone)]
1690 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
1691 #[doc(hidden)]
1692 pub enum OutputSignal {
1693 SPIQ = 0,
1694 SPID = 1,
1695 SPIHD = 2,
1696 SPIWP = 3,
1697 SPICLK = 4,
1698 SPICS0 = 5,
1699 SPICS1 = 6,
1700 SPID4 = 7,
1701 SPID5 = 8,
1702 SPID6 = 9,
1703 SPID7 = 10,
1704 SPIDQS = 11,
1705 U0TXD = 12,
1706 U0RTS = 13,
1707 U0DTR = 14,
1708 U1TXD = 15,
1709 U1RTS = 16,
1710 U1DTR = 17,
1711 U2TXD = 18,
1712 U2RTS = 19,
1713 U2DTR = 20,
1714 I2S1_MCLK = 21,
1715 I2S0O_BCK = 22,
1716 I2S0_MCLK = 23,
1717 I2S0O_WS = 24,
1718 I2S0O_SD = 25,
1719 I2S0I_BCK = 26,
1720 I2S0I_WS = 27,
1721 I2S1O_BCK = 28,
1722 I2S1O_WS = 29,
1723 I2S1O_SD = 30,
1724 I2S1I_BCK = 31,
1725 I2S1I_WS = 32,
1726 USB_EXTPHY_OEN = 55,
1727 USB_EXTPHY_VPO = 57,
1728 USB_EXTPHY_VMO = 58,
1729 SPI3_CLK = 66,
1730 SPI3_Q = 67,
1731 SPI3_D = 68,
1732 SPI3_HD = 69,
1733 SPI3_WP = 70,
1734 SPI3_CS0 = 71,
1735 SPI3_CS1 = 72,
1736 LEDC_LS_SIG0 = 73,
1737 LEDC_LS_SIG1 = 74,
1738 LEDC_LS_SIG2 = 75,
1739 LEDC_LS_SIG3 = 76,
1740 LEDC_LS_SIG4 = 77,
1741 LEDC_LS_SIG5 = 78,
1742 LEDC_LS_SIG6 = 79,
1743 LEDC_LS_SIG7 = 80,
1744 RMT_SIG_0 = 81,
1745 RMT_SIG_1 = 82,
1746 RMT_SIG_2 = 83,
1747 RMT_SIG_3 = 84,
1748 I2CEXT0_SCL = 89,
1749 I2CEXT0_SDA = 90,
1750 I2CEXT1_SCL = 91,
1751 I2CEXT1_SDA = 92,
1752 GPIO_SD0 = 93,
1753 GPIO_SD1 = 94,
1754 GPIO_SD2 = 95,
1755 GPIO_SD3 = 96,
1756 GPIO_SD4 = 97,
1757 GPIO_SD5 = 98,
1758 GPIO_SD6 = 99,
1759 GPIO_SD7 = 100,
1760 FSPICLK = 101,
1761 FSPIQ = 102,
1762 FSPID = 103,
1763 FSPIHD = 104,
1764 FSPIWP = 105,
1765 FSPIIO4 = 106,
1766 FSPIIO5 = 107,
1767 FSPIIO6 = 108,
1768 FSPIIO7 = 109,
1769 FSPICS0 = 110,
1770 FSPICS1 = 111,
1771 FSPICS2 = 112,
1772 FSPICS3 = 113,
1773 FSPICS4 = 114,
1774 FSPICS5 = 115,
1775 TWAI_TX = 116,
1776 SUBSPICLK = 119,
1777 SUBSPIQ = 120,
1778 SUBSPID = 121,
1779 SUBSPIHD = 122,
1780 SUBSPIWP = 123,
1781 SUBSPICS0 = 124,
1782 SUBSPICS1 = 125,
1783 FSPIDQS = 126,
1784 SPI3_CS2 = 127,
1785 I2S0O_SD1 = 128,
1786 LCD_CS = 132,
1787 LCD_DATA_0 = 133,
1788 LCD_DATA_1 = 134,
1789 LCD_DATA_2 = 135,
1790 LCD_DATA_3 = 136,
1791 LCD_DATA_4 = 137,
1792 LCD_DATA_5 = 138,
1793 LCD_DATA_6 = 139,
1794 LCD_DATA_7 = 140,
1795 LCD_DATA_8 = 141,
1796 LCD_DATA_9 = 142,
1797 LCD_DATA_10 = 143,
1798 LCD_DATA_11 = 144,
1799 LCD_DATA_12 = 145,
1800 LCD_DATA_13 = 146,
1801 LCD_DATA_14 = 147,
1802 LCD_DATA_15 = 148,
1803 CAM_CLK = 149,
1804 LCD_H_ENABLE = 150,
1805 LCD_H_SYNC = 151,
1806 LCD_V_SYNC = 152,
1807 LCD_DC = 153,
1808 LCD_PCLK = 154,
1809 SUBSPID4 = 155,
1810 SUBSPID5 = 156,
1811 SUBSPID6 = 157,
1812 SUBSPID7 = 158,
1813 SUBSPIDQS = 159,
1814 PWM0_0A = 160,
1815 PWM0_0B = 161,
1816 PWM0_1A = 162,
1817 PWM0_1B = 163,
1818 PWM0_2A = 164,
1819 PWM0_2B = 165,
1820 PWM1_0A = 166,
1821 PWM1_0B = 167,
1822 PWM1_1A = 168,
1823 PWM1_1B = 169,
1824 PWM1_2A = 170,
1825 PWM1_2B = 171,
1826 SDHOST_CCLK_OUT_1 = 172,
1827 SDHOST_CCLK_OUT_2 = 173,
1828 SDHOST_RST_N_1 = 174,
1829 SDHOST_RST_N_2 = 175,
1830 SDHOST_CCMD_OD_PULLUP_EN_N = 176,
1831 SDIO_TOHOST_INT = 177,
1832 SDHOST_CCMD_OUT_1 = 178,
1833 SDHOST_CCMD_OUT_2 = 179,
1834 SDHOST_CDATA_OUT_10 = 180,
1835 SDHOST_CDATA_OUT_11 = 181,
1836 SDHOST_CDATA_OUT_12 = 182,
1837 SDHOST_CDATA_OUT_13 = 183,
1838 SDHOST_CDATA_OUT_14 = 184,
1839 SDHOST_CDATA_OUT_15 = 185,
1840 SDHOST_CDATA_OUT_16 = 186,
1841 SDHOST_CDATA_OUT_17 = 187,
1842 SDHOST_CDATA_OUT_20 = 213,
1843 SDHOST_CDATA_OUT_21 = 214,
1844 SDHOST_CDATA_OUT_22 = 215,
1845 SDHOST_CDATA_OUT_23 = 216,
1846 SDHOST_CDATA_OUT_24 = 217,
1847 SDHOST_CDATA_OUT_25 = 218,
1848 SDHOST_CDATA_OUT_26 = 219,
1849 SDHOST_CDATA_OUT_27 = 220,
1850 PRO_ALONEGPIO_OUT0 = 221,
1851 PRO_ALONEGPIO_OUT1 = 222,
1852 PRO_ALONEGPIO_OUT2 = 223,
1853 PRO_ALONEGPIO_OUT3 = 224,
1854 PRO_ALONEGPIO_OUT4 = 225,
1855 PRO_ALONEGPIO_OUT5 = 226,
1856 PRO_ALONEGPIO_OUT6 = 227,
1857 PRO_ALONEGPIO_OUT7 = 228,
1858 USB_JTAG_TRST = 251,
1859 CORE1_GPIO_OUT3 = 252,
1860 CORE1_GPIO_OUT4 = 253,
1861 CORE1_GPIO_OUT5 = 254,
1862 CORE1_GPIO_OUT6 = 255,
1863 GPIO = 256,
1864 SPIIO4,
1865 SPIIO5,
1866 SPIIO6,
1867 SPIIO7,
1868 CLK_OUT1,
1869 CLK_OUT2,
1870 CLK_OUT3,
1871 SPICLK_P_DIFF,
1872 SPICLK_N_DIFF,
1873 SUBSPICLK_P_DIFF,
1874 SUBSPICLK_N_DIFF,
1875 MTDO,
1876 }
1877 };
1878}
1879#[macro_export]
1892#[expect(clippy::crate_in_macro_def)]
1893#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1894macro_rules! define_io_mux_reg {
1895 () => {
1896 pub(crate) fn io_mux_reg(gpio_num: u8) -> &'static crate::pac::io_mux::GPIO {
1897 crate::peripherals::IO_MUX::regs().gpio(gpio_num as usize)
1898 }
1899 };
1900}