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 ("assist_debug.has_sp_monitor") => {
40 false
41 };
42 ("assist_debug.has_region_monitor") => {
43 true
44 };
45 ("gpio.has_bank_1") => {
46 true
47 };
48 ("gpio.gpio_function") => {
49 1
50 };
51 ("gpio.gpio_function", str) => {
52 stringify!(1)
53 };
54 ("gpio.constant_0_input") => {
55 60
56 };
57 ("gpio.constant_0_input", str) => {
58 stringify!(60)
59 };
60 ("gpio.constant_1_input") => {
61 56
62 };
63 ("gpio.constant_1_input", str) => {
64 stringify!(56)
65 };
66 ("gpio.remap_iomux_pin_registers") => {
67 false
68 };
69 ("gpio.func_in_sel_offset") => {
70 0
71 };
72 ("gpio.func_in_sel_offset", str) => {
73 stringify!(0)
74 };
75 ("gpio.input_signal_max") => {
76 255
77 };
78 ("gpio.input_signal_max", str) => {
79 stringify!(255)
80 };
81 ("gpio.output_signal_max") => {
82 256
83 };
84 ("gpio.output_signal_max", str) => {
85 stringify!(256)
86 };
87 ("i2c_master.has_fsm_timeouts") => {
88 true
89 };
90 ("i2c_master.has_hw_bus_clear") => {
91 true
92 };
93 ("i2c_master.has_bus_timeout_enable") => {
94 true
95 };
96 ("i2c_master.separate_filter_config_registers") => {
97 false
98 };
99 ("i2c_master.can_estimate_nack_reason") => {
100 true
101 };
102 ("i2c_master.has_conf_update") => {
103 true
104 };
105 ("i2c_master.has_reliable_fsm_reset") => {
106 false
107 };
108 ("i2c_master.has_arbitration_en") => {
109 true
110 };
111 ("i2c_master.has_tx_fifo_watermark") => {
112 true
113 };
114 ("i2c_master.bus_timeout_is_exponential") => {
115 true
116 };
117 ("i2c_master.max_bus_timeout") => {
118 31
119 };
120 ("i2c_master.max_bus_timeout", str) => {
121 stringify!(31)
122 };
123 ("i2c_master.ll_intr_mask") => {
124 262143
125 };
126 ("i2c_master.ll_intr_mask", str) => {
127 stringify!(262143)
128 };
129 ("i2c_master.fifo_size") => {
130 32
131 };
132 ("i2c_master.fifo_size", str) => {
133 stringify!(32)
134 };
135 ("interrupts.status_registers") => {
136 4
137 };
138 ("interrupts.status_registers", str) => {
139 stringify!(4)
140 };
141 ("rmt.ram_start") => {
142 1610704896
143 };
144 ("rmt.ram_start", str) => {
145 stringify!(1610704896)
146 };
147 ("rmt.channel_ram_size") => {
148 48
149 };
150 ("rmt.channel_ram_size", str) => {
151 stringify!(48)
152 };
153 ("spi_master.has_octal") => {
154 true
155 };
156 ("timergroup.timg_has_timer1") => {
157 true
158 };
159 ("wifi.has_wifi6") => {
160 false
161 };
162}
163#[macro_export]
165#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
166macro_rules! memory_range {
167 ("DRAM") => {
168 1070104576..1070596096
169 };
170}
171#[macro_export]
188#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
189macro_rules! for_each_i2c_master {
190 ($($pattern:tt => $code:tt;)*) => {
191 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
192 _for_each_inner!((I2C0, I2cExt0, I2CEXT0_SCL, I2CEXT0_SDA));
193 _for_each_inner!((I2C1, I2cExt1, I2CEXT1_SCL, I2CEXT1_SDA));
194 _for_each_inner!((all(I2C0, I2cExt0, I2CEXT0_SCL, I2CEXT0_SDA), (I2C1, I2cExt1,
195 I2CEXT1_SCL, I2CEXT1_SDA)));
196 };
197}
198#[macro_export]
215#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
216macro_rules! for_each_uart {
217 ($($pattern:tt => $code:tt;)*) => {
218 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
219 _for_each_inner!((UART0, Uart0, U0RXD, U0TXD, U0CTS, U0RTS));
220 _for_each_inner!((UART1, Uart1, U1RXD, U1TXD, U1CTS, U1RTS));
221 _for_each_inner!((UART2, Uart2, U2RXD, U2TXD, U2CTS, U2RTS));
222 _for_each_inner!((all(UART0, Uart0, U0RXD, U0TXD, U0CTS, U0RTS), (UART1, Uart1,
223 U1RXD, U1TXD, U1CTS, U1RTS), (UART2, Uart2, U2RXD, U2TXD, U2CTS, U2RTS)));
224 };
225}
226#[macro_export]
248#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
249macro_rules! for_each_spi_master {
250 ($($pattern:tt => $code:tt;)*) => {
251 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
252 _for_each_inner!((SPI2, Spi2, FSPICLK[FSPICS0, FSPICS1, FSPICS2, FSPICS3,
253 FSPICS4, FSPICS5] [FSPID, FSPIQ, FSPIWP, FSPIHD, FSPIIO4, FSPIIO5, FSPIIO6,
254 FSPIIO7], true)); _for_each_inner!((SPI3, Spi3, SPI3_CLK[SPI3_CS0, SPI3_CS1,
255 SPI3_CS2] [SPI3_D, SPI3_Q, SPI3_WP, SPI3_HD], true)); _for_each_inner!((all(SPI2,
256 Spi2, FSPICLK[FSPICS0, FSPICS1, FSPICS2, FSPICS3, FSPICS4, FSPICS5] [FSPID,
257 FSPIQ, FSPIWP, FSPIHD, FSPIIO4, FSPIIO5, FSPIIO6, FSPIIO7], true), (SPI3, Spi3,
258 SPI3_CLK[SPI3_CS0, SPI3_CS1, SPI3_CS2] [SPI3_D, SPI3_Q, SPI3_WP, SPI3_HD],
259 true)));
260 };
261}
262#[macro_export]
279#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
280macro_rules! for_each_spi_slave {
281 ($($pattern:tt => $code:tt;)*) => {
282 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
283 _for_each_inner!((SPI2, Spi2, FSPICLK, FSPID, FSPIQ, FSPICS0));
284 _for_each_inner!((SPI3, Spi3, SPI3_CLK, SPI3_D, SPI3_Q, SPI3_CS0));
285 _for_each_inner!((all(SPI2, Spi2, FSPICLK, FSPID, FSPIQ, FSPICS0), (SPI3, Spi3,
286 SPI3_CLK, SPI3_D, SPI3_Q, SPI3_CS0)));
287 };
288}
289#[macro_export]
290#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
291macro_rules! for_each_peripheral {
292 ($($pattern:tt => $code:tt;)*) => {
293 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
294 _for_each_inner!((GPIO0 <= virtual())); _for_each_inner!((GPIO1 <= virtual()));
295 _for_each_inner!((GPIO2 <= virtual())); _for_each_inner!((GPIO3 <= virtual()));
296 _for_each_inner!((GPIO4 <= virtual())); _for_each_inner!((GPIO5 <= virtual()));
297 _for_each_inner!((GPIO6 <= virtual())); _for_each_inner!((GPIO7 <= virtual()));
298 _for_each_inner!((GPIO8 <= virtual())); _for_each_inner!((GPIO9 <= virtual()));
299 _for_each_inner!((GPIO10 <= virtual())); _for_each_inner!((GPIO11 <= virtual()));
300 _for_each_inner!((GPIO12 <= virtual())); _for_each_inner!((GPIO13 <= virtual()));
301 _for_each_inner!((GPIO14 <= virtual())); _for_each_inner!((GPIO15 <= virtual()));
302 _for_each_inner!((GPIO16 <= virtual())); _for_each_inner!((GPIO17 <= virtual()));
303 _for_each_inner!((GPIO18 <= virtual())); _for_each_inner!((GPIO19 <= virtual()));
304 _for_each_inner!((GPIO20 <= virtual())); _for_each_inner!((GPIO21 <= virtual()));
305 _for_each_inner!((GPIO26 <= virtual())); _for_each_inner!((GPIO27 <= virtual()));
306 _for_each_inner!((GPIO28 <= virtual())); _for_each_inner!((GPIO29 <= virtual()));
307 _for_each_inner!((GPIO30 <= virtual())); _for_each_inner!((GPIO31 <= virtual()));
308 _for_each_inner!((GPIO32 <= virtual())); _for_each_inner!((GPIO33 <= virtual()));
309 _for_each_inner!((GPIO34 <= virtual())); _for_each_inner!((GPIO35 <= virtual()));
310 _for_each_inner!((GPIO36 <= virtual())); _for_each_inner!((GPIO37 <= virtual()));
311 _for_each_inner!((GPIO38 <= virtual())); _for_each_inner!((GPIO39 <= virtual()));
312 _for_each_inner!((GPIO40 <= virtual())); _for_each_inner!((GPIO41 <= virtual()));
313 _for_each_inner!((GPIO42 <= virtual())); _for_each_inner!((GPIO43 <= virtual()));
314 _for_each_inner!((GPIO44 <= virtual())); _for_each_inner!((GPIO45 <= virtual()));
315 _for_each_inner!((GPIO46 <= virtual())); _for_each_inner!((GPIO47 <= virtual()));
316 _for_each_inner!((GPIO48 <= virtual())); _for_each_inner!((AES <= AES()
317 (unstable))); _for_each_inner!((APB_CTRL <= APB_CTRL() (unstable)));
318 _for_each_inner!((APB_SARADC <= APB_SARADC() (unstable)));
319 _for_each_inner!((ASSIST_DEBUG <= ASSIST_DEBUG() (unstable)));
320 _for_each_inner!((DMA <= DMA() (unstable))); _for_each_inner!((DS <= DS()
321 (unstable))); _for_each_inner!((EFUSE <= EFUSE() (unstable)));
322 _for_each_inner!((EXTMEM <= EXTMEM() (unstable))); _for_each_inner!((GPIO <=
323 GPIO() (unstable))); _for_each_inner!((GPIO_SD <= GPIO_SD() (unstable)));
324 _for_each_inner!((HMAC <= HMAC() (unstable))); _for_each_inner!((I2C0 <=
325 I2C0(I2C_EXT0 : { bind_peri_interrupt, enable_peri_interrupt,
326 disable_peri_interrupt }))); _for_each_inner!((I2C1 <= I2C1(I2C_EXT1 : {
327 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })));
328 _for_each_inner!((I2S0 <= I2S0(I2S0 : { bind_peri_interrupt,
329 enable_peri_interrupt, disable_peri_interrupt }) (unstable)));
330 _for_each_inner!((I2S1 <= I2S1(I2S1 : { bind_peri_interrupt,
331 enable_peri_interrupt, disable_peri_interrupt }) (unstable)));
332 _for_each_inner!((INTERRUPT_CORE0 <= INTERRUPT_CORE0() (unstable)));
333 _for_each_inner!((INTERRUPT_CORE1 <= INTERRUPT_CORE1() (unstable)));
334 _for_each_inner!((IO_MUX <= IO_MUX() (unstable))); _for_each_inner!((LCD_CAM <=
335 LCD_CAM() (unstable))); _for_each_inner!((LEDC <= LEDC() (unstable)));
336 _for_each_inner!((LPWR <= RTC_CNTL() (unstable))); _for_each_inner!((MCPWM0 <=
337 MCPWM0() (unstable))); _for_each_inner!((MCPWM1 <= MCPWM1() (unstable)));
338 _for_each_inner!((PCNT <= PCNT() (unstable))); _for_each_inner!((PERI_BACKUP <=
339 PERI_BACKUP() (unstable))); _for_each_inner!((RMT <= RMT() (unstable)));
340 _for_each_inner!((RNG <= RNG() (unstable))); _for_each_inner!((RSA <= RSA()
341 (unstable))); _for_each_inner!((RTC_CNTL <= RTC_CNTL() (unstable)));
342 _for_each_inner!((RTC_I2C <= RTC_I2C() (unstable))); _for_each_inner!((RTC_IO <=
343 RTC_IO() (unstable))); _for_each_inner!((SDHOST <= SDHOST() (unstable)));
344 _for_each_inner!((SENS <= SENS() (unstable))); _for_each_inner!((SENSITIVE <=
345 SENSITIVE() (unstable))); _for_each_inner!((SHA <= SHA() (unstable)));
346 _for_each_inner!((SPI0 <= SPI0() (unstable))); _for_each_inner!((SPI1 <= SPI1()
347 (unstable))); _for_each_inner!((SPI2 <= SPI2(SPI2 : { bind_peri_interrupt,
348 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((SPI3 <=
349 SPI3(SPI3 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt
350 }))); _for_each_inner!((SYSTEM <= SYSTEM() (unstable)));
351 _for_each_inner!((SYSTIMER <= SYSTIMER() (unstable))); _for_each_inner!((TIMG0 <=
352 TIMG0() (unstable))); _for_each_inner!((TIMG1 <= TIMG1() (unstable)));
353 _for_each_inner!((TWAI0 <= TWAI0() (unstable))); _for_each_inner!((UART0 <=
354 UART0(UART0 : { bind_peri_interrupt, enable_peri_interrupt,
355 disable_peri_interrupt }))); _for_each_inner!((UART1 <= UART1(UART1 : {
356 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })));
357 _for_each_inner!((UART2 <= UART2(UART2 : { bind_peri_interrupt,
358 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((UHCI0 <=
359 UHCI0() (unstable))); _for_each_inner!((UHCI1 <= UHCI1() (unstable)));
360 _for_each_inner!((USB0 <= USB0() (unstable))); _for_each_inner!((USB_DEVICE <=
361 USB_DEVICE(USB_DEVICE : { bind_peri_interrupt, enable_peri_interrupt,
362 disable_peri_interrupt }) (unstable))); _for_each_inner!((USB_WRAP <= USB_WRAP()
363 (unstable))); _for_each_inner!((WCL <= WCL() (unstable)));
364 _for_each_inner!((XTS_AES <= XTS_AES() (unstable))); _for_each_inner!((DMA_CH0 <=
365 virtual() (unstable))); _for_each_inner!((DMA_CH1 <= virtual() (unstable)));
366 _for_each_inner!((DMA_CH2 <= virtual() (unstable))); _for_each_inner!((DMA_CH3 <=
367 virtual() (unstable))); _for_each_inner!((DMA_CH4 <= virtual() (unstable)));
368 _for_each_inner!((ADC1 <= virtual() (unstable))); _for_each_inner!((ADC2 <=
369 virtual() (unstable))); _for_each_inner!((BT <= virtual() (unstable)));
370 _for_each_inner!((CPU_CTRL <= virtual() (unstable))); _for_each_inner!((PSRAM <=
371 virtual() (unstable))); _for_each_inner!((SW_INTERRUPT <= virtual() (unstable)));
372 _for_each_inner!((ULP_RISCV_CORE <= virtual() (unstable)));
373 _for_each_inner!((WIFI <= virtual() (unstable))); _for_each_inner!((all(GPIO0 <=
374 virtual()), (GPIO1 <= virtual()), (GPIO2 <= virtual()), (GPIO3 <= virtual()),
375 (GPIO4 <= virtual()), (GPIO5 <= virtual()), (GPIO6 <= virtual()), (GPIO7 <=
376 virtual()), (GPIO8 <= virtual()), (GPIO9 <= virtual()), (GPIO10 <= virtual()),
377 (GPIO11 <= virtual()), (GPIO12 <= virtual()), (GPIO13 <= virtual()), (GPIO14 <=
378 virtual()), (GPIO15 <= virtual()), (GPIO16 <= virtual()), (GPIO17 <= virtual()),
379 (GPIO18 <= virtual()), (GPIO19 <= virtual()), (GPIO20 <= virtual()), (GPIO21 <=
380 virtual()), (GPIO26 <= virtual()), (GPIO27 <= virtual()), (GPIO28 <= virtual()),
381 (GPIO29 <= virtual()), (GPIO30 <= virtual()), (GPIO31 <= virtual()), (GPIO32 <=
382 virtual()), (GPIO33 <= virtual()), (GPIO34 <= virtual()), (GPIO35 <= virtual()),
383 (GPIO36 <= virtual()), (GPIO37 <= virtual()), (GPIO38 <= virtual()), (GPIO39 <=
384 virtual()), (GPIO40 <= virtual()), (GPIO41 <= virtual()), (GPIO42 <= virtual()),
385 (GPIO43 <= virtual()), (GPIO44 <= virtual()), (GPIO45 <= virtual()), (GPIO46 <=
386 virtual()), (GPIO47 <= virtual()), (GPIO48 <= virtual()), (AES <= AES()
387 (unstable)), (APB_CTRL <= APB_CTRL() (unstable)), (APB_SARADC <= APB_SARADC()
388 (unstable)), (ASSIST_DEBUG <= ASSIST_DEBUG() (unstable)), (DMA <= DMA()
389 (unstable)), (DS <= DS() (unstable)), (EFUSE <= EFUSE() (unstable)), (EXTMEM <=
390 EXTMEM() (unstable)), (GPIO <= GPIO() (unstable)), (GPIO_SD <= GPIO_SD()
391 (unstable)), (HMAC <= HMAC() (unstable)), (I2C0 <= I2C0(I2C_EXT0 : {
392 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (I2C1 <=
393 I2C1(I2C_EXT1 : { bind_peri_interrupt, enable_peri_interrupt,
394 disable_peri_interrupt })), (I2S0 <= I2S0(I2S0 : { bind_peri_interrupt,
395 enable_peri_interrupt, disable_peri_interrupt }) (unstable)), (I2S1 <= I2S1(I2S1
396 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
397 (unstable)), (INTERRUPT_CORE0 <= INTERRUPT_CORE0() (unstable)), (INTERRUPT_CORE1
398 <= INTERRUPT_CORE1() (unstable)), (IO_MUX <= IO_MUX() (unstable)), (LCD_CAM <=
399 LCD_CAM() (unstable)), (LEDC <= LEDC() (unstable)), (LPWR <= RTC_CNTL()
400 (unstable)), (MCPWM0 <= MCPWM0() (unstable)), (MCPWM1 <= MCPWM1() (unstable)),
401 (PCNT <= PCNT() (unstable)), (PERI_BACKUP <= PERI_BACKUP() (unstable)), (RMT <=
402 RMT() (unstable)), (RNG <= RNG() (unstable)), (RSA <= RSA() (unstable)),
403 (RTC_CNTL <= RTC_CNTL() (unstable)), (RTC_I2C <= RTC_I2C() (unstable)), (RTC_IO
404 <= RTC_IO() (unstable)), (SDHOST <= SDHOST() (unstable)), (SENS <= SENS()
405 (unstable)), (SENSITIVE <= SENSITIVE() (unstable)), (SHA <= SHA() (unstable)),
406 (SPI0 <= SPI0() (unstable)), (SPI1 <= SPI1() (unstable)), (SPI2 <= SPI2(SPI2 : {
407 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (SPI3 <=
408 SPI3(SPI3 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt
409 })), (SYSTEM <= SYSTEM() (unstable)), (SYSTIMER <= SYSTIMER() (unstable)), (TIMG0
410 <= TIMG0() (unstable)), (TIMG1 <= TIMG1() (unstable)), (TWAI0 <= TWAI0()
411 (unstable)), (UART0 <= UART0(UART0 : { bind_peri_interrupt,
412 enable_peri_interrupt, disable_peri_interrupt })), (UART1 <= UART1(UART1 : {
413 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (UART2 <=
414 UART2(UART2 : { bind_peri_interrupt, enable_peri_interrupt,
415 disable_peri_interrupt })), (UHCI0 <= UHCI0() (unstable)), (UHCI1 <= UHCI1()
416 (unstable)), (USB0 <= USB0() (unstable)), (USB_DEVICE <= USB_DEVICE(USB_DEVICE :
417 { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
418 (unstable)), (USB_WRAP <= USB_WRAP() (unstable)), (WCL <= WCL() (unstable)),
419 (XTS_AES <= XTS_AES() (unstable)), (DMA_CH0 <= virtual() (unstable)), (DMA_CH1 <=
420 virtual() (unstable)), (DMA_CH2 <= virtual() (unstable)), (DMA_CH3 <= virtual()
421 (unstable)), (DMA_CH4 <= virtual() (unstable)), (ADC1 <= virtual() (unstable)),
422 (ADC2 <= virtual() (unstable)), (BT <= virtual() (unstable)), (CPU_CTRL <=
423 virtual() (unstable)), (PSRAM <= virtual() (unstable)), (SW_INTERRUPT <=
424 virtual() (unstable)), (ULP_RISCV_CORE <= virtual() (unstable)), (WIFI <=
425 virtual() (unstable))));
426 };
427}
428#[macro_export]
455#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
456macro_rules! for_each_gpio {
457 ($($pattern:tt => $code:tt;)*) => {
458 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
459 _for_each_inner!((0, GPIO0() () ([Input] [Output]))); _for_each_inner!((1,
460 GPIO1() () ([Input] [Output]))); _for_each_inner!((2, GPIO2() () ([Input]
461 [Output]))); _for_each_inner!((3, GPIO3() () ([Input] [Output])));
462 _for_each_inner!((4, GPIO4() () ([Input] [Output]))); _for_each_inner!((5,
463 GPIO5() () ([Input] [Output]))); _for_each_inner!((6, GPIO6() () ([Input]
464 [Output]))); _for_each_inner!((7, GPIO7() () ([Input] [Output])));
465 _for_each_inner!((8, GPIO8() (_3 => SUBSPICS1) ([Input] [Output])));
466 _for_each_inner!((9, GPIO9(_3 => SUBSPIHD _4 => FSPIHD) (_3 => SUBSPIHD _4 =>
467 FSPIHD) ([Input] [Output]))); _for_each_inner!((10, GPIO10(_2 => FSPIIO4 _4 =>
468 FSPICS0) (_2 => FSPIIO4 _3 => SUBSPICS0 _4 => FSPICS0) ([Input] [Output])));
469 _for_each_inner!((11, GPIO11(_2 => FSPIIO5 _3 => SUBSPID _4 => FSPID) (_2 =>
470 FSPIIO5 _3 => SUBSPID _4 => FSPID) ([Input] [Output]))); _for_each_inner!((12,
471 GPIO12(_2 => FSPIIO6 _4 => FSPICLK) (_2 => FSPIIO6 _3 => SUBSPICLK _4 => FSPICLK)
472 ([Input] [Output]))); _for_each_inner!((13, GPIO13(_2 => FSPIIO7 _3 => SUBSPIQ _4
473 => FSPIQ) (_2 => FSPIIO7 _3 => SUBSPIQ _4 => FSPIQ) ([Input] [Output])));
474 _for_each_inner!((14, GPIO14(_3 => SUBSPIWP _4 => FSPIWP) (_2 => FSPIDQS _3 =>
475 SUBSPIWP _4 => FSPIWP) ([Input] [Output]))); _for_each_inner!((15, GPIO15() (_2
476 => U0RTS) ([Input] [Output]))); _for_each_inner!((16, GPIO16(_2 => U0CTS) ()
477 ([Input] [Output]))); _for_each_inner!((17, GPIO17() (_2 => U1TXD) ([Input]
478 [Output]))); _for_each_inner!((18, GPIO18(_2 => U1RXD) (_3 => CLK_OUT3) ([Input]
479 [Output]))); _for_each_inner!((19, GPIO19() (_2 => U1RTS _3 => CLK_OUT2) ([Input]
480 [Output]))); _for_each_inner!((20, GPIO20(_2 => U1CTS) (_3 => CLK_OUT1) ([Input]
481 [Output]))); _for_each_inner!((21, GPIO21() () ([Input] [Output])));
482 _for_each_inner!((26, GPIO26() (_0 => SPICS1) ([Input] [Output])));
483 _for_each_inner!((27, GPIO27(_0 => SPIHD) (_0 => SPIHD) ([Input] [Output])));
484 _for_each_inner!((28, GPIO28(_0 => SPIWP) (_0 => SPIWP) ([Input] [Output])));
485 _for_each_inner!((29, GPIO29() (_0 => SPICS0) ([Input] [Output])));
486 _for_each_inner!((30, GPIO30() (_0 => SPICLK) ([Input] [Output])));
487 _for_each_inner!((31, GPIO31(_0 => SPIQ) (_0 => SPIQ) ([Input] [Output])));
488 _for_each_inner!((32, GPIO32(_0 => SPID) (_0 => SPID) ([Input] [Output])));
489 _for_each_inner!((33, GPIO33(_2 => FSPIHD _3 => SUBSPIHD _4 => SPIIO4) (_2 =>
490 FSPIHD _3 => SUBSPIHD _4 => SPIIO4) ([Input] [Output]))); _for_each_inner!((34,
491 GPIO34(_2 => FSPICS0 _4 => SPIIO5) (_2 => FSPICS0 _3 => SUBSPICS0 _4 => SPIIO5)
492 ([Input] [Output]))); _for_each_inner!((35, GPIO35(_2 => FSPID _3 => SUBSPID _4
493 => SPIIO6) (_2 => FSPID _3 => SUBSPID _4 => SPIIO6) ([Input] [Output])));
494 _for_each_inner!((36, GPIO36(_2 => FSPICLK _4 => SPIIO7) (_2 => FSPICLK _3 =>
495 SUBSPICLK _4 => SPIIO7) ([Input] [Output]))); _for_each_inner!((37, GPIO37(_2 =>
496 FSPIQ _3 => SUBSPIQ _4 => SPIDQS) (_2 => FSPIQ _3 => SUBSPIQ _4 => SPIDQS)
497 ([Input] [Output]))); _for_each_inner!((38, GPIO38(_2 => FSPIWP _3 => SUBSPIWP)
498 (_2 => FSPIWP _3 => SUBSPIWP) ([Input] [Output]))); _for_each_inner!((39,
499 GPIO39() (_2 => CLK_OUT3 _3 => SUBSPICS1) ([Input] [Output])));
500 _for_each_inner!((40, GPIO40() (_2 => CLK_OUT2) ([Input] [Output])));
501 _for_each_inner!((41, GPIO41() (_2 => CLK_OUT1) ([Input] [Output])));
502 _for_each_inner!((42, GPIO42() () ([Input] [Output]))); _for_each_inner!((43,
503 GPIO43() (_0 => U0TXD _2 => CLK_OUT1) ([Input] [Output]))); _for_each_inner!((44,
504 GPIO44(_0 => U0RXD) (_2 => CLK_OUT2) ([Input] [Output]))); _for_each_inner!((45,
505 GPIO45() () ([Input] [Output]))); _for_each_inner!((46, GPIO46() () ([Input]
506 [Output]))); _for_each_inner!((47, GPIO47() (_0 => SPICLK_P_DIFF _2 =>
507 SUBSPICLK_P_DIFF) ([Input] [Output]))); _for_each_inner!((48, GPIO48() (_0 =>
508 SPICLK_N_DIFF _2 => SUBSPICLK_N_DIFF) ([Input] [Output])));
509 _for_each_inner!((all(0, GPIO0() () ([Input] [Output])), (1, GPIO1() () ([Input]
510 [Output])), (2, GPIO2() () ([Input] [Output])), (3, GPIO3() () ([Input]
511 [Output])), (4, GPIO4() () ([Input] [Output])), (5, GPIO5() () ([Input]
512 [Output])), (6, GPIO6() () ([Input] [Output])), (7, GPIO7() () ([Input]
513 [Output])), (8, GPIO8() (_3 => SUBSPICS1) ([Input] [Output])), (9, GPIO9(_3 =>
514 SUBSPIHD _4 => FSPIHD) (_3 => SUBSPIHD _4 => FSPIHD) ([Input] [Output])), (10,
515 GPIO10(_2 => FSPIIO4 _4 => FSPICS0) (_2 => FSPIIO4 _3 => SUBSPICS0 _4 => FSPICS0)
516 ([Input] [Output])), (11, GPIO11(_2 => FSPIIO5 _3 => SUBSPID _4 => FSPID) (_2 =>
517 FSPIIO5 _3 => SUBSPID _4 => FSPID) ([Input] [Output])), (12, GPIO12(_2 => FSPIIO6
518 _4 => FSPICLK) (_2 => FSPIIO6 _3 => SUBSPICLK _4 => FSPICLK) ([Input] [Output])),
519 (13, GPIO13(_2 => FSPIIO7 _3 => SUBSPIQ _4 => FSPIQ) (_2 => FSPIIO7 _3 => SUBSPIQ
520 _4 => FSPIQ) ([Input] [Output])), (14, GPIO14(_3 => SUBSPIWP _4 => FSPIWP) (_2 =>
521 FSPIDQS _3 => SUBSPIWP _4 => FSPIWP) ([Input] [Output])), (15, GPIO15() (_2 =>
522 U0RTS) ([Input] [Output])), (16, GPIO16(_2 => U0CTS) () ([Input] [Output])), (17,
523 GPIO17() (_2 => U1TXD) ([Input] [Output])), (18, GPIO18(_2 => U1RXD) (_3 =>
524 CLK_OUT3) ([Input] [Output])), (19, GPIO19() (_2 => U1RTS _3 => CLK_OUT2)
525 ([Input] [Output])), (20, GPIO20(_2 => U1CTS) (_3 => CLK_OUT1) ([Input]
526 [Output])), (21, GPIO21() () ([Input] [Output])), (26, GPIO26() (_0 => SPICS1)
527 ([Input] [Output])), (27, GPIO27(_0 => SPIHD) (_0 => SPIHD) ([Input] [Output])),
528 (28, GPIO28(_0 => SPIWP) (_0 => SPIWP) ([Input] [Output])), (29, GPIO29() (_0 =>
529 SPICS0) ([Input] [Output])), (30, GPIO30() (_0 => SPICLK) ([Input] [Output])),
530 (31, GPIO31(_0 => SPIQ) (_0 => SPIQ) ([Input] [Output])), (32, GPIO32(_0 => SPID)
531 (_0 => SPID) ([Input] [Output])), (33, GPIO33(_2 => FSPIHD _3 => SUBSPIHD _4 =>
532 SPIIO4) (_2 => FSPIHD _3 => SUBSPIHD _4 => SPIIO4) ([Input] [Output])), (34,
533 GPIO34(_2 => FSPICS0 _4 => SPIIO5) (_2 => FSPICS0 _3 => SUBSPICS0 _4 => SPIIO5)
534 ([Input] [Output])), (35, GPIO35(_2 => FSPID _3 => SUBSPID _4 => SPIIO6) (_2 =>
535 FSPID _3 => SUBSPID _4 => SPIIO6) ([Input] [Output])), (36, GPIO36(_2 => FSPICLK
536 _4 => SPIIO7) (_2 => FSPICLK _3 => SUBSPICLK _4 => SPIIO7) ([Input] [Output])),
537 (37, GPIO37(_2 => FSPIQ _3 => SUBSPIQ _4 => SPIDQS) (_2 => FSPIQ _3 => SUBSPIQ _4
538 => SPIDQS) ([Input] [Output])), (38, GPIO38(_2 => FSPIWP _3 => SUBSPIWP) (_2 =>
539 FSPIWP _3 => SUBSPIWP) ([Input] [Output])), (39, GPIO39() (_2 => CLK_OUT3 _3 =>
540 SUBSPICS1) ([Input] [Output])), (40, GPIO40() (_2 => CLK_OUT2) ([Input]
541 [Output])), (41, GPIO41() (_2 => CLK_OUT1) ([Input] [Output])), (42, GPIO42() ()
542 ([Input] [Output])), (43, GPIO43() (_0 => U0TXD _2 => CLK_OUT1) ([Input]
543 [Output])), (44, GPIO44(_0 => U0RXD) (_2 => CLK_OUT2) ([Input] [Output])), (45,
544 GPIO45() () ([Input] [Output])), (46, GPIO46() () ([Input] [Output])), (47,
545 GPIO47() (_0 => SPICLK_P_DIFF _2 => SUBSPICLK_P_DIFF) ([Input] [Output])), (48,
546 GPIO48() (_0 => SPICLK_N_DIFF _2 => SUBSPICLK_N_DIFF) ([Input] [Output]))));
547 };
548}
549#[macro_export]
576#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
577macro_rules! for_each_analog_function {
578 ($($pattern:tt => $code:tt;)*) => {
579 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
580 _for_each_inner!((TOUCH1, GPIO1)); _for_each_inner!((ADC1_CH0, GPIO1));
581 _for_each_inner!((TOUCH2, GPIO2)); _for_each_inner!((ADC1_CH1, GPIO2));
582 _for_each_inner!((TOUCH3, GPIO3)); _for_each_inner!((ADC1_CH2, GPIO3));
583 _for_each_inner!((TOUCH4, GPIO4)); _for_each_inner!((ADC1_CH3, GPIO4));
584 _for_each_inner!((TOUCH5, GPIO5)); _for_each_inner!((ADC1_CH4, GPIO5));
585 _for_each_inner!((TOUCH6, GPIO6)); _for_each_inner!((ADC1_CH5, GPIO6));
586 _for_each_inner!((TOUCH7, GPIO7)); _for_each_inner!((ADC1_CH6, GPIO7));
587 _for_each_inner!((TOUCH8, GPIO8)); _for_each_inner!((ADC1_CH7, GPIO8));
588 _for_each_inner!((TOUCH9, GPIO9)); _for_each_inner!((ADC1_CH8, GPIO9));
589 _for_each_inner!((TOUCH10, GPIO10)); _for_each_inner!((ADC1_CH9, GPIO10));
590 _for_each_inner!((TOUCH11, GPIO11)); _for_each_inner!((ADC2_CH0, GPIO11));
591 _for_each_inner!((TOUCH12, GPIO12)); _for_each_inner!((ADC2_CH1, GPIO12));
592 _for_each_inner!((TOUCH13, GPIO13)); _for_each_inner!((ADC2_CH2, GPIO13));
593 _for_each_inner!((TOUCH14, GPIO14)); _for_each_inner!((ADC2_CH3, GPIO14));
594 _for_each_inner!((XTAL_32K_P, GPIO15)); _for_each_inner!((ADC2_CH4, GPIO15));
595 _for_each_inner!((XTAL_32K_N, GPIO16)); _for_each_inner!((ADC2_CH5, GPIO16));
596 _for_each_inner!((ADC2_CH6, GPIO17)); _for_each_inner!((ADC2_CH7, GPIO18));
597 _for_each_inner!((USB_DM, GPIO19)); _for_each_inner!((ADC2_CH8, GPIO19));
598 _for_each_inner!((USB_DP, GPIO20)); _for_each_inner!((ADC2_CH9, GPIO20));
599 _for_each_inner!(((TOUCH1, TOUCHn, 1), GPIO1)); _for_each_inner!(((ADC1_CH0,
600 ADCn_CHm, 1, 0), GPIO1)); _for_each_inner!(((TOUCH2, TOUCHn, 2), GPIO2));
601 _for_each_inner!(((ADC1_CH1, ADCn_CHm, 1, 1), GPIO2)); _for_each_inner!(((TOUCH3,
602 TOUCHn, 3), GPIO3)); _for_each_inner!(((ADC1_CH2, ADCn_CHm, 1, 2), GPIO3));
603 _for_each_inner!(((TOUCH4, TOUCHn, 4), GPIO4)); _for_each_inner!(((ADC1_CH3,
604 ADCn_CHm, 1, 3), GPIO4)); _for_each_inner!(((TOUCH5, TOUCHn, 5), GPIO5));
605 _for_each_inner!(((ADC1_CH4, ADCn_CHm, 1, 4), GPIO5)); _for_each_inner!(((TOUCH6,
606 TOUCHn, 6), GPIO6)); _for_each_inner!(((ADC1_CH5, ADCn_CHm, 1, 5), GPIO6));
607 _for_each_inner!(((TOUCH7, TOUCHn, 7), GPIO7)); _for_each_inner!(((ADC1_CH6,
608 ADCn_CHm, 1, 6), GPIO7)); _for_each_inner!(((TOUCH8, TOUCHn, 8), GPIO8));
609 _for_each_inner!(((ADC1_CH7, ADCn_CHm, 1, 7), GPIO8)); _for_each_inner!(((TOUCH9,
610 TOUCHn, 9), GPIO9)); _for_each_inner!(((ADC1_CH8, ADCn_CHm, 1, 8), GPIO9));
611 _for_each_inner!(((TOUCH10, TOUCHn, 10), GPIO10)); _for_each_inner!(((ADC1_CH9,
612 ADCn_CHm, 1, 9), GPIO10)); _for_each_inner!(((TOUCH11, TOUCHn, 11), GPIO11));
613 _for_each_inner!(((ADC2_CH0, ADCn_CHm, 2, 0), GPIO11));
614 _for_each_inner!(((TOUCH12, TOUCHn, 12), GPIO12)); _for_each_inner!(((ADC2_CH1,
615 ADCn_CHm, 2, 1), GPIO12)); _for_each_inner!(((TOUCH13, TOUCHn, 13), GPIO13));
616 _for_each_inner!(((ADC2_CH2, ADCn_CHm, 2, 2), GPIO13));
617 _for_each_inner!(((TOUCH14, TOUCHn, 14), GPIO14)); _for_each_inner!(((ADC2_CH3,
618 ADCn_CHm, 2, 3), GPIO14)); _for_each_inner!(((ADC2_CH4, ADCn_CHm, 2, 4),
619 GPIO15)); _for_each_inner!(((ADC2_CH5, ADCn_CHm, 2, 5), GPIO16));
620 _for_each_inner!(((ADC2_CH6, ADCn_CHm, 2, 6), GPIO17));
621 _for_each_inner!(((ADC2_CH7, ADCn_CHm, 2, 7), GPIO18));
622 _for_each_inner!(((ADC2_CH8, ADCn_CHm, 2, 8), GPIO19));
623 _for_each_inner!(((ADC2_CH9, ADCn_CHm, 2, 9), GPIO20));
624 _for_each_inner!((all(TOUCH1, GPIO1), (ADC1_CH0, GPIO1), (TOUCH2, GPIO2),
625 (ADC1_CH1, GPIO2), (TOUCH3, GPIO3), (ADC1_CH2, GPIO3), (TOUCH4, GPIO4),
626 (ADC1_CH3, GPIO4), (TOUCH5, GPIO5), (ADC1_CH4, GPIO5), (TOUCH6, GPIO6),
627 (ADC1_CH5, GPIO6), (TOUCH7, GPIO7), (ADC1_CH6, GPIO7), (TOUCH8, GPIO8),
628 (ADC1_CH7, GPIO8), (TOUCH9, GPIO9), (ADC1_CH8, GPIO9), (TOUCH10, GPIO10),
629 (ADC1_CH9, GPIO10), (TOUCH11, GPIO11), (ADC2_CH0, GPIO11), (TOUCH12, GPIO12),
630 (ADC2_CH1, GPIO12), (TOUCH13, GPIO13), (ADC2_CH2, GPIO13), (TOUCH14, GPIO14),
631 (ADC2_CH3, GPIO14), (XTAL_32K_P, GPIO15), (ADC2_CH4, GPIO15), (XTAL_32K_N,
632 GPIO16), (ADC2_CH5, GPIO16), (ADC2_CH6, GPIO17), (ADC2_CH7, GPIO18), (USB_DM,
633 GPIO19), (ADC2_CH8, GPIO19), (USB_DP, GPIO20), (ADC2_CH9, GPIO20)));
634 _for_each_inner!((all_expanded((TOUCH1, TOUCHn, 1), GPIO1), ((ADC1_CH0, ADCn_CHm,
635 1, 0), GPIO1), ((TOUCH2, TOUCHn, 2), GPIO2), ((ADC1_CH1, ADCn_CHm, 1, 1), GPIO2),
636 ((TOUCH3, TOUCHn, 3), GPIO3), ((ADC1_CH2, ADCn_CHm, 1, 2), GPIO3), ((TOUCH4,
637 TOUCHn, 4), GPIO4), ((ADC1_CH3, ADCn_CHm, 1, 3), GPIO4), ((TOUCH5, TOUCHn, 5),
638 GPIO5), ((ADC1_CH4, ADCn_CHm, 1, 4), GPIO5), ((TOUCH6, TOUCHn, 6), GPIO6),
639 ((ADC1_CH5, ADCn_CHm, 1, 5), GPIO6), ((TOUCH7, TOUCHn, 7), GPIO7), ((ADC1_CH6,
640 ADCn_CHm, 1, 6), GPIO7), ((TOUCH8, TOUCHn, 8), GPIO8), ((ADC1_CH7, ADCn_CHm, 1,
641 7), GPIO8), ((TOUCH9, TOUCHn, 9), GPIO9), ((ADC1_CH8, ADCn_CHm, 1, 8), GPIO9),
642 ((TOUCH10, TOUCHn, 10), GPIO10), ((ADC1_CH9, ADCn_CHm, 1, 9), GPIO10), ((TOUCH11,
643 TOUCHn, 11), GPIO11), ((ADC2_CH0, ADCn_CHm, 2, 0), GPIO11), ((TOUCH12, TOUCHn,
644 12), GPIO12), ((ADC2_CH1, ADCn_CHm, 2, 1), GPIO12), ((TOUCH13, TOUCHn, 13),
645 GPIO13), ((ADC2_CH2, ADCn_CHm, 2, 2), GPIO13), ((TOUCH14, TOUCHn, 14), GPIO14),
646 ((ADC2_CH3, ADCn_CHm, 2, 3), GPIO14), ((ADC2_CH4, ADCn_CHm, 2, 4), GPIO15),
647 ((ADC2_CH5, ADCn_CHm, 2, 5), GPIO16), ((ADC2_CH6, ADCn_CHm, 2, 6), GPIO17),
648 ((ADC2_CH7, ADCn_CHm, 2, 7), GPIO18), ((ADC2_CH8, ADCn_CHm, 2, 8), GPIO19),
649 ((ADC2_CH9, ADCn_CHm, 2, 9), GPIO20)));
650 };
651}
652#[macro_export]
679#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
680macro_rules! for_each_lp_function {
681 ($($pattern:tt => $code:tt;)*) => {
682 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
683 _for_each_inner!((RTC_GPIO0, GPIO0)); _for_each_inner!((SAR_I2C_SCL_0, GPIO0));
684 _for_each_inner!((RTC_GPIO1, GPIO1)); _for_each_inner!((SAR_I2C_SDA_0, GPIO1));
685 _for_each_inner!((RTC_GPIO2, GPIO2)); _for_each_inner!((SAR_I2C_SCL_1, GPIO2));
686 _for_each_inner!((RTC_GPIO3, GPIO3)); _for_each_inner!((SAR_I2C_SDA_1, GPIO3));
687 _for_each_inner!((RTC_GPIO4, GPIO4)); _for_each_inner!((RTC_GPIO5, GPIO5));
688 _for_each_inner!((RTC_GPIO6, GPIO6)); _for_each_inner!((RTC_GPIO7, GPIO7));
689 _for_each_inner!((RTC_GPIO8, GPIO8)); _for_each_inner!((RTC_GPIO9, GPIO9));
690 _for_each_inner!((RTC_GPIO10, GPIO10)); _for_each_inner!((RTC_GPIO11, GPIO11));
691 _for_each_inner!((RTC_GPIO12, GPIO12)); _for_each_inner!((RTC_GPIO13, GPIO13));
692 _for_each_inner!((RTC_GPIO14, GPIO14)); _for_each_inner!((RTC_GPIO15, GPIO15));
693 _for_each_inner!((RTC_GPIO16, GPIO16)); _for_each_inner!((RTC_GPIO17, GPIO17));
694 _for_each_inner!((RTC_GPIO18, GPIO18)); _for_each_inner!((RTC_GPIO19, GPIO19));
695 _for_each_inner!((RTC_GPIO20, GPIO20)); _for_each_inner!((RTC_GPIO21, GPIO21));
696 _for_each_inner!(((RTC_GPIO0, RTC_GPIOn, 0), GPIO0));
697 _for_each_inner!(((SAR_I2C_SCL_0, SAR_I2C_SCL_n, 0), GPIO0));
698 _for_each_inner!(((RTC_GPIO1, RTC_GPIOn, 1), GPIO1));
699 _for_each_inner!(((SAR_I2C_SDA_0, SAR_I2C_SDA_n, 0), GPIO1));
700 _for_each_inner!(((RTC_GPIO2, RTC_GPIOn, 2), GPIO2));
701 _for_each_inner!(((SAR_I2C_SCL_1, SAR_I2C_SCL_n, 1), GPIO2));
702 _for_each_inner!(((RTC_GPIO3, RTC_GPIOn, 3), GPIO3));
703 _for_each_inner!(((SAR_I2C_SDA_1, SAR_I2C_SDA_n, 1), GPIO3));
704 _for_each_inner!(((RTC_GPIO4, RTC_GPIOn, 4), GPIO4));
705 _for_each_inner!(((RTC_GPIO5, RTC_GPIOn, 5), GPIO5));
706 _for_each_inner!(((RTC_GPIO6, RTC_GPIOn, 6), GPIO6));
707 _for_each_inner!(((RTC_GPIO7, RTC_GPIOn, 7), GPIO7));
708 _for_each_inner!(((RTC_GPIO8, RTC_GPIOn, 8), GPIO8));
709 _for_each_inner!(((RTC_GPIO9, RTC_GPIOn, 9), GPIO9));
710 _for_each_inner!(((RTC_GPIO10, RTC_GPIOn, 10), GPIO10));
711 _for_each_inner!(((RTC_GPIO11, RTC_GPIOn, 11), GPIO11));
712 _for_each_inner!(((RTC_GPIO12, RTC_GPIOn, 12), GPIO12));
713 _for_each_inner!(((RTC_GPIO13, RTC_GPIOn, 13), GPIO13));
714 _for_each_inner!(((RTC_GPIO14, RTC_GPIOn, 14), GPIO14));
715 _for_each_inner!(((RTC_GPIO15, RTC_GPIOn, 15), GPIO15));
716 _for_each_inner!(((RTC_GPIO16, RTC_GPIOn, 16), GPIO16));
717 _for_each_inner!(((RTC_GPIO17, RTC_GPIOn, 17), GPIO17));
718 _for_each_inner!(((RTC_GPIO18, RTC_GPIOn, 18), GPIO18));
719 _for_each_inner!(((RTC_GPIO19, RTC_GPIOn, 19), GPIO19));
720 _for_each_inner!(((RTC_GPIO20, RTC_GPIOn, 20), GPIO20));
721 _for_each_inner!(((RTC_GPIO21, RTC_GPIOn, 21), GPIO21));
722 _for_each_inner!((all(RTC_GPIO0, GPIO0), (SAR_I2C_SCL_0, GPIO0), (RTC_GPIO1,
723 GPIO1), (SAR_I2C_SDA_0, GPIO1), (RTC_GPIO2, GPIO2), (SAR_I2C_SCL_1, GPIO2),
724 (RTC_GPIO3, GPIO3), (SAR_I2C_SDA_1, GPIO3), (RTC_GPIO4, GPIO4), (RTC_GPIO5,
725 GPIO5), (RTC_GPIO6, GPIO6), (RTC_GPIO7, GPIO7), (RTC_GPIO8, GPIO8), (RTC_GPIO9,
726 GPIO9), (RTC_GPIO10, GPIO10), (RTC_GPIO11, GPIO11), (RTC_GPIO12, GPIO12),
727 (RTC_GPIO13, GPIO13), (RTC_GPIO14, GPIO14), (RTC_GPIO15, GPIO15), (RTC_GPIO16,
728 GPIO16), (RTC_GPIO17, GPIO17), (RTC_GPIO18, GPIO18), (RTC_GPIO19, GPIO19),
729 (RTC_GPIO20, GPIO20), (RTC_GPIO21, GPIO21)));
730 _for_each_inner!((all_expanded((RTC_GPIO0, RTC_GPIOn, 0), GPIO0),
731 ((SAR_I2C_SCL_0, SAR_I2C_SCL_n, 0), GPIO0), ((RTC_GPIO1, RTC_GPIOn, 1), GPIO1),
732 ((SAR_I2C_SDA_0, SAR_I2C_SDA_n, 0), GPIO1), ((RTC_GPIO2, RTC_GPIOn, 2), GPIO2),
733 ((SAR_I2C_SCL_1, SAR_I2C_SCL_n, 1), GPIO2), ((RTC_GPIO3, RTC_GPIOn, 3), GPIO3),
734 ((SAR_I2C_SDA_1, SAR_I2C_SDA_n, 1), GPIO3), ((RTC_GPIO4, RTC_GPIOn, 4), GPIO4),
735 ((RTC_GPIO5, RTC_GPIOn, 5), GPIO5), ((RTC_GPIO6, RTC_GPIOn, 6), GPIO6),
736 ((RTC_GPIO7, RTC_GPIOn, 7), GPIO7), ((RTC_GPIO8, RTC_GPIOn, 8), GPIO8),
737 ((RTC_GPIO9, RTC_GPIOn, 9), GPIO9), ((RTC_GPIO10, RTC_GPIOn, 10), GPIO10),
738 ((RTC_GPIO11, RTC_GPIOn, 11), GPIO11), ((RTC_GPIO12, RTC_GPIOn, 12), GPIO12),
739 ((RTC_GPIO13, RTC_GPIOn, 13), GPIO13), ((RTC_GPIO14, RTC_GPIOn, 14), GPIO14),
740 ((RTC_GPIO15, RTC_GPIOn, 15), GPIO15), ((RTC_GPIO16, RTC_GPIOn, 16), GPIO16),
741 ((RTC_GPIO17, RTC_GPIOn, 17), GPIO17), ((RTC_GPIO18, RTC_GPIOn, 18), GPIO18),
742 ((RTC_GPIO19, RTC_GPIOn, 19), GPIO19), ((RTC_GPIO20, RTC_GPIOn, 20), GPIO20),
743 ((RTC_GPIO21, RTC_GPIOn, 21), GPIO21)));
744 };
745}
746#[macro_export]
750#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
751macro_rules! define_io_mux_signals {
752 () => {
753 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
754 #[derive(Debug, PartialEq, Copy, Clone)]
755 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
756 #[doc(hidden)]
757 pub enum InputSignal {
758 SPIQ = 0,
759 SPID = 1,
760 SPIHD = 2,
761 SPIWP = 3,
762 SPID4 = 7,
763 SPID5 = 8,
764 SPID6 = 9,
765 SPID7 = 10,
766 SPIDQS = 11,
767 U0RXD = 12,
768 U0CTS = 13,
769 U0DSR = 14,
770 U1RXD = 15,
771 U1CTS = 16,
772 U1DSR = 17,
773 U2RXD = 18,
774 U2CTS = 19,
775 U2DSR = 20,
776 I2S1_MCLK = 21,
777 I2S0O_BCK = 22,
778 I2S0_MCLK = 23,
779 I2S0O_WS = 24,
780 I2S0I_SD = 25,
781 I2S0I_BCK = 26,
782 I2S0I_WS = 27,
783 I2S1O_BCK = 28,
784 I2S1O_WS = 29,
785 I2S1I_SD = 30,
786 I2S1I_BCK = 31,
787 I2S1I_WS = 32,
788 PCNT0_SIG_CH0 = 33,
789 PCNT0_SIG_CH1 = 34,
790 PCNT0_CTRL_CH0 = 35,
791 PCNT0_CTRL_CH1 = 36,
792 PCNT1_SIG_CH0 = 37,
793 PCNT1_SIG_CH1 = 38,
794 PCNT1_CTRL_CH0 = 39,
795 PCNT1_CTRL_CH1 = 40,
796 PCNT2_SIG_CH0 = 41,
797 PCNT2_SIG_CH1 = 42,
798 PCNT2_CTRL_CH0 = 43,
799 PCNT2_CTRL_CH1 = 44,
800 PCNT3_SIG_CH0 = 45,
801 PCNT3_SIG_CH1 = 46,
802 PCNT3_CTRL_CH0 = 47,
803 PCNT3_CTRL_CH1 = 48,
804 I2S0I_SD1 = 51,
805 I2S0I_SD2 = 52,
806 I2S0I_SD3 = 53,
807 USB_EXTPHY_VP = 55,
808 USB_EXTPHY_VM = 56,
809 USB_EXTPHY_RCV = 57,
810 USB_OTG_IDDIG = 58,
811 USB_OTG_AVALID = 59,
812 USB_SRP_BVALID = 60,
813 USB_OTG_VBUSVALID = 61,
814 USB_SRP_SESSEND = 62,
815 SPI3_CLK = 66,
816 SPI3_Q = 67,
817 SPI3_D = 68,
818 SPI3_HD = 69,
819 SPI3_WP = 70,
820 SPI3_CS0 = 71,
821 RMT_SIG_0 = 81,
822 RMT_SIG_1 = 82,
823 RMT_SIG_2 = 83,
824 RMT_SIG_3 = 84,
825 I2CEXT0_SCL = 89,
826 I2CEXT0_SDA = 90,
827 I2CEXT1_SCL = 91,
828 I2CEXT1_SDA = 92,
829 FSPICLK = 101,
830 FSPIQ = 102,
831 FSPID = 103,
832 FSPIHD = 104,
833 FSPIWP = 105,
834 FSPIIO4 = 106,
835 FSPIIO5 = 107,
836 FSPIIO6 = 108,
837 FSPIIO7 = 109,
838 FSPICS0 = 110,
839 TWAI_RX = 116,
840 SUBSPIQ = 120,
841 SUBSPID = 121,
842 SUBSPIHD = 122,
843 SUBSPIWP = 123,
844 CAM_DATA_0 = 133,
845 CAM_DATA_1 = 134,
846 CAM_DATA_2 = 135,
847 CAM_DATA_3 = 136,
848 CAM_DATA_4 = 137,
849 CAM_DATA_5 = 138,
850 CAM_DATA_6 = 139,
851 CAM_DATA_7 = 140,
852 CAM_DATA_8 = 141,
853 CAM_DATA_9 = 142,
854 CAM_DATA_10 = 143,
855 CAM_DATA_11 = 144,
856 CAM_DATA_12 = 145,
857 CAM_DATA_13 = 146,
858 CAM_DATA_14 = 147,
859 CAM_DATA_15 = 148,
860 CAM_PCLK = 149,
861 CAM_H_ENABLE = 150,
862 CAM_H_SYNC = 151,
863 CAM_V_SYNC = 152,
864 SUBSPID4 = 155,
865 SUBSPID5 = 156,
866 SUBSPID6 = 157,
867 SUBSPID7 = 158,
868 SUBSPIDQS = 159,
869 PWM0_SYNC0 = 160,
870 PWM0_SYNC1 = 161,
871 PWM0_SYNC2 = 162,
872 PWM0_F0 = 163,
873 PWM0_F1 = 164,
874 PWM0_F2 = 165,
875 PWM0_CAP0 = 166,
876 PWM0_CAP1 = 167,
877 PWM0_CAP2 = 168,
878 PWM1_SYNC0 = 169,
879 PWM1_SYNC1 = 170,
880 PWM1_SYNC2 = 171,
881 PWM1_F0 = 172,
882 PWM1_F1 = 173,
883 PWM1_F2 = 174,
884 PWM1_CAP0 = 175,
885 PWM1_CAP1 = 176,
886 PWM1_CAP2 = 177,
887 SDHOST_CCMD_IN_1 = 178,
888 SDHOST_CCMD_IN_2 = 179,
889 SDHOST_CDATA_IN_10 = 180,
890 SDHOST_CDATA_IN_11 = 181,
891 SDHOST_CDATA_IN_12 = 182,
892 SDHOST_CDATA_IN_13 = 183,
893 SDHOST_CDATA_IN_14 = 184,
894 SDHOST_CDATA_IN_15 = 185,
895 SDHOST_CDATA_IN_16 = 186,
896 SDHOST_CDATA_IN_17 = 187,
897 SDHOST_DATA_STROBE_1 = 192,
898 SDHOST_DATA_STROBE_2 = 193,
899 SDHOST_CARD_DETECT_N_1 = 194,
900 SDHOST_CARD_DETECT_N_2 = 195,
901 SDHOST_CARD_WRITE_PRT_1 = 196,
902 SDHOST_CARD_WRITE_PRT_2 = 197,
903 SDHOST_CARD_INT_N_1 = 198,
904 SDHOST_CARD_INT_N_2 = 199,
905 SDHOST_CDATA_IN_20 = 213,
906 SDHOST_CDATA_IN_21 = 214,
907 SDHOST_CDATA_IN_22 = 215,
908 SDHOST_CDATA_IN_23 = 216,
909 SDHOST_CDATA_IN_24 = 217,
910 SDHOST_CDATA_IN_25 = 218,
911 SDHOST_CDATA_IN_26 = 219,
912 SDHOST_CDATA_IN_27 = 220,
913 PRO_ALONEGPIO_IN0 = 221,
914 PRO_ALONEGPIO_IN1 = 222,
915 PRO_ALONEGPIO_IN2 = 223,
916 PRO_ALONEGPIO_IN3 = 224,
917 PRO_ALONEGPIO_IN4 = 225,
918 PRO_ALONEGPIO_IN5 = 226,
919 PRO_ALONEGPIO_IN6 = 227,
920 PRO_ALONEGPIO_IN7 = 228,
921 USB_JTAG_TDO_BRIDGE = 251,
922 CORE1_GPIO_IN3 = 252,
923 CORE1_GPIO_IN4 = 253,
924 CORE1_GPIO_IN5 = 254,
925 CORE1_GPIO_IN6 = 255,
926 SPIIO4,
927 SPIIO5,
928 SPIIO6,
929 SPIIO7,
930 MTDI,
931 MTCK,
932 MTMS,
933 }
934 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
935 #[derive(Debug, PartialEq, Copy, Clone)]
936 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
937 #[doc(hidden)]
938 pub enum OutputSignal {
939 SPIQ = 0,
940 SPID = 1,
941 SPIHD = 2,
942 SPIWP = 3,
943 SPICLK = 4,
944 SPICS0 = 5,
945 SPICS1 = 6,
946 SPID4 = 7,
947 SPID5 = 8,
948 SPID6 = 9,
949 SPID7 = 10,
950 SPIDQS = 11,
951 U0TXD = 12,
952 U0RTS = 13,
953 U0DTR = 14,
954 U1TXD = 15,
955 U1RTS = 16,
956 U1DTR = 17,
957 U2TXD = 18,
958 U2RTS = 19,
959 U2DTR = 20,
960 I2S1_MCLK = 21,
961 I2S0O_BCK = 22,
962 I2S0_MCLK = 23,
963 I2S0O_WS = 24,
964 I2S0O_SD = 25,
965 I2S0I_BCK = 26,
966 I2S0I_WS = 27,
967 I2S1O_BCK = 28,
968 I2S1O_WS = 29,
969 I2S1O_SD = 30,
970 I2S1I_BCK = 31,
971 I2S1I_WS = 32,
972 USB_EXTPHY_OEN = 55,
973 USB_EXTPHY_VPO = 57,
974 USB_EXTPHY_VMO = 58,
975 SPI3_CLK = 66,
976 SPI3_Q = 67,
977 SPI3_D = 68,
978 SPI3_HD = 69,
979 SPI3_WP = 70,
980 SPI3_CS0 = 71,
981 SPI3_CS1 = 72,
982 LEDC_LS_SIG0 = 73,
983 LEDC_LS_SIG1 = 74,
984 LEDC_LS_SIG2 = 75,
985 LEDC_LS_SIG3 = 76,
986 LEDC_LS_SIG4 = 77,
987 LEDC_LS_SIG5 = 78,
988 LEDC_LS_SIG6 = 79,
989 LEDC_LS_SIG7 = 80,
990 RMT_SIG_0 = 81,
991 RMT_SIG_1 = 82,
992 RMT_SIG_2 = 83,
993 RMT_SIG_3 = 84,
994 I2CEXT0_SCL = 89,
995 I2CEXT0_SDA = 90,
996 I2CEXT1_SCL = 91,
997 I2CEXT1_SDA = 92,
998 GPIO_SD0 = 93,
999 GPIO_SD1 = 94,
1000 GPIO_SD2 = 95,
1001 GPIO_SD3 = 96,
1002 GPIO_SD4 = 97,
1003 GPIO_SD5 = 98,
1004 GPIO_SD6 = 99,
1005 GPIO_SD7 = 100,
1006 FSPICLK = 101,
1007 FSPIQ = 102,
1008 FSPID = 103,
1009 FSPIHD = 104,
1010 FSPIWP = 105,
1011 FSPIIO4 = 106,
1012 FSPIIO5 = 107,
1013 FSPIIO6 = 108,
1014 FSPIIO7 = 109,
1015 FSPICS0 = 110,
1016 FSPICS1 = 111,
1017 FSPICS2 = 112,
1018 FSPICS3 = 113,
1019 FSPICS4 = 114,
1020 FSPICS5 = 115,
1021 TWAI_TX = 116,
1022 SUBSPICLK = 119,
1023 SUBSPIQ = 120,
1024 SUBSPID = 121,
1025 SUBSPIHD = 122,
1026 SUBSPIWP = 123,
1027 SUBSPICS0 = 124,
1028 SUBSPICS1 = 125,
1029 FSPIDQS = 126,
1030 SPI3_CS2 = 127,
1031 I2S0O_SD1 = 128,
1032 LCD_CS = 132,
1033 LCD_DATA_0 = 133,
1034 LCD_DATA_1 = 134,
1035 LCD_DATA_2 = 135,
1036 LCD_DATA_3 = 136,
1037 LCD_DATA_4 = 137,
1038 LCD_DATA_5 = 138,
1039 LCD_DATA_6 = 139,
1040 LCD_DATA_7 = 140,
1041 LCD_DATA_8 = 141,
1042 LCD_DATA_9 = 142,
1043 LCD_DATA_10 = 143,
1044 LCD_DATA_11 = 144,
1045 LCD_DATA_12 = 145,
1046 LCD_DATA_13 = 146,
1047 LCD_DATA_14 = 147,
1048 LCD_DATA_15 = 148,
1049 CAM_CLK = 149,
1050 LCD_H_ENABLE = 150,
1051 LCD_H_SYNC = 151,
1052 LCD_V_SYNC = 152,
1053 LCD_DC = 153,
1054 LCD_PCLK = 154,
1055 SUBSPID4 = 155,
1056 SUBSPID5 = 156,
1057 SUBSPID6 = 157,
1058 SUBSPID7 = 158,
1059 SUBSPIDQS = 159,
1060 PWM0_0A = 160,
1061 PWM0_0B = 161,
1062 PWM0_1A = 162,
1063 PWM0_1B = 163,
1064 PWM0_2A = 164,
1065 PWM0_2B = 165,
1066 PWM1_0A = 166,
1067 PWM1_0B = 167,
1068 PWM1_1A = 168,
1069 PWM1_1B = 169,
1070 PWM1_2A = 170,
1071 PWM1_2B = 171,
1072 SDHOST_CCLK_OUT_1 = 172,
1073 SDHOST_CCLK_OUT_2 = 173,
1074 SDHOST_RST_N_1 = 174,
1075 SDHOST_RST_N_2 = 175,
1076 SDHOST_CCMD_OD_PULLUP_EN_N = 176,
1077 SDIO_TOHOST_INT = 177,
1078 SDHOST_CCMD_OUT_1 = 178,
1079 SDHOST_CCMD_OUT_2 = 179,
1080 SDHOST_CDATA_OUT_10 = 180,
1081 SDHOST_CDATA_OUT_11 = 181,
1082 SDHOST_CDATA_OUT_12 = 182,
1083 SDHOST_CDATA_OUT_13 = 183,
1084 SDHOST_CDATA_OUT_14 = 184,
1085 SDHOST_CDATA_OUT_15 = 185,
1086 SDHOST_CDATA_OUT_16 = 186,
1087 SDHOST_CDATA_OUT_17 = 187,
1088 SDHOST_CDATA_OUT_20 = 213,
1089 SDHOST_CDATA_OUT_21 = 214,
1090 SDHOST_CDATA_OUT_22 = 215,
1091 SDHOST_CDATA_OUT_23 = 216,
1092 SDHOST_CDATA_OUT_24 = 217,
1093 SDHOST_CDATA_OUT_25 = 218,
1094 SDHOST_CDATA_OUT_26 = 219,
1095 SDHOST_CDATA_OUT_27 = 220,
1096 PRO_ALONEGPIO_OUT0 = 221,
1097 PRO_ALONEGPIO_OUT1 = 222,
1098 PRO_ALONEGPIO_OUT2 = 223,
1099 PRO_ALONEGPIO_OUT3 = 224,
1100 PRO_ALONEGPIO_OUT4 = 225,
1101 PRO_ALONEGPIO_OUT5 = 226,
1102 PRO_ALONEGPIO_OUT6 = 227,
1103 PRO_ALONEGPIO_OUT7 = 228,
1104 USB_JTAG_TRST = 251,
1105 CORE1_GPIO_OUT3 = 252,
1106 CORE1_GPIO_OUT4 = 253,
1107 CORE1_GPIO_OUT5 = 254,
1108 CORE1_GPIO_OUT6 = 255,
1109 GPIO = 256,
1110 SPIIO4,
1111 SPIIO5,
1112 SPIIO6,
1113 SPIIO7,
1114 CLK_OUT1,
1115 CLK_OUT2,
1116 CLK_OUT3,
1117 SPICLK_P_DIFF,
1118 SPICLK_N_DIFF,
1119 SUBSPICLK_P_DIFF,
1120 SUBSPICLK_N_DIFF,
1121 MTDO,
1122 }
1123 };
1124}
1125#[macro_export]
1138#[expect(clippy::crate_in_macro_def)]
1139#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1140macro_rules! define_io_mux_reg {
1141 () => {
1142 pub(crate) fn io_mux_reg(gpio_num: u8) -> &'static crate::pac::io_mux::GPIO {
1143 crate::peripherals::IO_MUX::regs().gpio(gpio_num as usize)
1144 }
1145 };
1146}