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 "esp32"
18 };
19}
20#[macro_export]
22#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
23macro_rules! property {
24 ("chip") => {
25 "esp32"
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_technical_reference_manual_en.pdf"
38 };
39 ("gpio.has_bank_1") => {
40 true
41 };
42 ("gpio.gpio_function") => {
43 2
44 };
45 ("gpio.gpio_function", str) => {
46 stringify!(2)
47 };
48 ("gpio.constant_0_input") => {
49 48
50 };
51 ("gpio.constant_0_input", str) => {
52 stringify!(48)
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 true
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 206
71 };
72 ("gpio.input_signal_max", str) => {
73 stringify!(206)
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 false
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 false
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 1048575
119 };
120 ("i2c_master.max_bus_timeout", str) => {
121 stringify!(1048575)
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 3
137 };
138 ("interrupts.status_registers", str) => {
139 stringify!(3)
140 };
141 ("rmt.ram_start") => {
142 1073047552
143 };
144 ("rmt.ram_start", str) => {
145 stringify!(1073047552)
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 false
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 1073405952..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!((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, HSPICLK[HSPICS0, HSPICS1, HSPICS2] [HSPID, HSPIQ,
253 HSPIWP, HSPIHD], true)); _for_each_inner!((SPI3, Spi3, VSPICLK[VSPICS0, VSPICS1,
254 VSPICS2] [VSPID, VSPIQ, VSPIWP, VSPIHD], true)); _for_each_inner!((all(SPI2,
255 Spi2, HSPICLK[HSPICS0, HSPICS1, HSPICS2] [HSPID, HSPIQ, HSPIWP, HSPIHD], true),
256 (SPI3, Spi3, VSPICLK[VSPICS0, VSPICS1, VSPICS2] [VSPID, VSPIQ, VSPIWP, VSPIHD],
257 true)));
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, HSPICLK, HSPID, HSPIQ, HSPICS0));
282 _for_each_inner!((SPI3, Spi3, VSPICLK, VSPID, VSPIQ, VSPICS0));
283 _for_each_inner!((all(SPI2, Spi2, HSPICLK, HSPID, HSPIQ, HSPICS0), (SPI3, Spi3,
284 VSPICLK, VSPID, VSPIQ, VSPICS0)));
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!((GPIO22 <= virtual())); _for_each_inner!((GPIO23 <= virtual()));
304 _for_each_inner!((GPIO25 <= virtual())); _for_each_inner!((GPIO26 <= virtual()));
305 _for_each_inner!((GPIO27 <= virtual())); _for_each_inner!((GPIO32 <= virtual()));
306 _for_each_inner!((GPIO33 <= virtual())); _for_each_inner!((GPIO34 <= virtual()));
307 _for_each_inner!((GPIO35 <= virtual())); _for_each_inner!((GPIO36 <= virtual()));
308 _for_each_inner!((GPIO37 <= virtual())); _for_each_inner!((GPIO38 <= virtual()));
309 _for_each_inner!((GPIO39 <= virtual())); _for_each_inner!((AES <= AES()
310 (unstable))); _for_each_inner!((APB_CTRL <= APB_CTRL() (unstable)));
311 _for_each_inner!((BB <= BB() (unstable))); _for_each_inner!((DPORT <= DPORT()
312 (unstable))); _for_each_inner!((SYSTEM <= DPORT() (unstable)));
313 _for_each_inner!((EFUSE <= EFUSE() (unstable))); _for_each_inner!((EMAC_DMA <=
314 EMAC_DMA() (unstable))); _for_each_inner!((EMAC_EXT <= EMAC_EXT() (unstable)));
315 _for_each_inner!((EMAC_MAC <= EMAC_MAC() (unstable)));
316 _for_each_inner!((FLASH_ENCRYPTION <= FLASH_ENCRYPTION() (unstable)));
317 _for_each_inner!((FRC_TIMER <= FRC_TIMER() (unstable))); _for_each_inner!((GPIO
318 <= GPIO() (unstable))); _for_each_inner!((GPIO_SD <= GPIO_SD() (unstable)));
319 _for_each_inner!((HINF <= HINF() (unstable))); _for_each_inner!((I2C0 <=
320 I2C0(I2C_EXT0 : { bind_peri_interrupt, enable_peri_interrupt,
321 disable_peri_interrupt }))); _for_each_inner!((I2C1 <= I2C1(I2C_EXT1 : {
322 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })));
323 _for_each_inner!((I2S0 <= I2S0(I2S0 : { bind_peri_interrupt,
324 enable_peri_interrupt, disable_peri_interrupt }) (unstable)));
325 _for_each_inner!((I2S1 <= I2S1(I2S1 : { bind_peri_interrupt,
326 enable_peri_interrupt, disable_peri_interrupt }) (unstable)));
327 _for_each_inner!((IO_MUX <= IO_MUX() (unstable))); _for_each_inner!((LEDC <=
328 LEDC() (unstable))); _for_each_inner!((MCPWM0 <= MCPWM0() (unstable)));
329 _for_each_inner!((MCPWM1 <= MCPWM1() (unstable))); _for_each_inner!((NRX <= NRX()
330 (unstable))); _for_each_inner!((PCNT <= PCNT() (unstable)));
331 _for_each_inner!((RMT <= RMT() (unstable))); _for_each_inner!((RNG <= RNG()
332 (unstable))); _for_each_inner!((RSA <= RSA() (unstable))); _for_each_inner!((LPWR
333 <= RTC_CNTL() (unstable))); _for_each_inner!((RTC_I2C <= RTC_I2C() (unstable)));
334 _for_each_inner!((RTC_IO <= RTC_IO() (unstable))); _for_each_inner!((SDHOST <=
335 SDHOST() (unstable))); _for_each_inner!((SENS <= SENS() (unstable)));
336 _for_each_inner!((SHA <= SHA() (unstable))); _for_each_inner!((SLC <= SLC()
337 (unstable))); _for_each_inner!((SLCHOST <= SLCHOST() (unstable)));
338 _for_each_inner!((SPI0 <= SPI0() (unstable))); _for_each_inner!((SPI1 <= SPI1()
339 (unstable))); _for_each_inner!((SPI2 <= SPI2(SPI2_DMA : { bind_dma_interrupt,
340 enable_dma_interrupt, disable_dma_interrupt }, SPI2 : { bind_peri_interrupt,
341 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((SPI3 <=
342 SPI3(SPI3_DMA : { bind_dma_interrupt, enable_dma_interrupt, disable_dma_interrupt
343 }, SPI3 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt
344 }))); _for_each_inner!((TIMG0 <= TIMG0() (unstable))); _for_each_inner!((TIMG1 <=
345 TIMG1() (unstable))); _for_each_inner!((TWAI0 <= TWAI0() (unstable)));
346 _for_each_inner!((UART0 <= UART0(UART0 : { bind_peri_interrupt,
347 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((UART1 <=
348 UART1(UART1 : { bind_peri_interrupt, enable_peri_interrupt,
349 disable_peri_interrupt }))); _for_each_inner!((UART2 <= UART2(UART2 : {
350 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })));
351 _for_each_inner!((UHCI0 <= UHCI0() (unstable))); _for_each_inner!((UHCI1 <=
352 UHCI1() (unstable))); _for_each_inner!((WIFI <= WIFI() (unstable)));
353 _for_each_inner!((DMA_SPI2 <= SPI2() (unstable))); _for_each_inner!((DMA_SPI3 <=
354 SPI3() (unstable))); _for_each_inner!((DMA_I2S0 <= I2S0() (unstable)));
355 _for_each_inner!((DMA_I2S1 <= I2S1() (unstable))); _for_each_inner!((ADC1 <=
356 virtual() (unstable))); _for_each_inner!((ADC2 <= virtual() (unstable)));
357 _for_each_inner!((BT <= virtual() (unstable))); _for_each_inner!((CPU_CTRL <=
358 virtual() (unstable))); _for_each_inner!((DAC1 <= virtual() (unstable)));
359 _for_each_inner!((DAC2 <= virtual() (unstable))); _for_each_inner!((PSRAM <=
360 virtual() (unstable))); _for_each_inner!((SW_INTERRUPT <= virtual() (unstable)));
361 _for_each_inner!((TOUCH <= virtual() (unstable))); _for_each_inner!((all(GPIO0 <=
362 virtual()), (GPIO1 <= virtual()), (GPIO2 <= virtual()), (GPIO3 <= virtual()),
363 (GPIO4 <= virtual()), (GPIO5 <= virtual()), (GPIO6 <= virtual()), (GPIO7 <=
364 virtual()), (GPIO8 <= virtual()), (GPIO9 <= virtual()), (GPIO10 <= virtual()),
365 (GPIO11 <= virtual()), (GPIO12 <= virtual()), (GPIO13 <= virtual()), (GPIO14 <=
366 virtual()), (GPIO15 <= virtual()), (GPIO16 <= virtual()), (GPIO17 <= virtual()),
367 (GPIO18 <= virtual()), (GPIO19 <= virtual()), (GPIO20 <= virtual()), (GPIO21 <=
368 virtual()), (GPIO22 <= virtual()), (GPIO23 <= virtual()), (GPIO25 <= virtual()),
369 (GPIO26 <= virtual()), (GPIO27 <= virtual()), (GPIO32 <= virtual()), (GPIO33 <=
370 virtual()), (GPIO34 <= virtual()), (GPIO35 <= virtual()), (GPIO36 <= virtual()),
371 (GPIO37 <= virtual()), (GPIO38 <= virtual()), (GPIO39 <= virtual()), (AES <=
372 AES() (unstable)), (APB_CTRL <= APB_CTRL() (unstable)), (BB <= BB() (unstable)),
373 (DPORT <= DPORT() (unstable)), (SYSTEM <= DPORT() (unstable)), (EFUSE <= EFUSE()
374 (unstable)), (EMAC_DMA <= EMAC_DMA() (unstable)), (EMAC_EXT <= EMAC_EXT()
375 (unstable)), (EMAC_MAC <= EMAC_MAC() (unstable)), (FLASH_ENCRYPTION <=
376 FLASH_ENCRYPTION() (unstable)), (FRC_TIMER <= FRC_TIMER() (unstable)), (GPIO <=
377 GPIO() (unstable)), (GPIO_SD <= GPIO_SD() (unstable)), (HINF <= HINF()
378 (unstable)), (I2C0 <= I2C0(I2C_EXT0 : { bind_peri_interrupt,
379 enable_peri_interrupt, disable_peri_interrupt })), (I2C1 <= I2C1(I2C_EXT1 : {
380 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (I2S0 <=
381 I2S0(I2S0 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt
382 }) (unstable)), (I2S1 <= I2S1(I2S1 : { bind_peri_interrupt,
383 enable_peri_interrupt, disable_peri_interrupt }) (unstable)), (IO_MUX <= IO_MUX()
384 (unstable)), (LEDC <= LEDC() (unstable)), (MCPWM0 <= MCPWM0() (unstable)),
385 (MCPWM1 <= MCPWM1() (unstable)), (NRX <= NRX() (unstable)), (PCNT <= PCNT()
386 (unstable)), (RMT <= RMT() (unstable)), (RNG <= RNG() (unstable)), (RSA <= RSA()
387 (unstable)), (LPWR <= RTC_CNTL() (unstable)), (RTC_I2C <= RTC_I2C() (unstable)),
388 (RTC_IO <= RTC_IO() (unstable)), (SDHOST <= SDHOST() (unstable)), (SENS <= SENS()
389 (unstable)), (SHA <= SHA() (unstable)), (SLC <= SLC() (unstable)), (SLCHOST <=
390 SLCHOST() (unstable)), (SPI0 <= SPI0() (unstable)), (SPI1 <= SPI1() (unstable)),
391 (SPI2 <= SPI2(SPI2_DMA : { bind_dma_interrupt, enable_dma_interrupt,
392 disable_dma_interrupt }, SPI2 : { bind_peri_interrupt, enable_peri_interrupt,
393 disable_peri_interrupt })), (SPI3 <= SPI3(SPI3_DMA : { bind_dma_interrupt,
394 enable_dma_interrupt, disable_dma_interrupt }, SPI3 : { bind_peri_interrupt,
395 enable_peri_interrupt, disable_peri_interrupt })), (TIMG0 <= TIMG0() (unstable)),
396 (TIMG1 <= TIMG1() (unstable)), (TWAI0 <= TWAI0() (unstable)), (UART0 <=
397 UART0(UART0 : { bind_peri_interrupt, enable_peri_interrupt,
398 disable_peri_interrupt })), (UART1 <= UART1(UART1 : { bind_peri_interrupt,
399 enable_peri_interrupt, disable_peri_interrupt })), (UART2 <= UART2(UART2 : {
400 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (UHCI0 <=
401 UHCI0() (unstable)), (UHCI1 <= UHCI1() (unstable)), (WIFI <= WIFI() (unstable)),
402 (DMA_SPI2 <= SPI2() (unstable)), (DMA_SPI3 <= SPI3() (unstable)), (DMA_I2S0 <=
403 I2S0() (unstable)), (DMA_I2S1 <= I2S1() (unstable)), (ADC1 <= virtual()
404 (unstable)), (ADC2 <= virtual() (unstable)), (BT <= virtual() (unstable)),
405 (CPU_CTRL <= virtual() (unstable)), (DAC1 <= virtual() (unstable)), (DAC2 <=
406 virtual() (unstable)), (PSRAM <= virtual() (unstable)), (SW_INTERRUPT <=
407 virtual() (unstable)), (TOUCH <= 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(_5 => EMAC_TX_CLK) (_1 => CLK_OUT1 _5 => EMAC_TX_CLK)
442 ([Input] [Output]))); _for_each_inner!((1, GPIO1(_5 => EMAC_RXD2) (_0 => U0TXD _1
443 => CLK_OUT3) ([Input] [Output]))); _for_each_inner!((2, GPIO2(_1 => HSPIWP _3 =>
444 HS2_DATA0 _4 => SD_DATA0) (_1 => HSPIWP _3 => HS2_DATA0 _4 => SD_DATA0) ([Input]
445 [Output]))); _for_each_inner!((3, GPIO3(_0 => U0RXD) (_1 => CLK_OUT2) ([Input]
446 [Output]))); _for_each_inner!((4, GPIO4(_1 => HSPIHD _3 => HS2_DATA1 _4 =>
447 SD_DATA1 _5 => EMAC_TX_ER) (_1 => HSPIHD _3 => HS2_DATA1 _4 => SD_DATA1 _5 =>
448 EMAC_TX_ER) ([Input] [Output]))); _for_each_inner!((5, GPIO5(_1 => VSPICS0 _3 =>
449 HS1_DATA6 _5 => EMAC_RX_CLK) (_1 => VSPICS0 _3 => HS1_DATA6) ([Input]
450 [Output]))); _for_each_inner!((6, GPIO6(_1 => SPICLK _4 => U1CTS) (_0 => SD_CLK
451 _1 => SPICLK _3 => HS1_CLK) ([Input] [Output]))); _for_each_inner!((7, GPIO7(_0
452 => SD_DATA0 _1 => SPIQ _3 => HS1_DATA0) (_0 => SD_DATA0 _1 => SPIQ _3 =>
453 HS1_DATA0 _4 => U2RTS) ([Input] [Output]))); _for_each_inner!((8, GPIO8(_0 =>
454 SD_DATA1 _1 => SPID _3 => HS1_DATA1 _4 => U2CTS) (_0 => SD_DATA1 _1 => SPID _3 =>
455 HS1_DATA1) ([Input] [Output]))); _for_each_inner!((9, GPIO9(_0 => SD_DATA2 _1 =>
456 SPIHD _3 => HS1_DATA2 _4 => U1RXD) (_0 => SD_DATA2 _1 => SPIHD _3 => HS1_DATA2)
457 ([Input] [Output]))); _for_each_inner!((10, GPIO10(_0 => SD_DATA3 _1 => SPIWP _3
458 => HS1_DATA3) (_0 => SD_DATA3 _1 => SPIWP _3 => HS1_DATA3 _4 => U1TXD) ([Input]
459 [Output]))); _for_each_inner!((11, GPIO11(_0 => SD_CMD _1 => SPICS0) (_0 =>
460 SD_CMD _1 => SPICS0 _3 => HS1_CMD _4 => U1RTS) ([Input] [Output])));
461 _for_each_inner!((12, GPIO12(_0 => MTDI _1 => HSPIQ _3 => HS2_DATA2 _4 =>
462 SD_DATA2) (_1 => HSPIQ _3 => HS2_DATA2 _4 => SD_DATA2 _5 => EMAC_TXD3) ([Input]
463 [Output]))); _for_each_inner!((13, GPIO13(_0 => MTCK _1 => HSPID _3 => HS2_DATA3
464 _4 => SD_DATA3 _5 => EMAC_RX_ER) (_1 => HSPID _3 => HS2_DATA3 _4 => SD_DATA3 _5
465 => EMAC_RX_ER) ([Input] [Output]))); _for_each_inner!((14, GPIO14(_0 => MTMS _1
466 => HSPICLK) (_1 => HSPICLK _3 => HS2_CLK _4 => SD_CLK _5 => EMAC_TXD2) ([Input]
467 [Output]))); _for_each_inner!((15, GPIO15(_1 => HSPICS0 _4 => SD_CMD _5 =>
468 EMAC_RXD3) (_0 => MTDO _1 => HSPICS0 _3 => HS2_CMD _4 => SD_CMD) ([Input]
469 [Output]))); _for_each_inner!((16, GPIO16(_3 => HS1_DATA4 _4 => U2RXD) (_3 =>
470 HS1_DATA4 _5 => EMAC_CLK_OUT) ([Input] [Output]))); _for_each_inner!((17,
471 GPIO17(_3 => HS1_DATA5) (_3 => HS1_DATA5 _4 => U2TXD _5 => EMAC_CLK_180) ([Input]
472 [Output]))); _for_each_inner!((18, GPIO18(_1 => VSPICLK _3 => HS1_DATA7) (_1 =>
473 VSPICLK _3 => HS1_DATA7) ([Input] [Output]))); _for_each_inner!((19, GPIO19(_1 =>
474 VSPIQ _3 => U0CTS) (_1 => VSPIQ _5 => EMAC_TXD0) ([Input] [Output])));
475 _for_each_inner!((20, GPIO20() () ([Input] [Output]))); _for_each_inner!((21,
476 GPIO21(_1 => VSPIHD) (_1 => VSPIHD _5 => EMAC_TX_EN) ([Input] [Output])));
477 _for_each_inner!((22, GPIO22(_1 => VSPIWP) (_1 => VSPIWP _3 => U0RTS _5 =>
478 EMAC_TXD1) ([Input] [Output]))); _for_each_inner!((23, GPIO23(_1 => VSPID) (_1 =>
479 VSPID _3 => HS1_STROBE) ([Input] [Output]))); _for_each_inner!((25, GPIO25(_5 =>
480 EMAC_RXD0) () ([Input] [Output]))); _for_each_inner!((26, GPIO26(_5 => EMAC_RXD1)
481 () ([Input] [Output]))); _for_each_inner!((27, GPIO27(_5 => EMAC_RX_DV) ()
482 ([Input] [Output]))); _for_each_inner!((32, GPIO32() () ([Input] [Output])));
483 _for_each_inner!((33, GPIO33() () ([Input] [Output]))); _for_each_inner!((34,
484 GPIO34() () ([Input] []))); _for_each_inner!((35, GPIO35() () ([Input] [])));
485 _for_each_inner!((36, GPIO36() () ([Input] []))); _for_each_inner!((37, GPIO37()
486 () ([Input] []))); _for_each_inner!((38, GPIO38() () ([Input] [])));
487 _for_each_inner!((39, GPIO39() () ([Input] []))); _for_each_inner!((all(0,
488 GPIO0(_5 => EMAC_TX_CLK) (_1 => CLK_OUT1 _5 => EMAC_TX_CLK) ([Input] [Output])),
489 (1, GPIO1(_5 => EMAC_RXD2) (_0 => U0TXD _1 => CLK_OUT3) ([Input] [Output])), (2,
490 GPIO2(_1 => HSPIWP _3 => HS2_DATA0 _4 => SD_DATA0) (_1 => HSPIWP _3 => HS2_DATA0
491 _4 => SD_DATA0) ([Input] [Output])), (3, GPIO3(_0 => U0RXD) (_1 => CLK_OUT2)
492 ([Input] [Output])), (4, GPIO4(_1 => HSPIHD _3 => HS2_DATA1 _4 => SD_DATA1 _5 =>
493 EMAC_TX_ER) (_1 => HSPIHD _3 => HS2_DATA1 _4 => SD_DATA1 _5 => EMAC_TX_ER)
494 ([Input] [Output])), (5, GPIO5(_1 => VSPICS0 _3 => HS1_DATA6 _5 => EMAC_RX_CLK)
495 (_1 => VSPICS0 _3 => HS1_DATA6) ([Input] [Output])), (6, GPIO6(_1 => SPICLK _4 =>
496 U1CTS) (_0 => SD_CLK _1 => SPICLK _3 => HS1_CLK) ([Input] [Output])), (7,
497 GPIO7(_0 => SD_DATA0 _1 => SPIQ _3 => HS1_DATA0) (_0 => SD_DATA0 _1 => SPIQ _3 =>
498 HS1_DATA0 _4 => U2RTS) ([Input] [Output])), (8, GPIO8(_0 => SD_DATA1 _1 => SPID
499 _3 => HS1_DATA1 _4 => U2CTS) (_0 => SD_DATA1 _1 => SPID _3 => HS1_DATA1) ([Input]
500 [Output])), (9, GPIO9(_0 => SD_DATA2 _1 => SPIHD _3 => HS1_DATA2 _4 => U1RXD) (_0
501 => SD_DATA2 _1 => SPIHD _3 => HS1_DATA2) ([Input] [Output])), (10, GPIO10(_0 =>
502 SD_DATA3 _1 => SPIWP _3 => HS1_DATA3) (_0 => SD_DATA3 _1 => SPIWP _3 => HS1_DATA3
503 _4 => U1TXD) ([Input] [Output])), (11, GPIO11(_0 => SD_CMD _1 => SPICS0) (_0 =>
504 SD_CMD _1 => SPICS0 _3 => HS1_CMD _4 => U1RTS) ([Input] [Output])), (12,
505 GPIO12(_0 => MTDI _1 => HSPIQ _3 => HS2_DATA2 _4 => SD_DATA2) (_1 => HSPIQ _3 =>
506 HS2_DATA2 _4 => SD_DATA2 _5 => EMAC_TXD3) ([Input] [Output])), (13, GPIO13(_0 =>
507 MTCK _1 => HSPID _3 => HS2_DATA3 _4 => SD_DATA3 _5 => EMAC_RX_ER) (_1 => HSPID _3
508 => HS2_DATA3 _4 => SD_DATA3 _5 => EMAC_RX_ER) ([Input] [Output])), (14, GPIO14(_0
509 => MTMS _1 => HSPICLK) (_1 => HSPICLK _3 => HS2_CLK _4 => SD_CLK _5 => EMAC_TXD2)
510 ([Input] [Output])), (15, GPIO15(_1 => HSPICS0 _4 => SD_CMD _5 => EMAC_RXD3) (_0
511 => MTDO _1 => HSPICS0 _3 => HS2_CMD _4 => SD_CMD) ([Input] [Output])), (16,
512 GPIO16(_3 => HS1_DATA4 _4 => U2RXD) (_3 => HS1_DATA4 _5 => EMAC_CLK_OUT) ([Input]
513 [Output])), (17, GPIO17(_3 => HS1_DATA5) (_3 => HS1_DATA5 _4 => U2TXD _5 =>
514 EMAC_CLK_180) ([Input] [Output])), (18, GPIO18(_1 => VSPICLK _3 => HS1_DATA7) (_1
515 => VSPICLK _3 => HS1_DATA7) ([Input] [Output])), (19, GPIO19(_1 => VSPIQ _3 =>
516 U0CTS) (_1 => VSPIQ _5 => EMAC_TXD0) ([Input] [Output])), (20, GPIO20() ()
517 ([Input] [Output])), (21, GPIO21(_1 => VSPIHD) (_1 => VSPIHD _5 => EMAC_TX_EN)
518 ([Input] [Output])), (22, GPIO22(_1 => VSPIWP) (_1 => VSPIWP _3 => U0RTS _5 =>
519 EMAC_TXD1) ([Input] [Output])), (23, GPIO23(_1 => VSPID) (_1 => VSPID _3 =>
520 HS1_STROBE) ([Input] [Output])), (25, GPIO25(_5 => EMAC_RXD0) () ([Input]
521 [Output])), (26, GPIO26(_5 => EMAC_RXD1) () ([Input] [Output])), (27, GPIO27(_5
522 => EMAC_RX_DV) () ([Input] [Output])), (32, GPIO32() () ([Input] [Output])), (33,
523 GPIO33() () ([Input] [Output])), (34, GPIO34() () ([Input] [])), (35, GPIO35() ()
524 ([Input] [])), (36, GPIO36() () ([Input] [])), (37, GPIO37() () ([Input] [])),
525 (38, GPIO38() () ([Input] [])), (39, GPIO39() () ([Input] []))));
526 };
527}
528#[macro_export]
555#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
556macro_rules! for_each_analog_function {
557 ($($pattern:tt => $code:tt;)*) => {
558 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
559 _for_each_inner!((ADC2_CH1, GPIO0)); _for_each_inner!((TOUCH1, GPIO0));
560 _for_each_inner!((ADC2_CH2, GPIO2)); _for_each_inner!((TOUCH2, GPIO2));
561 _for_each_inner!((ADC2_CH0, GPIO4)); _for_each_inner!((TOUCH0, GPIO4));
562 _for_each_inner!((ADC2_CH5, GPIO12)); _for_each_inner!((TOUCH5, GPIO12));
563 _for_each_inner!((ADC2_CH4, GPIO13)); _for_each_inner!((TOUCH4, GPIO13));
564 _for_each_inner!((ADC2_CH6, GPIO14)); _for_each_inner!((TOUCH6, GPIO14));
565 _for_each_inner!((ADC2_CH3, GPIO15)); _for_each_inner!((TOUCH3, GPIO15));
566 _for_each_inner!((DAC1, GPIO25)); _for_each_inner!((ADC2_CH8, GPIO25));
567 _for_each_inner!((DAC2, GPIO26)); _for_each_inner!((ADC2_CH9, GPIO26));
568 _for_each_inner!((ADC2_CH7, GPIO27)); _for_each_inner!((TOUCH7, GPIO27));
569 _for_each_inner!((XTAL_32K_P, GPIO32)); _for_each_inner!((ADC1_CH4, GPIO32));
570 _for_each_inner!((TOUCH9, GPIO32)); _for_each_inner!((XTAL_32K_N, GPIO33));
571 _for_each_inner!((ADC1_CH5, GPIO33)); _for_each_inner!((TOUCH8, GPIO33));
572 _for_each_inner!((ADC1_CH6, GPIO34)); _for_each_inner!((ADC1_CH7, GPIO35));
573 _for_each_inner!((ADC_H, GPIO36)); _for_each_inner!((ADC1_CH0, GPIO36));
574 _for_each_inner!((ADC_H, GPIO37)); _for_each_inner!((ADC1_CH1, GPIO37));
575 _for_each_inner!((ADC_H, GPIO38)); _for_each_inner!((ADC1_CH2, GPIO38));
576 _for_each_inner!((ADC_H, GPIO39)); _for_each_inner!((ADC1_CH3, GPIO39));
577 _for_each_inner!(((ADC2_CH1, ADCn_CHm, 2, 1), GPIO0)); _for_each_inner!(((TOUCH1,
578 TOUCHn, 1), GPIO0)); _for_each_inner!(((ADC2_CH2, ADCn_CHm, 2, 2), GPIO2));
579 _for_each_inner!(((TOUCH2, TOUCHn, 2), GPIO2)); _for_each_inner!(((ADC2_CH0,
580 ADCn_CHm, 2, 0), GPIO4)); _for_each_inner!(((TOUCH0, TOUCHn, 0), GPIO4));
581 _for_each_inner!(((ADC2_CH5, ADCn_CHm, 2, 5), GPIO12));
582 _for_each_inner!(((TOUCH5, TOUCHn, 5), GPIO12)); _for_each_inner!(((ADC2_CH4,
583 ADCn_CHm, 2, 4), GPIO13)); _for_each_inner!(((TOUCH4, TOUCHn, 4), GPIO13));
584 _for_each_inner!(((ADC2_CH6, ADCn_CHm, 2, 6), GPIO14));
585 _for_each_inner!(((TOUCH6, TOUCHn, 6), GPIO14)); _for_each_inner!(((ADC2_CH3,
586 ADCn_CHm, 2, 3), GPIO15)); _for_each_inner!(((TOUCH3, TOUCHn, 3), GPIO15));
587 _for_each_inner!(((DAC1, DACn, 1), GPIO25)); _for_each_inner!(((ADC2_CH8,
588 ADCn_CHm, 2, 8), GPIO25)); _for_each_inner!(((DAC2, DACn, 2), GPIO26));
589 _for_each_inner!(((ADC2_CH9, ADCn_CHm, 2, 9), GPIO26));
590 _for_each_inner!(((ADC2_CH7, ADCn_CHm, 2, 7), GPIO27));
591 _for_each_inner!(((TOUCH7, TOUCHn, 7), GPIO27)); _for_each_inner!(((ADC1_CH4,
592 ADCn_CHm, 1, 4), GPIO32)); _for_each_inner!(((TOUCH9, TOUCHn, 9), GPIO32));
593 _for_each_inner!(((ADC1_CH5, ADCn_CHm, 1, 5), GPIO33));
594 _for_each_inner!(((TOUCH8, TOUCHn, 8), GPIO33)); _for_each_inner!(((ADC1_CH6,
595 ADCn_CHm, 1, 6), GPIO34)); _for_each_inner!(((ADC1_CH7, ADCn_CHm, 1, 7),
596 GPIO35)); _for_each_inner!(((ADC1_CH0, ADCn_CHm, 1, 0), GPIO36));
597 _for_each_inner!(((ADC1_CH1, ADCn_CHm, 1, 1), GPIO37));
598 _for_each_inner!(((ADC1_CH2, ADCn_CHm, 1, 2), GPIO38));
599 _for_each_inner!(((ADC1_CH3, ADCn_CHm, 1, 3), GPIO39));
600 _for_each_inner!((all(ADC2_CH1, GPIO0), (TOUCH1, GPIO0), (ADC2_CH2, GPIO2),
601 (TOUCH2, GPIO2), (ADC2_CH0, GPIO4), (TOUCH0, GPIO4), (ADC2_CH5, GPIO12), (TOUCH5,
602 GPIO12), (ADC2_CH4, GPIO13), (TOUCH4, GPIO13), (ADC2_CH6, GPIO14), (TOUCH6,
603 GPIO14), (ADC2_CH3, GPIO15), (TOUCH3, GPIO15), (DAC1, GPIO25), (ADC2_CH8,
604 GPIO25), (DAC2, GPIO26), (ADC2_CH9, GPIO26), (ADC2_CH7, GPIO27), (TOUCH7,
605 GPIO27), (XTAL_32K_P, GPIO32), (ADC1_CH4, GPIO32), (TOUCH9, GPIO32), (XTAL_32K_N,
606 GPIO33), (ADC1_CH5, GPIO33), (TOUCH8, GPIO33), (ADC1_CH6, GPIO34), (ADC1_CH7,
607 GPIO35), (ADC_H, GPIO36), (ADC1_CH0, GPIO36), (ADC_H, GPIO37), (ADC1_CH1,
608 GPIO37), (ADC_H, GPIO38), (ADC1_CH2, GPIO38), (ADC_H, GPIO39), (ADC1_CH3,
609 GPIO39))); _for_each_inner!((all_expanded((ADC2_CH1, ADCn_CHm, 2, 1), GPIO0),
610 ((TOUCH1, TOUCHn, 1), GPIO0), ((ADC2_CH2, ADCn_CHm, 2, 2), GPIO2), ((TOUCH2,
611 TOUCHn, 2), GPIO2), ((ADC2_CH0, ADCn_CHm, 2, 0), GPIO4), ((TOUCH0, TOUCHn, 0),
612 GPIO4), ((ADC2_CH5, ADCn_CHm, 2, 5), GPIO12), ((TOUCH5, TOUCHn, 5), GPIO12),
613 ((ADC2_CH4, ADCn_CHm, 2, 4), GPIO13), ((TOUCH4, TOUCHn, 4), GPIO13), ((ADC2_CH6,
614 ADCn_CHm, 2, 6), GPIO14), ((TOUCH6, TOUCHn, 6), GPIO14), ((ADC2_CH3, ADCn_CHm, 2,
615 3), GPIO15), ((TOUCH3, TOUCHn, 3), GPIO15), ((DAC1, DACn, 1), GPIO25),
616 ((ADC2_CH8, ADCn_CHm, 2, 8), GPIO25), ((DAC2, DACn, 2), GPIO26), ((ADC2_CH9,
617 ADCn_CHm, 2, 9), GPIO26), ((ADC2_CH7, ADCn_CHm, 2, 7), GPIO27), ((TOUCH7, TOUCHn,
618 7), GPIO27), ((ADC1_CH4, ADCn_CHm, 1, 4), GPIO32), ((TOUCH9, TOUCHn, 9), GPIO32),
619 ((ADC1_CH5, ADCn_CHm, 1, 5), GPIO33), ((TOUCH8, TOUCHn, 8), GPIO33), ((ADC1_CH6,
620 ADCn_CHm, 1, 6), GPIO34), ((ADC1_CH7, ADCn_CHm, 1, 7), GPIO35), ((ADC1_CH0,
621 ADCn_CHm, 1, 0), GPIO36), ((ADC1_CH1, ADCn_CHm, 1, 1), GPIO37), ((ADC1_CH2,
622 ADCn_CHm, 1, 2), GPIO38), ((ADC1_CH3, ADCn_CHm, 1, 3), GPIO39)));
623 };
624}
625#[macro_export]
652#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
653macro_rules! for_each_lp_function {
654 ($($pattern:tt => $code:tt;)*) => {
655 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
656 _for_each_inner!((RTC_GPIO11, GPIO0)); _for_each_inner!((SAR_I2C_SDA, GPIO0));
657 _for_each_inner!((RTC_GPIO12, GPIO2)); _for_each_inner!((SAR_I2C_SCL, GPIO2));
658 _for_each_inner!((RTC_GPIO10, GPIO4)); _for_each_inner!((SAR_I2C_SCL, GPIO4));
659 _for_each_inner!((RTC_GPIO15, GPIO12)); _for_each_inner!((RTC_GPIO14, GPIO13));
660 _for_each_inner!((RTC_GPIO16, GPIO14)); _for_each_inner!((RTC_GPIO13, GPIO15));
661 _for_each_inner!((SAR_I2C_SDA, GPIO15)); _for_each_inner!((RTC_GPIO6, GPIO25));
662 _for_each_inner!((RTC_GPIO7, GPIO26)); _for_each_inner!((RTC_GPIO17, GPIO27));
663 _for_each_inner!((RTC_GPIO9, GPIO32)); _for_each_inner!((RTC_GPIO8, GPIO33));
664 _for_each_inner!((RTC_GPIO4, GPIO34)); _for_each_inner!((RTC_GPIO5, GPIO35));
665 _for_each_inner!((RTC_GPIO0, GPIO36)); _for_each_inner!((RTC_GPIO1, GPIO37));
666 _for_each_inner!((RTC_GPIO2, GPIO38)); _for_each_inner!((RTC_GPIO3, GPIO39));
667 _for_each_inner!(((RTC_GPIO11, RTC_GPIOn, 11), GPIO0));
668 _for_each_inner!(((RTC_GPIO12, RTC_GPIOn, 12), GPIO2));
669 _for_each_inner!(((RTC_GPIO10, RTC_GPIOn, 10), GPIO4));
670 _for_each_inner!(((RTC_GPIO15, RTC_GPIOn, 15), GPIO12));
671 _for_each_inner!(((RTC_GPIO14, RTC_GPIOn, 14), GPIO13));
672 _for_each_inner!(((RTC_GPIO16, RTC_GPIOn, 16), GPIO14));
673 _for_each_inner!(((RTC_GPIO13, RTC_GPIOn, 13), GPIO15));
674 _for_each_inner!(((RTC_GPIO6, RTC_GPIOn, 6), GPIO25));
675 _for_each_inner!(((RTC_GPIO7, RTC_GPIOn, 7), GPIO26));
676 _for_each_inner!(((RTC_GPIO17, RTC_GPIOn, 17), GPIO27));
677 _for_each_inner!(((RTC_GPIO9, RTC_GPIOn, 9), GPIO32));
678 _for_each_inner!(((RTC_GPIO8, RTC_GPIOn, 8), GPIO33));
679 _for_each_inner!(((RTC_GPIO4, RTC_GPIOn, 4), GPIO34));
680 _for_each_inner!(((RTC_GPIO5, RTC_GPIOn, 5), GPIO35));
681 _for_each_inner!(((RTC_GPIO0, RTC_GPIOn, 0), GPIO36));
682 _for_each_inner!(((RTC_GPIO1, RTC_GPIOn, 1), GPIO37));
683 _for_each_inner!(((RTC_GPIO2, RTC_GPIOn, 2), GPIO38));
684 _for_each_inner!(((RTC_GPIO3, RTC_GPIOn, 3), GPIO39));
685 _for_each_inner!((all(RTC_GPIO11, GPIO0), (SAR_I2C_SDA, GPIO0), (RTC_GPIO12,
686 GPIO2), (SAR_I2C_SCL, GPIO2), (RTC_GPIO10, GPIO4), (SAR_I2C_SCL, GPIO4),
687 (RTC_GPIO15, GPIO12), (RTC_GPIO14, GPIO13), (RTC_GPIO16, GPIO14), (RTC_GPIO13,
688 GPIO15), (SAR_I2C_SDA, GPIO15), (RTC_GPIO6, GPIO25), (RTC_GPIO7, GPIO26),
689 (RTC_GPIO17, GPIO27), (RTC_GPIO9, GPIO32), (RTC_GPIO8, GPIO33), (RTC_GPIO4,
690 GPIO34), (RTC_GPIO5, GPIO35), (RTC_GPIO0, GPIO36), (RTC_GPIO1, GPIO37),
691 (RTC_GPIO2, GPIO38), (RTC_GPIO3, GPIO39)));
692 _for_each_inner!((all_expanded((RTC_GPIO11, RTC_GPIOn, 11), GPIO0), ((RTC_GPIO12,
693 RTC_GPIOn, 12), GPIO2), ((RTC_GPIO10, RTC_GPIOn, 10), GPIO4), ((RTC_GPIO15,
694 RTC_GPIOn, 15), GPIO12), ((RTC_GPIO14, RTC_GPIOn, 14), GPIO13), ((RTC_GPIO16,
695 RTC_GPIOn, 16), GPIO14), ((RTC_GPIO13, RTC_GPIOn, 13), GPIO15), ((RTC_GPIO6,
696 RTC_GPIOn, 6), GPIO25), ((RTC_GPIO7, RTC_GPIOn, 7), GPIO26), ((RTC_GPIO17,
697 RTC_GPIOn, 17), GPIO27), ((RTC_GPIO9, RTC_GPIOn, 9), GPIO32), ((RTC_GPIO8,
698 RTC_GPIOn, 8), GPIO33), ((RTC_GPIO4, RTC_GPIOn, 4), GPIO34), ((RTC_GPIO5,
699 RTC_GPIOn, 5), GPIO35), ((RTC_GPIO0, RTC_GPIOn, 0), GPIO36), ((RTC_GPIO1,
700 RTC_GPIOn, 1), GPIO37), ((RTC_GPIO2, RTC_GPIOn, 2), GPIO38), ((RTC_GPIO3,
701 RTC_GPIOn, 3), GPIO39)));
702 };
703}
704#[macro_export]
708#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
709macro_rules! define_io_mux_signals {
710 () => {
711 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
712 #[derive(Debug, PartialEq, Copy, Clone)]
713 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
714 #[doc(hidden)]
715 pub enum InputSignal {
716 SPICLK = 0,
717 SPIQ = 1,
718 SPID = 2,
719 SPIHD = 3,
720 SPIWP = 4,
721 SPICS0 = 5,
722 SPICS1 = 6,
723 SPICS2 = 7,
724 HSPICLK = 8,
725 HSPIQ = 9,
726 HSPID = 10,
727 HSPICS0 = 11,
728 HSPIHD = 12,
729 HSPIWP = 13,
730 U0RXD = 14,
731 U0CTS = 15,
732 U0DSR = 16,
733 U1RXD = 17,
734 U1CTS = 18,
735 I2S0O_BCK = 23,
736 I2S1O_BCK = 24,
737 I2S0O_WS = 25,
738 I2S1O_WS = 26,
739 I2S0I_BCK = 27,
740 I2S0I_WS = 28,
741 I2CEXT0_SCL = 29,
742 I2CEXT0_SDA = 30,
743 PWM0_SYNC0 = 31,
744 PWM0_SYNC1 = 32,
745 PWM0_SYNC2 = 33,
746 PWM0_F0 = 34,
747 PWM0_F1 = 35,
748 PWM0_F2 = 36,
749 PCNT0_SIG_CH0 = 39,
750 PCNT0_SIG_CH1 = 40,
751 PCNT0_CTRL_CH0 = 41,
752 PCNT0_CTRL_CH1 = 42,
753 PCNT1_SIG_CH0 = 43,
754 PCNT1_SIG_CH1 = 44,
755 PCNT1_CTRL_CH0 = 45,
756 PCNT1_CTRL_CH1 = 46,
757 PCNT2_SIG_CH0 = 47,
758 PCNT2_SIG_CH1 = 48,
759 PCNT2_CTRL_CH0 = 49,
760 PCNT2_CTRL_CH1 = 50,
761 PCNT3_SIG_CH0 = 51,
762 PCNT3_SIG_CH1 = 52,
763 PCNT3_CTRL_CH0 = 53,
764 PCNT3_CTRL_CH1 = 54,
765 PCNT4_SIG_CH0 = 55,
766 PCNT4_SIG_CH1 = 56,
767 PCNT4_CTRL_CH0 = 57,
768 PCNT4_CTRL_CH1 = 58,
769 HSPICS1 = 61,
770 HSPICS2 = 62,
771 VSPICLK = 63,
772 VSPIQ = 64,
773 VSPID = 65,
774 VSPIHD = 66,
775 VSPIWP = 67,
776 VSPICS0 = 68,
777 VSPICS1 = 69,
778 VSPICS2 = 70,
779 PCNT5_SIG_CH0 = 71,
780 PCNT5_SIG_CH1 = 72,
781 PCNT5_CTRL_CH0 = 73,
782 PCNT5_CTRL_CH1 = 74,
783 PCNT6_SIG_CH0 = 75,
784 PCNT6_SIG_CH1 = 76,
785 PCNT6_CTRL_CH0 = 77,
786 PCNT6_CTRL_CH1 = 78,
787 PCNT7_SIG_CH0 = 79,
788 PCNT7_SIG_CH1 = 80,
789 PCNT7_CTRL_CH0 = 81,
790 PCNT7_CTRL_CH1 = 82,
791 RMT_SIG_0 = 83,
792 RMT_SIG_1 = 84,
793 RMT_SIG_2 = 85,
794 RMT_SIG_3 = 86,
795 RMT_SIG_4 = 87,
796 RMT_SIG_5 = 88,
797 RMT_SIG_6 = 89,
798 RMT_SIG_7 = 90,
799 TWAI_RX = 94,
800 I2CEXT1_SCL = 95,
801 I2CEXT1_SDA = 96,
802 HOST_CARD_DETECT_N_1 = 97,
803 HOST_CARD_DETECT_N_2 = 98,
804 HOST_CARD_WRITE_PRT_1 = 99,
805 HOST_CARD_WRITE_PRT_2 = 100,
806 HOST_CARD_INT_N_1 = 101,
807 HOST_CARD_INT_N_2 = 102,
808 PWM1_SYNC0 = 103,
809 PWM1_SYNC1 = 104,
810 PWM1_SYNC2 = 105,
811 PWM1_F0 = 106,
812 PWM1_F1 = 107,
813 PWM1_F2 = 108,
814 PWM0_CAP0 = 109,
815 PWM0_CAP1 = 110,
816 PWM0_CAP2 = 111,
817 PWM1_CAP0 = 112,
818 PWM1_CAP1 = 113,
819 PWM1_CAP2 = 114,
820 I2S0I_DATA_0 = 140,
821 I2S0I_DATA_1 = 141,
822 I2S0I_DATA_2 = 142,
823 I2S0I_DATA_3 = 143,
824 I2S0I_DATA_4 = 144,
825 I2S0I_DATA_5 = 145,
826 I2S0I_DATA_6 = 146,
827 I2S0I_DATA_7 = 147,
828 I2S0I_DATA_8 = 148,
829 I2S0I_DATA_9 = 149,
830 I2S0I_DATA_10 = 150,
831 I2S0I_DATA_11 = 151,
832 I2S0I_DATA_12 = 152,
833 I2S0I_DATA_13 = 153,
834 I2S0I_DATA_14 = 154,
835 I2S0I_DATA_15 = 155,
836 I2S1I_BCK = 164,
837 I2S1I_WS = 165,
838 I2S1I_DATA_0 = 166,
839 I2S1I_DATA_1 = 167,
840 I2S1I_DATA_2 = 168,
841 I2S1I_DATA_3 = 169,
842 I2S1I_DATA_4 = 170,
843 I2S1I_DATA_5 = 171,
844 I2S1I_DATA_6 = 172,
845 I2S1I_DATA_7 = 173,
846 I2S1I_DATA_8 = 174,
847 I2S1I_DATA_9 = 175,
848 I2S1I_DATA_10 = 176,
849 I2S1I_DATA_11 = 177,
850 I2S1I_DATA_12 = 178,
851 I2S1I_DATA_13 = 179,
852 I2S1I_DATA_14 = 180,
853 I2S1I_DATA_15 = 181,
854 I2S0I_H_SYNC = 190,
855 I2S0I_V_SYNC = 191,
856 I2S0I_H_ENABLE = 192,
857 I2S1I_H_SYNC = 193,
858 I2S1I_V_SYNC = 194,
859 I2S1I_H_ENABLE = 195,
860 U2RXD = 198,
861 U2CTS = 199,
862 EMAC_MDC = 200,
863 EMAC_MDI = 201,
864 EMAC_CRS = 202,
865 EMAC_COL = 203,
866 PCMFSYNC = 204,
867 PCMCLK = 205,
868 PCMDIN = 206,
869 SD_CMD,
870 SD_DATA0,
871 SD_DATA1,
872 SD_DATA2,
873 SD_DATA3,
874 HS1_DATA0,
875 HS1_DATA1,
876 HS1_DATA2,
877 HS1_DATA3,
878 HS1_DATA4,
879 HS1_DATA5,
880 HS1_DATA6,
881 HS1_DATA7,
882 HS2_DATA0,
883 HS2_DATA1,
884 HS2_DATA2,
885 HS2_DATA3,
886 EMAC_TX_CLK,
887 EMAC_RXD2,
888 EMAC_TX_ER,
889 EMAC_RX_CLK,
890 EMAC_RX_ER,
891 EMAC_RXD3,
892 EMAC_RXD0,
893 EMAC_RXD1,
894 EMAC_RX_DV,
895 MTDI,
896 MTCK,
897 MTMS,
898 }
899 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
900 #[derive(Debug, PartialEq, Copy, Clone)]
901 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
902 #[doc(hidden)]
903 pub enum OutputSignal {
904 SPICLK = 0,
905 SPIQ = 1,
906 SPID = 2,
907 SPIHD = 3,
908 SPIWP = 4,
909 SPICS0 = 5,
910 SPICS1 = 6,
911 SPICS2 = 7,
912 HSPICLK = 8,
913 HSPIQ = 9,
914 HSPID = 10,
915 HSPICS0 = 11,
916 HSPIHD = 12,
917 HSPIWP = 13,
918 U0TXD = 14,
919 U0RTS = 15,
920 U0DTR = 16,
921 U1TXD = 17,
922 U1RTS = 18,
923 I2S0O_BCK = 23,
924 I2S1O_BCK = 24,
925 I2S0O_WS = 25,
926 I2S1O_WS = 26,
927 I2S0I_BCK = 27,
928 I2S0I_WS = 28,
929 I2CEXT0_SCL = 29,
930 I2CEXT0_SDA = 30,
931 SDIO_TOHOSTT = 31,
932 PWM0_0A = 32,
933 PWM0_0B = 33,
934 PWM0_1A = 34,
935 PWM0_1B = 35,
936 PWM0_2A = 36,
937 PWM0_2B = 37,
938 HSPICS1 = 61,
939 HSPICS2 = 62,
940 VSPICLK = 63,
941 VSPIQ = 64,
942 VSPID = 65,
943 VSPIHD = 66,
944 VSPIWP = 67,
945 VSPICS0 = 68,
946 VSPICS1 = 69,
947 VSPICS2 = 70,
948 LEDC_HS_SIG0 = 71,
949 LEDC_HS_SIG1 = 72,
950 LEDC_HS_SIG2 = 73,
951 LEDC_HS_SIG3 = 74,
952 LEDC_HS_SIG4 = 75,
953 LEDC_HS_SIG5 = 76,
954 LEDC_HS_SIG6 = 77,
955 LEDC_HS_SIG7 = 78,
956 LEDC_LS_SIG0 = 79,
957 LEDC_LS_SIG1 = 80,
958 LEDC_LS_SIG2 = 81,
959 LEDC_LS_SIG3 = 82,
960 LEDC_LS_SIG4 = 83,
961 LEDC_LS_SIG5 = 84,
962 LEDC_LS_SIG6 = 85,
963 LEDC_LS_SIG7 = 86,
964 RMT_SIG_0 = 87,
965 RMT_SIG_1 = 88,
966 RMT_SIG_2 = 89,
967 RMT_SIG_3 = 90,
968 RMT_SIG_4 = 91,
969 RMT_SIG_5 = 92,
970 RMT_SIG_6 = 93,
971 RMT_SIG_7 = 94,
972 I2CEXT1_SCL = 95,
973 I2CEXT1_SDA = 96,
974 HOST_CCMD_OD_PULLUP_EN_N = 97,
975 HOST_RST_N_1 = 98,
976 HOST_RST_N_2 = 99,
977 GPIO_SD0 = 100,
978 GPIO_SD1 = 101,
979 GPIO_SD2 = 102,
980 GPIO_SD3 = 103,
981 GPIO_SD4 = 104,
982 GPIO_SD5 = 105,
983 GPIO_SD6 = 106,
984 GPIO_SD7 = 107,
985 PWM1_0A = 108,
986 PWM1_0B = 109,
987 PWM1_1A = 110,
988 PWM1_1B = 111,
989 PWM1_2A = 112,
990 PWM1_2B = 113,
991 TWAI_TX = 123,
992 TWAI_BUS_OFF_ON = 124,
993 TWAI_CLKOUT = 125,
994 I2S0O_DATA_0 = 140,
995 I2S0O_DATA_1 = 141,
996 I2S0O_DATA_2 = 142,
997 I2S0O_DATA_3 = 143,
998 I2S0O_DATA_4 = 144,
999 I2S0O_DATA_5 = 145,
1000 I2S0O_DATA_6 = 146,
1001 I2S0O_DATA_7 = 147,
1002 I2S0O_DATA_8 = 148,
1003 I2S0O_DATA_9 = 149,
1004 I2S0O_DATA_10 = 150,
1005 I2S0O_DATA_11 = 151,
1006 I2S0O_DATA_12 = 152,
1007 I2S0O_DATA_13 = 153,
1008 I2S0O_DATA_14 = 154,
1009 I2S0O_DATA_15 = 155,
1010 I2S0O_DATA_16 = 156,
1011 I2S0O_DATA_17 = 157,
1012 I2S0O_DATA_18 = 158,
1013 I2S0O_DATA_19 = 159,
1014 I2S0O_DATA_20 = 160,
1015 I2S0O_DATA_21 = 161,
1016 I2S0O_DATA_22 = 162,
1017 I2S0O_DATA_23 = 163,
1018 I2S1I_BCK = 164,
1019 I2S1I_WS = 165,
1020 I2S1O_DATA_0 = 166,
1021 I2S1O_DATA_1 = 167,
1022 I2S1O_DATA_2 = 168,
1023 I2S1O_DATA_3 = 169,
1024 I2S1O_DATA_4 = 170,
1025 I2S1O_DATA_5 = 171,
1026 I2S1O_DATA_6 = 172,
1027 I2S1O_DATA_7 = 173,
1028 I2S1O_DATA_8 = 174,
1029 I2S1O_DATA_9 = 175,
1030 I2S1O_DATA_10 = 176,
1031 I2S1O_DATA_11 = 177,
1032 I2S1O_DATA_12 = 178,
1033 I2S1O_DATA_13 = 179,
1034 I2S1O_DATA_14 = 180,
1035 I2S1O_DATA_15 = 181,
1036 I2S1O_DATA_16 = 182,
1037 I2S1O_DATA_17 = 183,
1038 I2S1O_DATA_18 = 184,
1039 I2S1O_DATA_19 = 185,
1040 I2S1O_DATA_20 = 186,
1041 I2S1O_DATA_21 = 187,
1042 I2S1O_DATA_22 = 188,
1043 I2S1O_DATA_23 = 189,
1044 U2TXD = 198,
1045 U2RTS = 199,
1046 EMAC_MDC = 200,
1047 EMAC_MDO = 201,
1048 EMAC_CRS = 202,
1049 EMAC_COL = 203,
1050 BT_AUDIO0RQ = 204,
1051 BT_AUDIO1RQ = 205,
1052 BT_AUDIO2RQ = 206,
1053 BLE_AUDIO0RQ = 207,
1054 BLE_AUDIO1RQ = 208,
1055 BLE_AUDIO2RQ = 209,
1056 PCMFSYNC = 210,
1057 PCMCLK = 211,
1058 PCMDOUT = 212,
1059 BLE_AUDIO_SYNC0_P = 213,
1060 BLE_AUDIO_SYNC1_P = 214,
1061 BLE_AUDIO_SYNC2_P = 215,
1062 ANT_SEL0 = 216,
1063 ANT_SEL1 = 217,
1064 ANT_SEL2 = 218,
1065 ANT_SEL3 = 219,
1066 ANT_SEL4 = 220,
1067 ANT_SEL5 = 221,
1068 ANT_SEL6 = 222,
1069 ANT_SEL7 = 223,
1070 SIGNAL_224 = 224,
1071 SIGNAL_225 = 225,
1072 SIGNAL_226 = 226,
1073 SIGNAL_227 = 227,
1074 SIGNAL_228 = 228,
1075 GPIO = 256,
1076 CLK_OUT1,
1077 CLK_OUT2,
1078 CLK_OUT3,
1079 SD_CLK,
1080 SD_CMD,
1081 SD_DATA0,
1082 SD_DATA1,
1083 SD_DATA2,
1084 SD_DATA3,
1085 HS1_CLK,
1086 HS1_CMD,
1087 HS1_DATA0,
1088 HS1_DATA1,
1089 HS1_DATA2,
1090 HS1_DATA3,
1091 HS1_DATA4,
1092 HS1_DATA5,
1093 HS1_DATA6,
1094 HS1_DATA7,
1095 HS1_STROBE,
1096 HS2_CLK,
1097 HS2_CMD,
1098 HS2_DATA0,
1099 HS2_DATA1,
1100 HS2_DATA2,
1101 HS2_DATA3,
1102 EMAC_TX_CLK,
1103 EMAC_TX_ER,
1104 EMAC_TXD3,
1105 EMAC_RX_ER,
1106 EMAC_TXD2,
1107 EMAC_CLK_OUT,
1108 EMAC_CLK_180,
1109 EMAC_TXD0,
1110 EMAC_TX_EN,
1111 EMAC_TXD1,
1112 MTDO,
1113 }
1114 };
1115}
1116#[macro_export]
1129#[expect(clippy::crate_in_macro_def)]
1130#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1131macro_rules! define_io_mux_reg {
1132 () => {
1133 pub(crate) fn io_mux_reg(gpio_num: u8) -> &'static crate::pac::io_mux::GPIO0 {
1134 use core::mem::transmute;
1135
1136 use crate::{pac::io_mux, peripherals::IO_MUX};
1137 let iomux = IO_MUX::regs();
1138 unsafe {
1139 match gpio_num {
1140 0 => transmute::<&'static io_mux::GPIO0, &'static io_mux::GPIO0>(iomux.gpio0()),
1141 1 => transmute::<&'static io_mux::GPIO1, &'static io_mux::GPIO0>(iomux.gpio1()),
1142 2 => transmute::<&'static io_mux::GPIO2, &'static io_mux::GPIO0>(iomux.gpio2()),
1143 3 => transmute::<&'static io_mux::GPIO3, &'static io_mux::GPIO0>(iomux.gpio3()),
1144 4 => transmute::<&'static io_mux::GPIO4, &'static io_mux::GPIO0>(iomux.gpio4()),
1145 5 => transmute::<&'static io_mux::GPIO5, &'static io_mux::GPIO0>(iomux.gpio5()),
1146 6 => transmute::<&'static io_mux::GPIO6, &'static io_mux::GPIO0>(iomux.gpio6()),
1147 7 => transmute::<&'static io_mux::GPIO7, &'static io_mux::GPIO0>(iomux.gpio7()),
1148 8 => transmute::<&'static io_mux::GPIO8, &'static io_mux::GPIO0>(iomux.gpio8()),
1149 9 => transmute::<&'static io_mux::GPIO9, &'static io_mux::GPIO0>(iomux.gpio9()),
1150 10 => {
1151 transmute::<&'static io_mux::GPIO10, &'static io_mux::GPIO0>(iomux.gpio10())
1152 }
1153 11 => {
1154 transmute::<&'static io_mux::GPIO11, &'static io_mux::GPIO0>(iomux.gpio11())
1155 }
1156 12 => {
1157 transmute::<&'static io_mux::GPIO12, &'static io_mux::GPIO0>(iomux.gpio12())
1158 }
1159 13 => {
1160 transmute::<&'static io_mux::GPIO13, &'static io_mux::GPIO0>(iomux.gpio13())
1161 }
1162 14 => {
1163 transmute::<&'static io_mux::GPIO14, &'static io_mux::GPIO0>(iomux.gpio14())
1164 }
1165 15 => {
1166 transmute::<&'static io_mux::GPIO15, &'static io_mux::GPIO0>(iomux.gpio15())
1167 }
1168 16 => {
1169 transmute::<&'static io_mux::GPIO16, &'static io_mux::GPIO0>(iomux.gpio16())
1170 }
1171 17 => {
1172 transmute::<&'static io_mux::GPIO17, &'static io_mux::GPIO0>(iomux.gpio17())
1173 }
1174 18 => {
1175 transmute::<&'static io_mux::GPIO18, &'static io_mux::GPIO0>(iomux.gpio18())
1176 }
1177 19 => {
1178 transmute::<&'static io_mux::GPIO19, &'static io_mux::GPIO0>(iomux.gpio19())
1179 }
1180 20 => {
1181 transmute::<&'static io_mux::GPIO20, &'static io_mux::GPIO0>(iomux.gpio20())
1182 }
1183 21 => {
1184 transmute::<&'static io_mux::GPIO21, &'static io_mux::GPIO0>(iomux.gpio21())
1185 }
1186 22 => {
1187 transmute::<&'static io_mux::GPIO22, &'static io_mux::GPIO0>(iomux.gpio22())
1188 }
1189 23 => {
1190 transmute::<&'static io_mux::GPIO23, &'static io_mux::GPIO0>(iomux.gpio23())
1191 }
1192 25 => {
1193 transmute::<&'static io_mux::GPIO25, &'static io_mux::GPIO0>(iomux.gpio25())
1194 }
1195 26 => {
1196 transmute::<&'static io_mux::GPIO26, &'static io_mux::GPIO0>(iomux.gpio26())
1197 }
1198 27 => {
1199 transmute::<&'static io_mux::GPIO27, &'static io_mux::GPIO0>(iomux.gpio27())
1200 }
1201 32 => {
1202 transmute::<&'static io_mux::GPIO32, &'static io_mux::GPIO0>(iomux.gpio32())
1203 }
1204 33 => {
1205 transmute::<&'static io_mux::GPIO33, &'static io_mux::GPIO0>(iomux.gpio33())
1206 }
1207 34 => {
1208 transmute::<&'static io_mux::GPIO34, &'static io_mux::GPIO0>(iomux.gpio34())
1209 }
1210 35 => {
1211 transmute::<&'static io_mux::GPIO35, &'static io_mux::GPIO0>(iomux.gpio35())
1212 }
1213 36 => {
1214 transmute::<&'static io_mux::GPIO36, &'static io_mux::GPIO0>(iomux.gpio36())
1215 }
1216 37 => {
1217 transmute::<&'static io_mux::GPIO37, &'static io_mux::GPIO0>(iomux.gpio37())
1218 }
1219 38 => {
1220 transmute::<&'static io_mux::GPIO38, &'static io_mux::GPIO0>(iomux.gpio38())
1221 }
1222 39 => {
1223 transmute::<&'static io_mux::GPIO39, &'static io_mux::GPIO0>(iomux.gpio39())
1224 }
1225 other => panic!("GPIO {} does not exist", other),
1226 }
1227 }
1228 }
1229 };
1230}