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 "esp32s2"
18 };
19}
20#[macro_export]
22#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
23macro_rules! property {
24 ("chip") => {
25 "esp32s2"
26 };
27 ("arch") => {
28 "xtensa"
29 };
30 ("cores") => {
31 1
32 };
33 ("cores", str) => {
34 stringify!(1)
35 };
36 ("trm") => {
37 "https://www.espressif.com/sites/default/files/documentation/esp32-s2_technical_reference_manual_en.pdf"
38 };
39 ("gpio.has_bank_1") => {
40 true
41 };
42 ("gpio.gpio_function") => {
43 1
44 };
45 ("gpio.gpio_function", str) => {
46 stringify!(1)
47 };
48 ("gpio.constant_0_input") => {
49 60
50 };
51 ("gpio.constant_0_input", str) => {
52 stringify!(60)
53 };
54 ("gpio.constant_1_input") => {
55 56
56 };
57 ("gpio.constant_1_input", str) => {
58 stringify!(56)
59 };
60 ("gpio.remap_iomux_pin_registers") => {
61 false
62 };
63 ("gpio.func_in_sel_offset") => {
64 0
65 };
66 ("gpio.func_in_sel_offset", str) => {
67 stringify!(0)
68 };
69 ("gpio.input_signal_max") => {
70 242
71 };
72 ("gpio.input_signal_max", str) => {
73 stringify!(242)
74 };
75 ("gpio.output_signal_max") => {
76 256
77 };
78 ("gpio.output_signal_max", str) => {
79 stringify!(256)
80 };
81 ("i2c_master.has_fsm_timeouts") => {
82 false
83 };
84 ("i2c_master.has_hw_bus_clear") => {
85 false
86 };
87 ("i2c_master.has_bus_timeout_enable") => {
88 true
89 };
90 ("i2c_master.separate_filter_config_registers") => {
91 true
92 };
93 ("i2c_master.can_estimate_nack_reason") => {
94 false
95 };
96 ("i2c_master.has_conf_update") => {
97 false
98 };
99 ("i2c_master.has_reliable_fsm_reset") => {
100 false
101 };
102 ("i2c_master.has_arbitration_en") => {
103 true
104 };
105 ("i2c_master.has_tx_fifo_watermark") => {
106 false
107 };
108 ("i2c_master.bus_timeout_is_exponential") => {
109 false
110 };
111 ("i2c_master.i2c0_data_register_ahb_address") => {
112 1610690588
113 };
114 ("i2c_master.i2c0_data_register_ahb_address", str) => {
115 stringify!(1610690588)
116 };
117 ("i2c_master.max_bus_timeout") => {
118 16777215
119 };
120 ("i2c_master.max_bus_timeout", str) => {
121 stringify!(16777215)
122 };
123 ("i2c_master.ll_intr_mask") => {
124 131071
125 };
126 ("i2c_master.ll_intr_mask", str) => {
127 stringify!(131071)
128 };
129 ("i2c_master.fifo_size") => {
130 32
131 };
132 ("i2c_master.fifo_size", str) => {
133 stringify!(32)
134 };
135 ("interrupts.status_registers") => {
136 3
137 };
138 ("interrupts.status_registers", str) => {
139 stringify!(3)
140 };
141 ("rmt.ram_start") => {
142 1061250048
143 };
144 ("rmt.ram_start", str) => {
145 stringify!(1061250048)
146 };
147 ("rmt.channel_ram_size") => {
148 64
149 };
150 ("rmt.channel_ram_size", str) => {
151 stringify!(64)
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 1073414144..1073741824
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!((all(UART0, Uart0, U0RXD, U0TXD, U0CTS, U0RTS), (UART1, Uart1,
222 U1RXD, U1TXD, U1CTS, U1RTS)));
223 };
224}
225#[macro_export]
247#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
248macro_rules! for_each_spi_master {
249 ($($pattern:tt => $code:tt;)*) => {
250 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
251 _for_each_inner!((SPI2, Spi2, FSPICLK[FSPICS0, FSPICS1, FSPICS2, FSPICS3,
252 FSPICS4, FSPICS5] [FSPID, FSPIQ, FSPIWP, FSPIHD, FSPIIO4, FSPIIO5, FSPIIO6,
253 FSPIIO7], true)); _for_each_inner!((SPI3, Spi3, SPI3_CLK[SPI3_CS0, SPI3_CS1,
254 SPI3_CS2] [SPI3_D, SPI3_Q])); _for_each_inner!((all(SPI2, Spi2, FSPICLK[FSPICS0,
255 FSPICS1, FSPICS2, FSPICS3, FSPICS4, FSPICS5] [FSPID, FSPIQ, FSPIWP, FSPIHD,
256 FSPIIO4, FSPIIO5, FSPIIO6, FSPIIO7], true), (SPI3, Spi3, SPI3_CLK[SPI3_CS0,
257 SPI3_CS1, SPI3_CS2] [SPI3_D, SPI3_Q])));
258 };
259}
260#[macro_export]
277#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
278macro_rules! for_each_spi_slave {
279 ($($pattern:tt => $code:tt;)*) => {
280 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
281 _for_each_inner!((SPI2, Spi2, FSPICLK, FSPID, FSPIQ, FSPICS0));
282 _for_each_inner!((SPI3, Spi3, SPI3_CLK, SPI3_D, SPI3_Q, SPI3_CS0));
283 _for_each_inner!((all(SPI2, Spi2, FSPICLK, FSPID, FSPIQ, FSPICS0), (SPI3, Spi3,
284 SPI3_CLK, SPI3_D, SPI3_Q, SPI3_CS0)));
285 };
286}
287#[macro_export]
288#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
289macro_rules! for_each_peripheral {
290 ($($pattern:tt => $code:tt;)*) => {
291 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
292 _for_each_inner!((GPIO0 <= virtual())); _for_each_inner!((GPIO1 <= virtual()));
293 _for_each_inner!((GPIO2 <= virtual())); _for_each_inner!((GPIO3 <= virtual()));
294 _for_each_inner!((GPIO4 <= virtual())); _for_each_inner!((GPIO5 <= virtual()));
295 _for_each_inner!((GPIO6 <= virtual())); _for_each_inner!((GPIO7 <= virtual()));
296 _for_each_inner!((GPIO8 <= virtual())); _for_each_inner!((GPIO9 <= virtual()));
297 _for_each_inner!((GPIO10 <= virtual())); _for_each_inner!((GPIO11 <= virtual()));
298 _for_each_inner!((GPIO12 <= virtual())); _for_each_inner!((GPIO13 <= virtual()));
299 _for_each_inner!((GPIO14 <= virtual())); _for_each_inner!((GPIO15 <= virtual()));
300 _for_each_inner!((GPIO16 <= virtual())); _for_each_inner!((GPIO17 <= virtual()));
301 _for_each_inner!((GPIO18 <= virtual())); _for_each_inner!((GPIO19 <= virtual()));
302 _for_each_inner!((GPIO20 <= virtual())); _for_each_inner!((GPIO21 <= virtual()));
303 _for_each_inner!((GPIO26 <= virtual())); _for_each_inner!((GPIO27 <= virtual()));
304 _for_each_inner!((GPIO28 <= virtual())); _for_each_inner!((GPIO29 <= virtual()));
305 _for_each_inner!((GPIO30 <= virtual())); _for_each_inner!((GPIO31 <= virtual()));
306 _for_each_inner!((GPIO32 <= virtual())); _for_each_inner!((GPIO33 <= virtual()));
307 _for_each_inner!((GPIO34 <= virtual())); _for_each_inner!((GPIO35 <= virtual()));
308 _for_each_inner!((GPIO36 <= virtual())); _for_each_inner!((GPIO37 <= virtual()));
309 _for_each_inner!((GPIO38 <= virtual())); _for_each_inner!((GPIO39 <= virtual()));
310 _for_each_inner!((GPIO40 <= virtual())); _for_each_inner!((GPIO41 <= virtual()));
311 _for_each_inner!((GPIO42 <= virtual())); _for_each_inner!((GPIO43 <= virtual()));
312 _for_each_inner!((GPIO44 <= virtual())); _for_each_inner!((GPIO45 <= virtual()));
313 _for_each_inner!((GPIO46 <= virtual())); _for_each_inner!((AES <= AES()
314 (unstable))); _for_each_inner!((APB_SARADC <= APB_SARADC() (unstable)));
315 _for_each_inner!((DEDICATED_GPIO <= DEDICATED_GPIO() (unstable)));
316 _for_each_inner!((DS <= DS() (unstable))); _for_each_inner!((EFUSE <= EFUSE()
317 (unstable))); _for_each_inner!((EXTMEM <= EXTMEM() (unstable)));
318 _for_each_inner!((FE <= FE() (unstable))); _for_each_inner!((FE2 <= FE2()
319 (unstable))); _for_each_inner!((GPIO <= GPIO() (unstable)));
320 _for_each_inner!((GPIO_SD <= GPIO_SD() (unstable))); _for_each_inner!((HMAC <=
321 HMAC() (unstable))); _for_each_inner!((I2C_ANA_MST <= I2C_ANA_MST() (unstable)));
322 _for_each_inner!((I2C0 <= I2C0(I2C_EXT0 : { bind_peri_interrupt,
323 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((I2C1 <=
324 I2C1(I2C_EXT1 : { bind_peri_interrupt, enable_peri_interrupt,
325 disable_peri_interrupt }))); _for_each_inner!((I2S0 <= I2S0(I2S0 : {
326 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
327 (unstable))); _for_each_inner!((INTERRUPT_CORE0 <= INTERRUPT_CORE0()
328 (unstable))); _for_each_inner!((IO_MUX <= IO_MUX() (unstable)));
329 _for_each_inner!((LEDC <= LEDC() (unstable))); _for_each_inner!((NRX <= NRX()
330 (unstable))); _for_each_inner!((PCNT <= PCNT() (unstable)));
331 _for_each_inner!((PMS <= PMS() (unstable))); _for_each_inner!((RMT <= RMT()
332 (unstable))); _for_each_inner!((RNG <= RNG() (unstable))); _for_each_inner!((RSA
333 <= RSA() (unstable))); _for_each_inner!((LPWR <= RTC_CNTL() (unstable)));
334 _for_each_inner!((RTC_I2C <= RTC_I2C() (unstable))); _for_each_inner!((RTC_IO <=
335 RTC_IO() (unstable))); _for_each_inner!((SENS <= SENS() (unstable)));
336 _for_each_inner!((SHA <= SHA() (unstable))); _for_each_inner!((SPI0 <= SPI0()
337 (unstable))); _for_each_inner!((SPI1 <= SPI1() (unstable)));
338 _for_each_inner!((SPI2 <= SPI2(SPI2_DMA : { bind_dma_interrupt,
339 enable_dma_interrupt, disable_dma_interrupt }, SPI2 : { bind_peri_interrupt,
340 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((SPI3 <=
341 SPI3(SPI3_DMA : { bind_dma_interrupt, enable_dma_interrupt, disable_dma_interrupt
342 }, SPI3 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt
343 }))); _for_each_inner!((SYSCON <= SYSCON() (unstable))); _for_each_inner!((SYSTEM
344 <= SYSTEM() (unstable))); _for_each_inner!((SYSTIMER <= SYSTIMER() (unstable)));
345 _for_each_inner!((TIMG0 <= TIMG0() (unstable))); _for_each_inner!((TIMG1 <=
346 TIMG1() (unstable))); _for_each_inner!((TWAI0 <= TWAI0() (unstable)));
347 _for_each_inner!((UART0 <= UART0(UART0 : { bind_peri_interrupt,
348 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((UART1 <=
349 UART1(UART1 : { bind_peri_interrupt, enable_peri_interrupt,
350 disable_peri_interrupt }))); _for_each_inner!((UHCI0 <= UHCI0() (unstable)));
351 _for_each_inner!((USB0 <= USB0() (unstable))); _for_each_inner!((USB_WRAP <=
352 USB_WRAP() (unstable))); _for_each_inner!((XTS_AES <= XTS_AES() (unstable)));
353 _for_each_inner!((WIFI <= WIFI() (unstable))); _for_each_inner!((DMA_SPI2 <=
354 SPI2() (unstable))); _for_each_inner!((DMA_SPI3 <= SPI3() (unstable)));
355 _for_each_inner!((DMA_I2S0 <= I2S0() (unstable))); _for_each_inner!((DMA_CRYPTO
356 <= CRYPTO_DMA() (unstable))); _for_each_inner!((DMA_COPY <= COPY_DMA()
357 (unstable))); _for_each_inner!((ADC1 <= virtual() (unstable)));
358 _for_each_inner!((ADC2 <= virtual() (unstable))); _for_each_inner!((DAC1 <=
359 virtual() (unstable))); _for_each_inner!((DAC2 <= virtual() (unstable)));
360 _for_each_inner!((PSRAM <= virtual() (unstable))); _for_each_inner!((SW_INTERRUPT
361 <= virtual() (unstable))); _for_each_inner!((ULP_RISCV_CORE <= virtual()
362 (unstable))); _for_each_inner!((all(GPIO0 <= virtual()), (GPIO1 <= virtual()),
363 (GPIO2 <= virtual()), (GPIO3 <= virtual()), (GPIO4 <= virtual()), (GPIO5 <=
364 virtual()), (GPIO6 <= virtual()), (GPIO7 <= virtual()), (GPIO8 <= virtual()),
365 (GPIO9 <= virtual()), (GPIO10 <= virtual()), (GPIO11 <= virtual()), (GPIO12 <=
366 virtual()), (GPIO13 <= virtual()), (GPIO14 <= virtual()), (GPIO15 <= virtual()),
367 (GPIO16 <= virtual()), (GPIO17 <= virtual()), (GPIO18 <= virtual()), (GPIO19 <=
368 virtual()), (GPIO20 <= virtual()), (GPIO21 <= virtual()), (GPIO26 <= virtual()),
369 (GPIO27 <= virtual()), (GPIO28 <= virtual()), (GPIO29 <= virtual()), (GPIO30 <=
370 virtual()), (GPIO31 <= virtual()), (GPIO32 <= virtual()), (GPIO33 <= virtual()),
371 (GPIO34 <= virtual()), (GPIO35 <= virtual()), (GPIO36 <= virtual()), (GPIO37 <=
372 virtual()), (GPIO38 <= virtual()), (GPIO39 <= virtual()), (GPIO40 <= virtual()),
373 (GPIO41 <= virtual()), (GPIO42 <= virtual()), (GPIO43 <= virtual()), (GPIO44 <=
374 virtual()), (GPIO45 <= virtual()), (GPIO46 <= virtual()), (AES <= AES()
375 (unstable)), (APB_SARADC <= APB_SARADC() (unstable)), (DEDICATED_GPIO <=
376 DEDICATED_GPIO() (unstable)), (DS <= DS() (unstable)), (EFUSE <= EFUSE()
377 (unstable)), (EXTMEM <= EXTMEM() (unstable)), (FE <= FE() (unstable)), (FE2 <=
378 FE2() (unstable)), (GPIO <= GPIO() (unstable)), (GPIO_SD <= GPIO_SD()
379 (unstable)), (HMAC <= HMAC() (unstable)), (I2C_ANA_MST <= I2C_ANA_MST()
380 (unstable)), (I2C0 <= I2C0(I2C_EXT0 : { bind_peri_interrupt,
381 enable_peri_interrupt, disable_peri_interrupt })), (I2C1 <= I2C1(I2C_EXT1 : {
382 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (I2S0 <=
383 I2S0(I2S0 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt
384 }) (unstable)), (INTERRUPT_CORE0 <= INTERRUPT_CORE0() (unstable)), (IO_MUX <=
385 IO_MUX() (unstable)), (LEDC <= LEDC() (unstable)), (NRX <= NRX() (unstable)),
386 (PCNT <= PCNT() (unstable)), (PMS <= PMS() (unstable)), (RMT <= RMT()
387 (unstable)), (RNG <= RNG() (unstable)), (RSA <= RSA() (unstable)), (LPWR <=
388 RTC_CNTL() (unstable)), (RTC_I2C <= RTC_I2C() (unstable)), (RTC_IO <= RTC_IO()
389 (unstable)), (SENS <= SENS() (unstable)), (SHA <= SHA() (unstable)), (SPI0 <=
390 SPI0() (unstable)), (SPI1 <= SPI1() (unstable)), (SPI2 <= SPI2(SPI2_DMA : {
391 bind_dma_interrupt, enable_dma_interrupt, disable_dma_interrupt }, SPI2 : {
392 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (SPI3 <=
393 SPI3(SPI3_DMA : { bind_dma_interrupt, enable_dma_interrupt, disable_dma_interrupt
394 }, SPI3 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt
395 })), (SYSCON <= SYSCON() (unstable)), (SYSTEM <= SYSTEM() (unstable)), (SYSTIMER
396 <= SYSTIMER() (unstable)), (TIMG0 <= TIMG0() (unstable)), (TIMG1 <= TIMG1()
397 (unstable)), (TWAI0 <= TWAI0() (unstable)), (UART0 <= UART0(UART0 : {
398 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (UART1 <=
399 UART1(UART1 : { bind_peri_interrupt, enable_peri_interrupt,
400 disable_peri_interrupt })), (UHCI0 <= UHCI0() (unstable)), (USB0 <= USB0()
401 (unstable)), (USB_WRAP <= USB_WRAP() (unstable)), (XTS_AES <= XTS_AES()
402 (unstable)), (WIFI <= WIFI() (unstable)), (DMA_SPI2 <= SPI2() (unstable)),
403 (DMA_SPI3 <= SPI3() (unstable)), (DMA_I2S0 <= I2S0() (unstable)), (DMA_CRYPTO <=
404 CRYPTO_DMA() (unstable)), (DMA_COPY <= COPY_DMA() (unstable)), (ADC1 <= virtual()
405 (unstable)), (ADC2 <= virtual() (unstable)), (DAC1 <= virtual() (unstable)),
406 (DAC2 <= virtual() (unstable)), (PSRAM <= virtual() (unstable)), (SW_INTERRUPT <=
407 virtual() (unstable)), (ULP_RISCV_CORE <= virtual() (unstable))));
408 };
409}
410#[macro_export]
437#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
438macro_rules! for_each_gpio {
439 ($($pattern:tt => $code:tt;)*) => {
440 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
441 _for_each_inner!((0, GPIO0() () ([Input] [Output]))); _for_each_inner!((1,
442 GPIO1() () ([Input] [Output]))); _for_each_inner!((2, GPIO2() () ([Input]
443 [Output]))); _for_each_inner!((3, GPIO3() () ([Input] [Output])));
444 _for_each_inner!((4, GPIO4() () ([Input] [Output]))); _for_each_inner!((5,
445 GPIO5() () ([Input] [Output]))); _for_each_inner!((6, GPIO6() () ([Input]
446 [Output]))); _for_each_inner!((7, GPIO7() () ([Input] [Output])));
447 _for_each_inner!((8, GPIO8() (_3 => SUBSPICS1) ([Input] [Output])));
448 _for_each_inner!((9, GPIO9(_3 => SUBSPIHD _4 => FSPIHD) (_3 => SUBSPIHD _4 =>
449 FSPIHD) ([Input] [Output]))); _for_each_inner!((10, GPIO10(_2 => FSPIIO4 _4 =>
450 FSPICS0) (_2 => FSPIIO4 _3 => SUBSPICS0 _4 => FSPICS0) ([Input] [Output])));
451 _for_each_inner!((11, GPIO11(_2 => FSPIIO5 _3 => SUBSPID _4 => FSPID) (_2 =>
452 FSPIIO5 _3 => SUBSPID _4 => FSPID) ([Input] [Output]))); _for_each_inner!((12,
453 GPIO12(_2 => FSPIIO6 _4 => FSPICLK) (_2 => FSPIIO6 _3 => SUBSPICLK _4 => FSPICLK)
454 ([Input] [Output]))); _for_each_inner!((13, GPIO13(_2 => FSPIIO7 _3 => SUBSPIQ _4
455 => FSPIQ) (_2 => FSPIIO7 _3 => SUBSPIQ _4 => FSPIQ) ([Input] [Output])));
456 _for_each_inner!((14, GPIO14(_3 => SUBSPIWP _4 => FSPIWP) (_2 => FSPIDQS _3 =>
457 SUBSPIWP _4 => FSPIWP) ([Input] [Output]))); _for_each_inner!((15, GPIO15() (_2
458 => U0RTS) ([Input] [Output]))); _for_each_inner!((16, GPIO16(_2 => U0CTS) ()
459 ([Input] [Output]))); _for_each_inner!((17, GPIO17() (_2 => U1TXD) ([Input]
460 [Output]))); _for_each_inner!((18, GPIO18(_2 => U1RXD) (_3 => CLK_OUT3) ([Input]
461 [Output]))); _for_each_inner!((19, GPIO19() (_2 => U1RTS _3 => CLK_OUT2) ([Input]
462 [Output]))); _for_each_inner!((20, GPIO20(_2 => U1CTS) (_3 => CLK_OUT1) ([Input]
463 [Output]))); _for_each_inner!((21, GPIO21() () ([Input] [Output])));
464 _for_each_inner!((26, GPIO26() (_0 => SPICS1) ([Input] [Output])));
465 _for_each_inner!((27, GPIO27(_0 => SPIHD) (_0 => SPIHD) ([Input] [Output])));
466 _for_each_inner!((28, GPIO28(_0 => SPIWP) (_0 => SPIWP) ([Input] [Output])));
467 _for_each_inner!((29, GPIO29() (_0 => SPICS0) ([Input] [Output])));
468 _for_each_inner!((30, GPIO30() (_0 => SPICLK) ([Input] [Output])));
469 _for_each_inner!((31, GPIO31(_0 => SPIQ) (_0 => SPIQ) ([Input] [Output])));
470 _for_each_inner!((32, GPIO32(_0 => SPID) (_0 => SPID) ([Input] [Output])));
471 _for_each_inner!((33, GPIO33(_2 => FSPIHD _3 => SUBSPIHD) (_2 => FSPIHD _3 =>
472 SUBSPIHD) ([Input] [Output]))); _for_each_inner!((34, GPIO34(_2 => FSPICS0) (_2
473 => FSPICS0 _3 => SUBSPICS0) ([Input] [Output]))); _for_each_inner!((35, GPIO35(_2
474 => FSPID _3 => SUBSPID) (_2 => FSPID _3 => SUBSPID) ([Input] [Output])));
475 _for_each_inner!((36, GPIO36(_2 => FSPICLK) (_2 => FSPICLK _3 => SUBSPICLK)
476 ([Input] [Output]))); _for_each_inner!((37, GPIO37(_2 => FSPIQ _3 => SUBSPIQ _4
477 => SPIDQS) (_2 => FSPIQ _3 => SUBSPIQ _4 => SPIDQS) ([Input] [Output])));
478 _for_each_inner!((38, GPIO38(_2 => FSPIWP _3 => SUBSPIWP) (_2 => FSPIWP _3 =>
479 SUBSPIWP) ([Input] [Output]))); _for_each_inner!((39, GPIO39(_0 => MTCK) (_2 =>
480 CLK_OUT3 _3 => SUBSPICS1) ([Input] [Output]))); _for_each_inner!((40, GPIO40()
481 (_0 => MTDO _2 => CLK_OUT2) ([Input] [Output]))); _for_each_inner!((41, GPIO41(_0
482 => MTDI) (_2 => CLK_OUT1) ([Input] [Output]))); _for_each_inner!((42, GPIO42(_0
483 => MTMS) () ([Input] [Output]))); _for_each_inner!((43, GPIO43() (_0 => U0TXD _2
484 => CLK_OUT1) ([Input] [Output]))); _for_each_inner!((44, GPIO44(_0 => U0RXD) (_2
485 => CLK_OUT2) ([Input] [Output]))); _for_each_inner!((45, GPIO45() () ([Input]
486 [Output]))); _for_each_inner!((46, GPIO46() () ([Input] [Output])));
487 _for_each_inner!((all(0, GPIO0() () ([Input] [Output])), (1, GPIO1() () ([Input]
488 [Output])), (2, GPIO2() () ([Input] [Output])), (3, GPIO3() () ([Input]
489 [Output])), (4, GPIO4() () ([Input] [Output])), (5, GPIO5() () ([Input]
490 [Output])), (6, GPIO6() () ([Input] [Output])), (7, GPIO7() () ([Input]
491 [Output])), (8, GPIO8() (_3 => SUBSPICS1) ([Input] [Output])), (9, GPIO9(_3 =>
492 SUBSPIHD _4 => FSPIHD) (_3 => SUBSPIHD _4 => FSPIHD) ([Input] [Output])), (10,
493 GPIO10(_2 => FSPIIO4 _4 => FSPICS0) (_2 => FSPIIO4 _3 => SUBSPICS0 _4 => FSPICS0)
494 ([Input] [Output])), (11, GPIO11(_2 => FSPIIO5 _3 => SUBSPID _4 => FSPID) (_2 =>
495 FSPIIO5 _3 => SUBSPID _4 => FSPID) ([Input] [Output])), (12, GPIO12(_2 => FSPIIO6
496 _4 => FSPICLK) (_2 => FSPIIO6 _3 => SUBSPICLK _4 => FSPICLK) ([Input] [Output])),
497 (13, GPIO13(_2 => FSPIIO7 _3 => SUBSPIQ _4 => FSPIQ) (_2 => FSPIIO7 _3 => SUBSPIQ
498 _4 => FSPIQ) ([Input] [Output])), (14, GPIO14(_3 => SUBSPIWP _4 => FSPIWP) (_2 =>
499 FSPIDQS _3 => SUBSPIWP _4 => FSPIWP) ([Input] [Output])), (15, GPIO15() (_2 =>
500 U0RTS) ([Input] [Output])), (16, GPIO16(_2 => U0CTS) () ([Input] [Output])), (17,
501 GPIO17() (_2 => U1TXD) ([Input] [Output])), (18, GPIO18(_2 => U1RXD) (_3 =>
502 CLK_OUT3) ([Input] [Output])), (19, GPIO19() (_2 => U1RTS _3 => CLK_OUT2)
503 ([Input] [Output])), (20, GPIO20(_2 => U1CTS) (_3 => CLK_OUT1) ([Input]
504 [Output])), (21, GPIO21() () ([Input] [Output])), (26, GPIO26() (_0 => SPICS1)
505 ([Input] [Output])), (27, GPIO27(_0 => SPIHD) (_0 => SPIHD) ([Input] [Output])),
506 (28, GPIO28(_0 => SPIWP) (_0 => SPIWP) ([Input] [Output])), (29, GPIO29() (_0 =>
507 SPICS0) ([Input] [Output])), (30, GPIO30() (_0 => SPICLK) ([Input] [Output])),
508 (31, GPIO31(_0 => SPIQ) (_0 => SPIQ) ([Input] [Output])), (32, GPIO32(_0 => SPID)
509 (_0 => SPID) ([Input] [Output])), (33, GPIO33(_2 => FSPIHD _3 => SUBSPIHD) (_2 =>
510 FSPIHD _3 => SUBSPIHD) ([Input] [Output])), (34, GPIO34(_2 => FSPICS0) (_2 =>
511 FSPICS0 _3 => SUBSPICS0) ([Input] [Output])), (35, GPIO35(_2 => FSPID _3 =>
512 SUBSPID) (_2 => FSPID _3 => SUBSPID) ([Input] [Output])), (36, GPIO36(_2 =>
513 FSPICLK) (_2 => FSPICLK _3 => SUBSPICLK) ([Input] [Output])), (37, GPIO37(_2 =>
514 FSPIQ _3 => SUBSPIQ _4 => SPIDQS) (_2 => FSPIQ _3 => SUBSPIQ _4 => SPIDQS)
515 ([Input] [Output])), (38, GPIO38(_2 => FSPIWP _3 => SUBSPIWP) (_2 => FSPIWP _3 =>
516 SUBSPIWP) ([Input] [Output])), (39, GPIO39(_0 => MTCK) (_2 => CLK_OUT3 _3 =>
517 SUBSPICS1) ([Input] [Output])), (40, GPIO40() (_0 => MTDO _2 => CLK_OUT2)
518 ([Input] [Output])), (41, GPIO41(_0 => MTDI) (_2 => CLK_OUT1) ([Input]
519 [Output])), (42, GPIO42(_0 => MTMS) () ([Input] [Output])), (43, GPIO43() (_0 =>
520 U0TXD _2 => CLK_OUT1) ([Input] [Output])), (44, GPIO44(_0 => U0RXD) (_2 =>
521 CLK_OUT2) ([Input] [Output])), (45, GPIO45() () ([Input] [Output])), (46,
522 GPIO46() () ([Input] [Output]))));
523 };
524}
525#[macro_export]
552#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
553macro_rules! for_each_analog_function {
554 ($($pattern:tt => $code:tt;)*) => {
555 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
556 _for_each_inner!((TOUCH1, GPIO1)); _for_each_inner!((ADC1_CH0, GPIO1));
557 _for_each_inner!((TOUCH2, GPIO2)); _for_each_inner!((ADC1_CH1, GPIO2));
558 _for_each_inner!((TOUCH3, GPIO3)); _for_each_inner!((ADC1_CH2, GPIO3));
559 _for_each_inner!((TOUCH4, GPIO4)); _for_each_inner!((ADC1_CH3, GPIO4));
560 _for_each_inner!((TOUCH5, GPIO5)); _for_each_inner!((ADC1_CH4, GPIO5));
561 _for_each_inner!((TOUCH6, GPIO6)); _for_each_inner!((ADC1_CH5, GPIO6));
562 _for_each_inner!((TOUCH7, GPIO7)); _for_each_inner!((ADC1_CH6, GPIO7));
563 _for_each_inner!((TOUCH8, GPIO8)); _for_each_inner!((ADC1_CH7, GPIO8));
564 _for_each_inner!((TOUCH9, GPIO9)); _for_each_inner!((ADC1_CH8, GPIO9));
565 _for_each_inner!((TOUCH10, GPIO10)); _for_each_inner!((ADC1_CH9, GPIO10));
566 _for_each_inner!((TOUCH11, GPIO11)); _for_each_inner!((ADC2_CH0, GPIO11));
567 _for_each_inner!((TOUCH12, GPIO12)); _for_each_inner!((ADC2_CH1, GPIO12));
568 _for_each_inner!((TOUCH13, GPIO13)); _for_each_inner!((ADC2_CH2, GPIO13));
569 _for_each_inner!((TOUCH14, GPIO14)); _for_each_inner!((ADC2_CH3, GPIO14));
570 _for_each_inner!((XTAL_32K_P, GPIO15)); _for_each_inner!((ADC2_CH4, GPIO15));
571 _for_each_inner!((XTAL_32K_N, GPIO16)); _for_each_inner!((ADC2_CH5, GPIO16));
572 _for_each_inner!((DAC_1, GPIO17)); _for_each_inner!((ADC2_CH6, GPIO17));
573 _for_each_inner!((DAC_2, GPIO18)); _for_each_inner!((ADC2_CH7, GPIO18));
574 _for_each_inner!((USB_DM, GPIO19)); _for_each_inner!((ADC2_CH8, GPIO19));
575 _for_each_inner!((USB_DP, GPIO20)); _for_each_inner!((ADC2_CH9, GPIO20));
576 _for_each_inner!(((TOUCH1, TOUCHn, 1), GPIO1)); _for_each_inner!(((ADC1_CH0,
577 ADCn_CHm, 1, 0), GPIO1)); _for_each_inner!(((TOUCH2, TOUCHn, 2), GPIO2));
578 _for_each_inner!(((ADC1_CH1, ADCn_CHm, 1, 1), GPIO2)); _for_each_inner!(((TOUCH3,
579 TOUCHn, 3), GPIO3)); _for_each_inner!(((ADC1_CH2, ADCn_CHm, 1, 2), GPIO3));
580 _for_each_inner!(((TOUCH4, TOUCHn, 4), GPIO4)); _for_each_inner!(((ADC1_CH3,
581 ADCn_CHm, 1, 3), GPIO4)); _for_each_inner!(((TOUCH5, TOUCHn, 5), GPIO5));
582 _for_each_inner!(((ADC1_CH4, ADCn_CHm, 1, 4), GPIO5)); _for_each_inner!(((TOUCH6,
583 TOUCHn, 6), GPIO6)); _for_each_inner!(((ADC1_CH5, ADCn_CHm, 1, 5), GPIO6));
584 _for_each_inner!(((TOUCH7, TOUCHn, 7), GPIO7)); _for_each_inner!(((ADC1_CH6,
585 ADCn_CHm, 1, 6), GPIO7)); _for_each_inner!(((TOUCH8, TOUCHn, 8), GPIO8));
586 _for_each_inner!(((ADC1_CH7, ADCn_CHm, 1, 7), GPIO8)); _for_each_inner!(((TOUCH9,
587 TOUCHn, 9), GPIO9)); _for_each_inner!(((ADC1_CH8, ADCn_CHm, 1, 8), GPIO9));
588 _for_each_inner!(((TOUCH10, TOUCHn, 10), GPIO10)); _for_each_inner!(((ADC1_CH9,
589 ADCn_CHm, 1, 9), GPIO10)); _for_each_inner!(((TOUCH11, TOUCHn, 11), GPIO11));
590 _for_each_inner!(((ADC2_CH0, ADCn_CHm, 2, 0), GPIO11));
591 _for_each_inner!(((TOUCH12, TOUCHn, 12), GPIO12)); _for_each_inner!(((ADC2_CH1,
592 ADCn_CHm, 2, 1), GPIO12)); _for_each_inner!(((TOUCH13, TOUCHn, 13), GPIO13));
593 _for_each_inner!(((ADC2_CH2, ADCn_CHm, 2, 2), GPIO13));
594 _for_each_inner!(((TOUCH14, TOUCHn, 14), GPIO14)); _for_each_inner!(((ADC2_CH3,
595 ADCn_CHm, 2, 3), GPIO14)); _for_each_inner!(((ADC2_CH4, ADCn_CHm, 2, 4),
596 GPIO15)); _for_each_inner!(((ADC2_CH5, ADCn_CHm, 2, 5), GPIO16));
597 _for_each_inner!(((DAC_1, DAC_n, 1), GPIO17)); _for_each_inner!(((ADC2_CH6,
598 ADCn_CHm, 2, 6), GPIO17)); _for_each_inner!(((DAC_2, DAC_n, 2), GPIO18));
599 _for_each_inner!(((ADC2_CH7, ADCn_CHm, 2, 7), GPIO18));
600 _for_each_inner!(((ADC2_CH8, ADCn_CHm, 2, 8), GPIO19));
601 _for_each_inner!(((ADC2_CH9, ADCn_CHm, 2, 9), GPIO20));
602 _for_each_inner!((all(TOUCH1, GPIO1), (ADC1_CH0, GPIO1), (TOUCH2, GPIO2),
603 (ADC1_CH1, GPIO2), (TOUCH3, GPIO3), (ADC1_CH2, GPIO3), (TOUCH4, GPIO4),
604 (ADC1_CH3, GPIO4), (TOUCH5, GPIO5), (ADC1_CH4, GPIO5), (TOUCH6, GPIO6),
605 (ADC1_CH5, GPIO6), (TOUCH7, GPIO7), (ADC1_CH6, GPIO7), (TOUCH8, GPIO8),
606 (ADC1_CH7, GPIO8), (TOUCH9, GPIO9), (ADC1_CH8, GPIO9), (TOUCH10, GPIO10),
607 (ADC1_CH9, GPIO10), (TOUCH11, GPIO11), (ADC2_CH0, GPIO11), (TOUCH12, GPIO12),
608 (ADC2_CH1, GPIO12), (TOUCH13, GPIO13), (ADC2_CH2, GPIO13), (TOUCH14, GPIO14),
609 (ADC2_CH3, GPIO14), (XTAL_32K_P, GPIO15), (ADC2_CH4, GPIO15), (XTAL_32K_N,
610 GPIO16), (ADC2_CH5, GPIO16), (DAC_1, GPIO17), (ADC2_CH6, GPIO17), (DAC_2,
611 GPIO18), (ADC2_CH7, GPIO18), (USB_DM, GPIO19), (ADC2_CH8, GPIO19), (USB_DP,
612 GPIO20), (ADC2_CH9, GPIO20))); _for_each_inner!((all_expanded((TOUCH1, TOUCHn,
613 1), GPIO1), ((ADC1_CH0, ADCn_CHm, 1, 0), GPIO1), ((TOUCH2, TOUCHn, 2), GPIO2),
614 ((ADC1_CH1, ADCn_CHm, 1, 1), GPIO2), ((TOUCH3, TOUCHn, 3), GPIO3), ((ADC1_CH2,
615 ADCn_CHm, 1, 2), GPIO3), ((TOUCH4, TOUCHn, 4), GPIO4), ((ADC1_CH3, ADCn_CHm, 1,
616 3), GPIO4), ((TOUCH5, TOUCHn, 5), GPIO5), ((ADC1_CH4, ADCn_CHm, 1, 4), GPIO5),
617 ((TOUCH6, TOUCHn, 6), GPIO6), ((ADC1_CH5, ADCn_CHm, 1, 5), GPIO6), ((TOUCH7,
618 TOUCHn, 7), GPIO7), ((ADC1_CH6, ADCn_CHm, 1, 6), GPIO7), ((TOUCH8, TOUCHn, 8),
619 GPIO8), ((ADC1_CH7, ADCn_CHm, 1, 7), GPIO8), ((TOUCH9, TOUCHn, 9), GPIO9),
620 ((ADC1_CH8, ADCn_CHm, 1, 8), GPIO9), ((TOUCH10, TOUCHn, 10), GPIO10), ((ADC1_CH9,
621 ADCn_CHm, 1, 9), GPIO10), ((TOUCH11, TOUCHn, 11), GPIO11), ((ADC2_CH0, ADCn_CHm,
622 2, 0), GPIO11), ((TOUCH12, TOUCHn, 12), GPIO12), ((ADC2_CH1, ADCn_CHm, 2, 1),
623 GPIO12), ((TOUCH13, TOUCHn, 13), GPIO13), ((ADC2_CH2, ADCn_CHm, 2, 2), GPIO13),
624 ((TOUCH14, TOUCHn, 14), GPIO14), ((ADC2_CH3, ADCn_CHm, 2, 3), GPIO14),
625 ((ADC2_CH4, ADCn_CHm, 2, 4), GPIO15), ((ADC2_CH5, ADCn_CHm, 2, 5), GPIO16),
626 ((DAC_1, DAC_n, 1), GPIO17), ((ADC2_CH6, ADCn_CHm, 2, 6), GPIO17), ((DAC_2,
627 DAC_n, 2), GPIO18), ((ADC2_CH7, ADCn_CHm, 2, 7), GPIO18), ((ADC2_CH8, ADCn_CHm,
628 2, 8), GPIO19), ((ADC2_CH9, ADCn_CHm, 2, 9), GPIO20)));
629 };
630}
631#[macro_export]
658#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
659macro_rules! for_each_lp_function {
660 ($($pattern:tt => $code:tt;)*) => {
661 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
662 _for_each_inner!((RTC_GPIO0, GPIO0)); _for_each_inner!((RTC_GPIO1, GPIO1));
663 _for_each_inner!((RTC_GPIO2, GPIO2)); _for_each_inner!((RTC_GPIO3, GPIO3));
664 _for_each_inner!((RTC_GPIO4, GPIO4)); _for_each_inner!((RTC_GPIO5, GPIO5));
665 _for_each_inner!((RTC_GPIO6, GPIO6)); _for_each_inner!((RTC_GPIO7, GPIO7));
666 _for_each_inner!((RTC_GPIO8, GPIO8)); _for_each_inner!((RTC_GPIO9, GPIO9));
667 _for_each_inner!((RTC_GPIO10, GPIO10)); _for_each_inner!((RTC_GPIO11, GPIO11));
668 _for_each_inner!((RTC_GPIO12, GPIO12)); _for_each_inner!((RTC_GPIO13, GPIO13));
669 _for_each_inner!((RTC_GPIO14, GPIO14)); _for_each_inner!((RTC_GPIO15, GPIO15));
670 _for_each_inner!((RTC_GPIO16, GPIO16)); _for_each_inner!((RTC_GPIO17, GPIO17));
671 _for_each_inner!((RTC_GPIO18, GPIO18)); _for_each_inner!((RTC_GPIO19, GPIO19));
672 _for_each_inner!((RTC_GPIO20, GPIO20)); _for_each_inner!((RTC_GPIO21, GPIO21));
673 _for_each_inner!(((RTC_GPIO0, RTC_GPIOn, 0), GPIO0));
674 _for_each_inner!(((RTC_GPIO1, RTC_GPIOn, 1), GPIO1));
675 _for_each_inner!(((RTC_GPIO2, RTC_GPIOn, 2), GPIO2));
676 _for_each_inner!(((RTC_GPIO3, RTC_GPIOn, 3), GPIO3));
677 _for_each_inner!(((RTC_GPIO4, RTC_GPIOn, 4), GPIO4));
678 _for_each_inner!(((RTC_GPIO5, RTC_GPIOn, 5), GPIO5));
679 _for_each_inner!(((RTC_GPIO6, RTC_GPIOn, 6), GPIO6));
680 _for_each_inner!(((RTC_GPIO7, RTC_GPIOn, 7), GPIO7));
681 _for_each_inner!(((RTC_GPIO8, RTC_GPIOn, 8), GPIO8));
682 _for_each_inner!(((RTC_GPIO9, RTC_GPIOn, 9), GPIO9));
683 _for_each_inner!(((RTC_GPIO10, RTC_GPIOn, 10), GPIO10));
684 _for_each_inner!(((RTC_GPIO11, RTC_GPIOn, 11), GPIO11));
685 _for_each_inner!(((RTC_GPIO12, RTC_GPIOn, 12), GPIO12));
686 _for_each_inner!(((RTC_GPIO13, RTC_GPIOn, 13), GPIO13));
687 _for_each_inner!(((RTC_GPIO14, RTC_GPIOn, 14), GPIO14));
688 _for_each_inner!(((RTC_GPIO15, RTC_GPIOn, 15), GPIO15));
689 _for_each_inner!(((RTC_GPIO16, RTC_GPIOn, 16), GPIO16));
690 _for_each_inner!(((RTC_GPIO17, RTC_GPIOn, 17), GPIO17));
691 _for_each_inner!(((RTC_GPIO18, RTC_GPIOn, 18), GPIO18));
692 _for_each_inner!(((RTC_GPIO19, RTC_GPIOn, 19), GPIO19));
693 _for_each_inner!(((RTC_GPIO20, RTC_GPIOn, 20), GPIO20));
694 _for_each_inner!(((RTC_GPIO21, RTC_GPIOn, 21), GPIO21));
695 _for_each_inner!((all(RTC_GPIO0, GPIO0), (RTC_GPIO1, GPIO1), (RTC_GPIO2, GPIO2),
696 (RTC_GPIO3, GPIO3), (RTC_GPIO4, GPIO4), (RTC_GPIO5, GPIO5), (RTC_GPIO6, GPIO6),
697 (RTC_GPIO7, GPIO7), (RTC_GPIO8, GPIO8), (RTC_GPIO9, GPIO9), (RTC_GPIO10, GPIO10),
698 (RTC_GPIO11, GPIO11), (RTC_GPIO12, GPIO12), (RTC_GPIO13, GPIO13), (RTC_GPIO14,
699 GPIO14), (RTC_GPIO15, GPIO15), (RTC_GPIO16, GPIO16), (RTC_GPIO17, GPIO17),
700 (RTC_GPIO18, GPIO18), (RTC_GPIO19, GPIO19), (RTC_GPIO20, GPIO20), (RTC_GPIO21,
701 GPIO21))); _for_each_inner!((all_expanded((RTC_GPIO0, RTC_GPIOn, 0), GPIO0),
702 ((RTC_GPIO1, RTC_GPIOn, 1), GPIO1), ((RTC_GPIO2, RTC_GPIOn, 2), GPIO2),
703 ((RTC_GPIO3, RTC_GPIOn, 3), GPIO3), ((RTC_GPIO4, RTC_GPIOn, 4), GPIO4),
704 ((RTC_GPIO5, RTC_GPIOn, 5), GPIO5), ((RTC_GPIO6, RTC_GPIOn, 6), GPIO6),
705 ((RTC_GPIO7, RTC_GPIOn, 7), GPIO7), ((RTC_GPIO8, RTC_GPIOn, 8), GPIO8),
706 ((RTC_GPIO9, RTC_GPIOn, 9), GPIO9), ((RTC_GPIO10, RTC_GPIOn, 10), GPIO10),
707 ((RTC_GPIO11, RTC_GPIOn, 11), GPIO11), ((RTC_GPIO12, RTC_GPIOn, 12), GPIO12),
708 ((RTC_GPIO13, RTC_GPIOn, 13), GPIO13), ((RTC_GPIO14, RTC_GPIOn, 14), GPIO14),
709 ((RTC_GPIO15, RTC_GPIOn, 15), GPIO15), ((RTC_GPIO16, RTC_GPIOn, 16), GPIO16),
710 ((RTC_GPIO17, RTC_GPIOn, 17), GPIO17), ((RTC_GPIO18, RTC_GPIOn, 18), GPIO18),
711 ((RTC_GPIO19, RTC_GPIOn, 19), GPIO19), ((RTC_GPIO20, RTC_GPIOn, 20), GPIO20),
712 ((RTC_GPIO21, RTC_GPIOn, 21), GPIO21)));
713 };
714}
715#[macro_export]
719#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
720macro_rules! define_io_mux_signals {
721 () => {
722 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
723 #[derive(Debug, PartialEq, Copy, Clone)]
724 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
725 #[doc(hidden)]
726 pub enum InputSignal {
727 SPIQ = 0,
728 SPID = 1,
729 SPIHD = 2,
730 SPIWP = 3,
731 SPID4 = 7,
732 SPID5 = 8,
733 SPID6 = 9,
734 SPID7 = 10,
735 SPIDQS = 11,
736 U0RXD = 14,
737 U0CTS = 15,
738 U0DSR = 16,
739 U1RXD = 17,
740 U1CTS = 18,
741 U1DSR = 21,
742 I2S0O_BCK = 23,
743 I2S0O_WS = 25,
744 I2S0I_BCK = 27,
745 I2S0I_WS = 28,
746 I2CEXT0_SCL = 29,
747 I2CEXT0_SDA = 30,
748 PCNT0_SIG_CH0 = 39,
749 PCNT0_SIG_CH1 = 40,
750 PCNT0_CTRL_CH0 = 41,
751 PCNT0_CTRL_CH1 = 42,
752 PCNT1_SIG_CH0 = 43,
753 PCNT1_SIG_CH1 = 44,
754 PCNT1_CTRL_CH0 = 45,
755 PCNT1_CTRL_CH1 = 46,
756 PCNT2_SIG_CH0 = 47,
757 PCNT2_SIG_CH1 = 48,
758 PCNT2_CTRL_CH0 = 49,
759 PCNT2_CTRL_CH1 = 50,
760 PCNT3_SIG_CH0 = 51,
761 PCNT3_SIG_CH1 = 52,
762 PCNT3_CTRL_CH0 = 53,
763 PCNT3_CTRL_CH1 = 54,
764 USB_EXTPHY_VP = 61,
765 USB_EXTPHY_VM = 62,
766 USB_EXTPHY_RCV = 63,
767 USB_OTG_IDDIG = 64,
768 USB_OTG_AVALID = 65,
769 USB_SRP_BVALID = 66,
770 USB_OTG_VBUSVALID = 67,
771 USB_SRP_SESSEND = 68,
772 SPI3_CLK = 72,
773 SPI3_Q = 73,
774 SPI3_D = 74,
775 SPI3_HD = 75,
776 SPI3_CS0 = 76,
777 RMT_SIG_0 = 83,
778 RMT_SIG_1 = 84,
779 RMT_SIG_2 = 85,
780 RMT_SIG_3 = 86,
781 I2CEXT1_SCL = 95,
782 I2CEXT1_SDA = 96,
783 FSPICLK = 108,
784 FSPIQ = 109,
785 FSPID = 110,
786 FSPIHD = 111,
787 FSPIWP = 112,
788 FSPIIO4 = 113,
789 FSPIIO5 = 114,
790 FSPIIO6 = 115,
791 FSPIIO7 = 116,
792 FSPICS0 = 117,
793 TWAI_RX = 123,
794 SUBSPIQ = 127,
795 SUBSPID = 128,
796 SUBSPIHD = 129,
797 SUBSPIWP = 130,
798 I2S0I_DATA_IN15 = 158,
799 SUBSPID4 = 167,
800 SUBSPID5 = 168,
801 SUBSPID6 = 169,
802 SUBSPID7 = 170,
803 SUBSPIDQS = 171,
804 PCMFSYNC = 203,
805 PCMCLK = 204,
806 PRO_ALONEGPIO_IN0 = 235,
807 PRO_ALONEGPIO_IN1 = 236,
808 PRO_ALONEGPIO_IN2 = 237,
809 PRO_ALONEGPIO_IN3 = 238,
810 PRO_ALONEGPIO_IN4 = 239,
811 PRO_ALONEGPIO_IN5 = 240,
812 PRO_ALONEGPIO_IN6 = 241,
813 PRO_ALONEGPIO_IN7 = 242,
814 MTDI,
815 MTCK,
816 MTMS,
817 }
818 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
819 #[derive(Debug, PartialEq, Copy, Clone)]
820 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
821 #[doc(hidden)]
822 pub enum OutputSignal {
823 SPIQ = 0,
824 SPID = 1,
825 SPIHD = 2,
826 SPIWP = 3,
827 SPICLK = 4,
828 SPICS0 = 5,
829 SPICS1 = 6,
830 SPID4 = 7,
831 SPID5 = 8,
832 SPID6 = 9,
833 SPID7 = 10,
834 SPIDQS = 11,
835 U0TXD = 14,
836 U0RTS = 15,
837 U0DTR = 16,
838 U1TXD = 17,
839 U1RTS = 18,
840 U1DTR = 21,
841 I2S0O_BCK = 23,
842 I2S0O_WS = 25,
843 I2S0I_BCK = 27,
844 I2S0I_WS = 28,
845 I2CEXT0_SCL = 29,
846 I2CEXT0_SDA = 30,
847 SDIO_TOHOST_INT = 31,
848 USB_EXTPHY_OEN = 61,
849 USB_EXTPHY_VPO = 63,
850 USB_EXTPHY_VMO = 64,
851 SPI3_CLK = 72,
852 SPI3_Q = 73,
853 SPI3_D = 74,
854 SPI3_HD = 75,
855 SPI3_CS0 = 76,
856 SPI3_CS1 = 77,
857 SPI3_CS2 = 78,
858 LEDC_LS_SIG0 = 79,
859 LEDC_LS_SIG1 = 80,
860 LEDC_LS_SIG2 = 81,
861 LEDC_LS_SIG3 = 82,
862 LEDC_LS_SIG4 = 83,
863 LEDC_LS_SIG5 = 84,
864 LEDC_LS_SIG6 = 85,
865 LEDC_LS_SIG7 = 86,
866 RMT_SIG_0 = 87,
867 RMT_SIG_1 = 88,
868 RMT_SIG_2 = 89,
869 RMT_SIG_3 = 90,
870 I2CEXT1_SCL = 95,
871 I2CEXT1_SDA = 96,
872 GPIO_SD0 = 100,
873 GPIO_SD1 = 101,
874 GPIO_SD2 = 102,
875 GPIO_SD3 = 103,
876 GPIO_SD4 = 104,
877 GPIO_SD5 = 105,
878 GPIO_SD6 = 106,
879 GPIO_SD7 = 107,
880 FSPICLK = 108,
881 FSPIQ = 109,
882 FSPID = 110,
883 FSPIHD = 111,
884 FSPIWP = 112,
885 FSPIIO4 = 113,
886 FSPIIO5 = 114,
887 FSPIIO6 = 115,
888 FSPIIO7 = 116,
889 FSPICS0 = 117,
890 FSPICS1 = 118,
891 FSPICS2 = 119,
892 FSPICS3 = 120,
893 FSPICS4 = 121,
894 FSPICS5 = 122,
895 TWAI_TX = 123,
896 SUBSPICLK = 126,
897 SUBSPIQ = 127,
898 SUBSPID = 128,
899 SUBSPIHD = 129,
900 SUBSPIWP = 130,
901 SUBSPICS0 = 131,
902 SUBSPICS1 = 132,
903 FSPIDQS = 133,
904 FSPI_HSYNC = 134,
905 FSPI_VSYNC = 135,
906 FSPI_DE = 136,
907 FSPICD = 137,
908 SPI3_CD = 139,
909 SPI3_DQS = 140,
910 I2S0O_DATA_OUT23 = 166,
911 SUBSPID4 = 167,
912 SUBSPID5 = 168,
913 SUBSPID6 = 169,
914 SUBSPID7 = 170,
915 SUBSPIDQS = 171,
916 PCMFSYNC = 209,
917 PCMCLK = 210,
918 PRO_ALONEGPIO_OUT0 = 235,
919 PRO_ALONEGPIO_OUT1 = 236,
920 PRO_ALONEGPIO_OUT2 = 237,
921 PRO_ALONEGPIO_OUT3 = 238,
922 PRO_ALONEGPIO_OUT4 = 239,
923 PRO_ALONEGPIO_OUT5 = 240,
924 PRO_ALONEGPIO_OUT6 = 241,
925 PRO_ALONEGPIO_OUT7 = 242,
926 CLK_I2S = 251,
927 GPIO = 256,
928 CLK_OUT1,
929 CLK_OUT2,
930 CLK_OUT3,
931 MTDO,
932 }
933 };
934}
935#[macro_export]
948#[expect(clippy::crate_in_macro_def)]
949#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
950macro_rules! define_io_mux_reg {
951 () => {
952 pub(crate) fn io_mux_reg(gpio_num: u8) -> &'static crate::pac::io_mux::GPIO {
953 crate::peripherals::IO_MUX::regs().gpio(gpio_num as usize)
954 }
955 };
956}