1#[doc = concat!("assert_eq!(chip_name, ", chip!(), ")")]
12#[macro_export]
14#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
15macro_rules! chip {
16 () => {
17 "esp32s3"
18 };
19}
20#[macro_export]
22#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
23macro_rules! property {
24 ("chip") => {
25 "esp32s3"
26 };
27 ("arch") => {
28 "xtensa"
29 };
30 ("cores") => {
31 2
32 };
33 ("cores", str) => {
34 stringify!(2)
35 };
36 ("trm") => {
37 "https://www.espressif.com/sites/default/files/documentation/esp32-s3_technical_reference_manual_en.pdf"
38 };
39 ("soc.cpu_has_csr_pc") => {
40 false
41 };
42 ("soc.cpu_has_prv_mode") => {
43 false
44 };
45 ("soc.rc_fast_clk_default") => {
46 17500000
47 };
48 ("soc.rc_fast_clk_default", str) => {
49 stringify!(17500000)
50 };
51 ("soc.rc_slow_clock") => {
52 136000
53 };
54 ("soc.rc_slow_clock", str) => {
55 stringify!(136000)
56 };
57 ("soc.xtal_frequency") => {
58 40
59 };
60 ("soc.xtal_frequency", str) => {
61 stringify!(40)
62 };
63 ("aes.dma") => {
64 true
65 };
66 ("aes.has_split_text_registers") => {
67 true
68 };
69 ("aes.endianness_configurable") => {
70 false
71 };
72 ("assist_debug.has_sp_monitor") => {
73 false
74 };
75 ("assist_debug.has_region_monitor") => {
76 true
77 };
78 ("gpio.has_bank_1") => {
79 true
80 };
81 ("gpio.gpio_function") => {
82 1
83 };
84 ("gpio.gpio_function", str) => {
85 stringify!(1)
86 };
87 ("gpio.constant_0_input") => {
88 60
89 };
90 ("gpio.constant_0_input", str) => {
91 stringify!(60)
92 };
93 ("gpio.constant_1_input") => {
94 56
95 };
96 ("gpio.constant_1_input", str) => {
97 stringify!(56)
98 };
99 ("gpio.remap_iomux_pin_registers") => {
100 false
101 };
102 ("gpio.func_in_sel_offset") => {
103 0
104 };
105 ("gpio.func_in_sel_offset", str) => {
106 stringify!(0)
107 };
108 ("gpio.input_signal_max") => {
109 255
110 };
111 ("gpio.input_signal_max", str) => {
112 stringify!(255)
113 };
114 ("gpio.output_signal_max") => {
115 256
116 };
117 ("gpio.output_signal_max", str) => {
118 stringify!(256)
119 };
120 ("i2c_master.has_fsm_timeouts") => {
121 true
122 };
123 ("i2c_master.has_hw_bus_clear") => {
124 false
125 };
126 ("i2c_master.has_bus_timeout_enable") => {
127 true
128 };
129 ("i2c_master.separate_filter_config_registers") => {
130 false
131 };
132 ("i2c_master.can_estimate_nack_reason") => {
133 true
134 };
135 ("i2c_master.has_conf_update") => {
136 true
137 };
138 ("i2c_master.has_reliable_fsm_reset") => {
139 false
140 };
141 ("i2c_master.has_arbitration_en") => {
142 true
143 };
144 ("i2c_master.has_tx_fifo_watermark") => {
145 true
146 };
147 ("i2c_master.bus_timeout_is_exponential") => {
148 true
149 };
150 ("i2c_master.max_bus_timeout") => {
151 31
152 };
153 ("i2c_master.max_bus_timeout", str) => {
154 stringify!(31)
155 };
156 ("i2c_master.ll_intr_mask") => {
157 262143
158 };
159 ("i2c_master.ll_intr_mask", str) => {
160 stringify!(262143)
161 };
162 ("i2c_master.fifo_size") => {
163 32
164 };
165 ("i2c_master.fifo_size", str) => {
166 stringify!(32)
167 };
168 ("interrupts.status_registers") => {
169 4
170 };
171 ("interrupts.status_registers", str) => {
172 stringify!(4)
173 };
174 ("rmt.ram_start") => {
175 1610704896
176 };
177 ("rmt.ram_start", str) => {
178 stringify!(1610704896)
179 };
180 ("rmt.channel_ram_size") => {
181 48
182 };
183 ("rmt.channel_ram_size", str) => {
184 stringify!(48)
185 };
186 ("rmt.has_tx_immediate_stop") => {
187 true
188 };
189 ("rmt.has_tx_loop_count") => {
190 true
191 };
192 ("rmt.has_tx_loop_auto_stop") => {
193 true
194 };
195 ("rmt.has_tx_carrier_data_only") => {
196 true
197 };
198 ("rmt.has_tx_sync") => {
199 true
200 };
201 ("rmt.has_rx_wrap") => {
202 true
203 };
204 ("rmt.has_rx_demodulation") => {
205 true
206 };
207 ("rmt.has_dma") => {
208 true
209 };
210 ("rmt.has_per_channel_clock") => {
211 false
212 };
213 ("rng.apb_cycle_wait_num") => {
214 16
215 };
216 ("rng.apb_cycle_wait_num", str) => {
217 stringify!(16)
218 };
219 ("rsa.size_increment") => {
220 32
221 };
222 ("rsa.size_increment", str) => {
223 stringify!(32)
224 };
225 ("rsa.memory_size_bytes") => {
226 512
227 };
228 ("rsa.memory_size_bytes", str) => {
229 stringify!(512)
230 };
231 ("sha.dma") => {
232 true
233 };
234 ("spi_master.has_octal") => {
235 true
236 };
237 ("timergroup.timg_has_timer1") => {
238 true
239 };
240 ("timergroup.timg_has_divcnt_rst") => {
241 false
242 };
243 ("timergroup.default_clock_source") => {
244 0
245 };
246 ("timergroup.default_clock_source", str) => {
247 stringify!(0)
248 };
249 ("uart.ram_size") => {
250 128
251 };
252 ("uart.ram_size", str) => {
253 stringify!(128)
254 };
255 ("wifi.has_wifi6") => {
256 false
257 };
258 ("bt.controller") => {
259 "btdm"
260 };
261 ("phy.combo_module") => {
262 true
263 };
264 ("phy.backed_up_digital_register_count") => {
265 21
266 };
267 ("phy.backed_up_digital_register_count", str) => {
268 stringify!(21)
269 };
270}
271#[macro_export]
273#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
274macro_rules! memory_range {
275 ("DRAM") => {
276 1070104576..1070596096
277 };
278}
279#[macro_export]
280#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
281macro_rules! for_each_soc_xtal_options {
282 ($($pattern:tt => $code:tt;)*) => {
283 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
284 _for_each_inner!((40)); _for_each_inner!((all(40)));
285 };
286}
287#[macro_export]
288#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
289macro_rules! for_each_aes_key_length {
290 ($($pattern:tt => $code:tt;)*) => {
291 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
292 _for_each_inner!((128)); _for_each_inner!((256)); _for_each_inner!((128, 0, 4));
293 _for_each_inner!((256, 2, 6)); _for_each_inner!((bits(128), (256)));
294 _for_each_inner!((modes(128, 0, 4), (256, 2, 6)));
295 };
296}
297#[macro_export]
319#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
320macro_rules! for_each_rmt_channel {
321 ($($pattern:tt => $code:tt;)*) => {
322 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
323 _for_each_inner!((0)); _for_each_inner!((1)); _for_each_inner!((2));
324 _for_each_inner!((3)); _for_each_inner!((4)); _for_each_inner!((5));
325 _for_each_inner!((6)); _for_each_inner!((7)); _for_each_inner!((0, 0));
326 _for_each_inner!((1, 1)); _for_each_inner!((2, 2)); _for_each_inner!((3, 3));
327 _for_each_inner!((4, 0)); _for_each_inner!((5, 1)); _for_each_inner!((6, 2));
328 _for_each_inner!((7, 3)); _for_each_inner!((all(0), (1), (2), (3), (4), (5), (6),
329 (7))); _for_each_inner!((tx(0, 0), (1, 1), (2, 2), (3, 3)));
330 _for_each_inner!((rx(4, 0), (5, 1), (6, 2), (7, 3)));
331 };
332}
333#[macro_export]
334#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
335macro_rules! for_each_rmt_clock_source {
336 ($($pattern:tt => $code:tt;)*) => {
337 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
338 _for_each_inner!((Apb, 1)); _for_each_inner!((RcFast, 2));
339 _for_each_inner!((Xtal, 3)); _for_each_inner!((Apb)); _for_each_inner!((all(Apb,
340 1), (RcFast, 2), (Xtal, 3))); _for_each_inner!((default(Apb)));
341 };
342}
343#[macro_export]
344#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
345macro_rules! for_each_rsa_exponentiation {
346 ($($pattern:tt => $code:tt;)*) => {
347 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
348 _for_each_inner!((32)); _for_each_inner!((64)); _for_each_inner!((96));
349 _for_each_inner!((128)); _for_each_inner!((160)); _for_each_inner!((192));
350 _for_each_inner!((224)); _for_each_inner!((256)); _for_each_inner!((288));
351 _for_each_inner!((320)); _for_each_inner!((352)); _for_each_inner!((384));
352 _for_each_inner!((416)); _for_each_inner!((448)); _for_each_inner!((480));
353 _for_each_inner!((512)); _for_each_inner!((544)); _for_each_inner!((576));
354 _for_each_inner!((608)); _for_each_inner!((640)); _for_each_inner!((672));
355 _for_each_inner!((704)); _for_each_inner!((736)); _for_each_inner!((768));
356 _for_each_inner!((800)); _for_each_inner!((832)); _for_each_inner!((864));
357 _for_each_inner!((896)); _for_each_inner!((928)); _for_each_inner!((960));
358 _for_each_inner!((992)); _for_each_inner!((1024)); _for_each_inner!((1056));
359 _for_each_inner!((1088)); _for_each_inner!((1120)); _for_each_inner!((1152));
360 _for_each_inner!((1184)); _for_each_inner!((1216)); _for_each_inner!((1248));
361 _for_each_inner!((1280)); _for_each_inner!((1312)); _for_each_inner!((1344));
362 _for_each_inner!((1376)); _for_each_inner!((1408)); _for_each_inner!((1440));
363 _for_each_inner!((1472)); _for_each_inner!((1504)); _for_each_inner!((1536));
364 _for_each_inner!((1568)); _for_each_inner!((1600)); _for_each_inner!((1632));
365 _for_each_inner!((1664)); _for_each_inner!((1696)); _for_each_inner!((1728));
366 _for_each_inner!((1760)); _for_each_inner!((1792)); _for_each_inner!((1824));
367 _for_each_inner!((1856)); _for_each_inner!((1888)); _for_each_inner!((1920));
368 _for_each_inner!((1952)); _for_each_inner!((1984)); _for_each_inner!((2016));
369 _for_each_inner!((2048)); _for_each_inner!((2080)); _for_each_inner!((2112));
370 _for_each_inner!((2144)); _for_each_inner!((2176)); _for_each_inner!((2208));
371 _for_each_inner!((2240)); _for_each_inner!((2272)); _for_each_inner!((2304));
372 _for_each_inner!((2336)); _for_each_inner!((2368)); _for_each_inner!((2400));
373 _for_each_inner!((2432)); _for_each_inner!((2464)); _for_each_inner!((2496));
374 _for_each_inner!((2528)); _for_each_inner!((2560)); _for_each_inner!((2592));
375 _for_each_inner!((2624)); _for_each_inner!((2656)); _for_each_inner!((2688));
376 _for_each_inner!((2720)); _for_each_inner!((2752)); _for_each_inner!((2784));
377 _for_each_inner!((2816)); _for_each_inner!((2848)); _for_each_inner!((2880));
378 _for_each_inner!((2912)); _for_each_inner!((2944)); _for_each_inner!((2976));
379 _for_each_inner!((3008)); _for_each_inner!((3040)); _for_each_inner!((3072));
380 _for_each_inner!((3104)); _for_each_inner!((3136)); _for_each_inner!((3168));
381 _for_each_inner!((3200)); _for_each_inner!((3232)); _for_each_inner!((3264));
382 _for_each_inner!((3296)); _for_each_inner!((3328)); _for_each_inner!((3360));
383 _for_each_inner!((3392)); _for_each_inner!((3424)); _for_each_inner!((3456));
384 _for_each_inner!((3488)); _for_each_inner!((3520)); _for_each_inner!((3552));
385 _for_each_inner!((3584)); _for_each_inner!((3616)); _for_each_inner!((3648));
386 _for_each_inner!((3680)); _for_each_inner!((3712)); _for_each_inner!((3744));
387 _for_each_inner!((3776)); _for_each_inner!((3808)); _for_each_inner!((3840));
388 _for_each_inner!((3872)); _for_each_inner!((3904)); _for_each_inner!((3936));
389 _for_each_inner!((3968)); _for_each_inner!((4000)); _for_each_inner!((4032));
390 _for_each_inner!((4064)); _for_each_inner!((4096)); _for_each_inner!((all(32),
391 (64), (96), (128), (160), (192), (224), (256), (288), (320), (352), (384), (416),
392 (448), (480), (512), (544), (576), (608), (640), (672), (704), (736), (768),
393 (800), (832), (864), (896), (928), (960), (992), (1024), (1056), (1088), (1120),
394 (1152), (1184), (1216), (1248), (1280), (1312), (1344), (1376), (1408), (1440),
395 (1472), (1504), (1536), (1568), (1600), (1632), (1664), (1696), (1728), (1760),
396 (1792), (1824), (1856), (1888), (1920), (1952), (1984), (2016), (2048), (2080),
397 (2112), (2144), (2176), (2208), (2240), (2272), (2304), (2336), (2368), (2400),
398 (2432), (2464), (2496), (2528), (2560), (2592), (2624), (2656), (2688), (2720),
399 (2752), (2784), (2816), (2848), (2880), (2912), (2944), (2976), (3008), (3040),
400 (3072), (3104), (3136), (3168), (3200), (3232), (3264), (3296), (3328), (3360),
401 (3392), (3424), (3456), (3488), (3520), (3552), (3584), (3616), (3648), (3680),
402 (3712), (3744), (3776), (3808), (3840), (3872), (3904), (3936), (3968), (4000),
403 (4032), (4064), (4096)));
404 };
405}
406#[macro_export]
407#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
408macro_rules! for_each_rsa_multiplication {
409 ($($pattern:tt => $code:tt;)*) => {
410 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
411 _for_each_inner!((32)); _for_each_inner!((64)); _for_each_inner!((96));
412 _for_each_inner!((128)); _for_each_inner!((160)); _for_each_inner!((192));
413 _for_each_inner!((224)); _for_each_inner!((256)); _for_each_inner!((288));
414 _for_each_inner!((320)); _for_each_inner!((352)); _for_each_inner!((384));
415 _for_each_inner!((416)); _for_each_inner!((448)); _for_each_inner!((480));
416 _for_each_inner!((512)); _for_each_inner!((544)); _for_each_inner!((576));
417 _for_each_inner!((608)); _for_each_inner!((640)); _for_each_inner!((672));
418 _for_each_inner!((704)); _for_each_inner!((736)); _for_each_inner!((768));
419 _for_each_inner!((800)); _for_each_inner!((832)); _for_each_inner!((864));
420 _for_each_inner!((896)); _for_each_inner!((928)); _for_each_inner!((960));
421 _for_each_inner!((992)); _for_each_inner!((1024)); _for_each_inner!((1056));
422 _for_each_inner!((1088)); _for_each_inner!((1120)); _for_each_inner!((1152));
423 _for_each_inner!((1184)); _for_each_inner!((1216)); _for_each_inner!((1248));
424 _for_each_inner!((1280)); _for_each_inner!((1312)); _for_each_inner!((1344));
425 _for_each_inner!((1376)); _for_each_inner!((1408)); _for_each_inner!((1440));
426 _for_each_inner!((1472)); _for_each_inner!((1504)); _for_each_inner!((1536));
427 _for_each_inner!((1568)); _for_each_inner!((1600)); _for_each_inner!((1632));
428 _for_each_inner!((1664)); _for_each_inner!((1696)); _for_each_inner!((1728));
429 _for_each_inner!((1760)); _for_each_inner!((1792)); _for_each_inner!((1824));
430 _for_each_inner!((1856)); _for_each_inner!((1888)); _for_each_inner!((1920));
431 _for_each_inner!((1952)); _for_each_inner!((1984)); _for_each_inner!((2016));
432 _for_each_inner!((2048)); _for_each_inner!((all(32), (64), (96), (128), (160),
433 (192), (224), (256), (288), (320), (352), (384), (416), (448), (480), (512),
434 (544), (576), (608), (640), (672), (704), (736), (768), (800), (832), (864),
435 (896), (928), (960), (992), (1024), (1056), (1088), (1120), (1152), (1184),
436 (1216), (1248), (1280), (1312), (1344), (1376), (1408), (1440), (1472), (1504),
437 (1536), (1568), (1600), (1632), (1664), (1696), (1728), (1760), (1792), (1824),
438 (1856), (1888), (1920), (1952), (1984), (2016), (2048)));
439 };
440}
441#[macro_export]
442#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
443macro_rules! for_each_sha_algorithm {
444 ($($pattern:tt => $code:tt;)*) => {
445 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
446 _for_each_inner!((Sha1, "SHA-1"(sizes : 64, 20, 8) (insecure_against :
447 "collision", "length extension"), 0)); _for_each_inner!((Sha224, "SHA-224"(sizes
448 : 64, 28, 8) (insecure_against : "length extension"), 1));
449 _for_each_inner!((Sha256, "SHA-256"(sizes : 64, 32, 8) (insecure_against :
450 "length extension"), 2)); _for_each_inner!((Sha384, "SHA-384"(sizes : 128, 48,
451 16) (insecure_against :), 3)); _for_each_inner!((Sha512, "SHA-512"(sizes : 128,
452 64, 16) (insecure_against : "length extension"), 4));
453 _for_each_inner!((Sha512_224, "SHA-512/224"(sizes : 128, 28, 16)
454 (insecure_against :), 5)); _for_each_inner!((Sha512_256, "SHA-512/256"(sizes :
455 128, 32, 16) (insecure_against :), 6)); _for_each_inner!((algos(Sha1,
456 "SHA-1"(sizes : 64, 20, 8) (insecure_against : "collision", "length extension"),
457 0), (Sha224, "SHA-224"(sizes : 64, 28, 8) (insecure_against :
458 "length extension"), 1), (Sha256, "SHA-256"(sizes : 64, 32, 8) (insecure_against
459 : "length extension"), 2), (Sha384, "SHA-384"(sizes : 128, 48, 16)
460 (insecure_against :), 3), (Sha512, "SHA-512"(sizes : 128, 64, 16)
461 (insecure_against : "length extension"), 4), (Sha512_224, "SHA-512/224"(sizes :
462 128, 28, 16) (insecure_against :), 5), (Sha512_256, "SHA-512/256"(sizes : 128,
463 32, 16) (insecure_against :), 6)));
464 };
465}
466#[macro_export]
483#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
484macro_rules! for_each_i2c_master {
485 ($($pattern:tt => $code:tt;)*) => {
486 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
487 _for_each_inner!((I2C0, I2cExt0, I2CEXT0_SCL, I2CEXT0_SDA));
488 _for_each_inner!((I2C1, I2cExt1, I2CEXT1_SCL, I2CEXT1_SDA));
489 _for_each_inner!((all(I2C0, I2cExt0, I2CEXT0_SCL, I2CEXT0_SDA), (I2C1, I2cExt1,
490 I2CEXT1_SCL, I2CEXT1_SDA)));
491 };
492}
493#[macro_export]
510#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
511macro_rules! for_each_uart {
512 ($($pattern:tt => $code:tt;)*) => {
513 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
514 _for_each_inner!((UART0, Uart0, U0RXD, U0TXD, U0CTS, U0RTS));
515 _for_each_inner!((UART1, Uart1, U1RXD, U1TXD, U1CTS, U1RTS));
516 _for_each_inner!((UART2, Uart2, U2RXD, U2TXD, U2CTS, U2RTS));
517 _for_each_inner!((all(UART0, Uart0, U0RXD, U0TXD, U0CTS, U0RTS), (UART1, Uart1,
518 U1RXD, U1TXD, U1CTS, U1RTS), (UART2, Uart2, U2RXD, U2TXD, U2CTS, U2RTS)));
519 };
520}
521#[macro_export]
543#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
544macro_rules! for_each_spi_master {
545 ($($pattern:tt => $code:tt;)*) => {
546 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
547 _for_each_inner!((SPI2, Spi2, FSPICLK[FSPICS0, FSPICS1, FSPICS2, FSPICS3,
548 FSPICS4, FSPICS5] [FSPID, FSPIQ, FSPIWP, FSPIHD, FSPIIO4, FSPIIO5, FSPIIO6,
549 FSPIIO7], true)); _for_each_inner!((SPI3, Spi3, SPI3_CLK[SPI3_CS0, SPI3_CS1,
550 SPI3_CS2] [SPI3_D, SPI3_Q, SPI3_WP, SPI3_HD], true)); _for_each_inner!((all(SPI2,
551 Spi2, FSPICLK[FSPICS0, FSPICS1, FSPICS2, FSPICS3, FSPICS4, FSPICS5] [FSPID,
552 FSPIQ, FSPIWP, FSPIHD, FSPIIO4, FSPIIO5, FSPIIO6, FSPIIO7], true), (SPI3, Spi3,
553 SPI3_CLK[SPI3_CS0, SPI3_CS1, SPI3_CS2] [SPI3_D, SPI3_Q, SPI3_WP, SPI3_HD],
554 true)));
555 };
556}
557#[macro_export]
574#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
575macro_rules! for_each_spi_slave {
576 ($($pattern:tt => $code:tt;)*) => {
577 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
578 _for_each_inner!((SPI2, Spi2, FSPICLK, FSPID, FSPIQ, FSPICS0));
579 _for_each_inner!((SPI3, Spi3, SPI3_CLK, SPI3_D, SPI3_Q, SPI3_CS0));
580 _for_each_inner!((all(SPI2, Spi2, FSPICLK, FSPID, FSPIQ, FSPICS0), (SPI3, Spi3,
581 SPI3_CLK, SPI3_D, SPI3_Q, SPI3_CS0)));
582 };
583}
584#[macro_export]
585#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
586macro_rules! for_each_peripheral {
587 ($($pattern:tt => $code:tt;)*) => {
588 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
589 _for_each_inner!((GPIO0 <= virtual())); _for_each_inner!((GPIO1 <= virtual()));
590 _for_each_inner!((GPIO2 <= virtual())); _for_each_inner!((GPIO3 <= virtual()));
591 _for_each_inner!((GPIO4 <= virtual())); _for_each_inner!((GPIO5 <= virtual()));
592 _for_each_inner!((GPIO6 <= virtual())); _for_each_inner!((GPIO7 <= virtual()));
593 _for_each_inner!((GPIO8 <= virtual())); _for_each_inner!((GPIO9 <= virtual()));
594 _for_each_inner!((GPIO10 <= virtual())); _for_each_inner!((GPIO11 <= virtual()));
595 _for_each_inner!((GPIO12 <= virtual())); _for_each_inner!((GPIO13 <= virtual()));
596 _for_each_inner!((GPIO14 <= virtual())); _for_each_inner!((GPIO15 <= virtual()));
597 _for_each_inner!((GPIO16 <= virtual())); _for_each_inner!((GPIO17 <= virtual()));
598 _for_each_inner!((GPIO18 <= virtual())); _for_each_inner!((GPIO19 <= virtual()));
599 _for_each_inner!((GPIO20 <= virtual())); _for_each_inner!((GPIO21 <= virtual()));
600 _for_each_inner!((GPIO33 <= virtual())); _for_each_inner!((GPIO34 <= virtual()));
601 _for_each_inner!((GPIO35 <= virtual())); _for_each_inner!((GPIO36 <= virtual()));
602 _for_each_inner!((GPIO37 <= virtual())); _for_each_inner!((GPIO38 <= virtual()));
603 _for_each_inner!((GPIO39 <= virtual())); _for_each_inner!((GPIO40 <= virtual()));
604 _for_each_inner!((GPIO41 <= virtual())); _for_each_inner!((GPIO42 <= virtual()));
605 _for_each_inner!((GPIO43 <= virtual())); _for_each_inner!((GPIO44 <= virtual()));
606 _for_each_inner!((GPIO45 <= virtual())); _for_each_inner!((GPIO46 <= virtual()));
607 _for_each_inner!((GPIO47 <= virtual())); _for_each_inner!((GPIO48 <= virtual()));
608 _for_each_inner!((AES <= AES(AES : { bind_peri_interrupt, enable_peri_interrupt,
609 disable_peri_interrupt }) (unstable))); _for_each_inner!((APB_CTRL <= APB_CTRL()
610 (unstable))); _for_each_inner!((APB_SARADC <= APB_SARADC() (unstable)));
611 _for_each_inner!((ASSIST_DEBUG <= ASSIST_DEBUG() (unstable)));
612 _for_each_inner!((DMA <= DMA() (unstable))); _for_each_inner!((DS <= DS()
613 (unstable))); _for_each_inner!((EFUSE <= EFUSE() (unstable)));
614 _for_each_inner!((EXTMEM <= EXTMEM() (unstable))); _for_each_inner!((GPIO <=
615 GPIO() (unstable))); _for_each_inner!((GPIO_SD <= GPIO_SD() (unstable)));
616 _for_each_inner!((HMAC <= HMAC() (unstable))); _for_each_inner!((I2C0 <=
617 I2C0(I2C_EXT0 : { bind_peri_interrupt, enable_peri_interrupt,
618 disable_peri_interrupt }))); _for_each_inner!((I2C1 <= I2C1(I2C_EXT1 : {
619 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })));
620 _for_each_inner!((I2S0 <= I2S0(I2S0 : { bind_peri_interrupt,
621 enable_peri_interrupt, disable_peri_interrupt }) (unstable)));
622 _for_each_inner!((I2S1 <= I2S1(I2S1 : { bind_peri_interrupt,
623 enable_peri_interrupt, disable_peri_interrupt }) (unstable)));
624 _for_each_inner!((INTERRUPT_CORE0 <= INTERRUPT_CORE0() (unstable)));
625 _for_each_inner!((INTERRUPT_CORE1 <= INTERRUPT_CORE1() (unstable)));
626 _for_each_inner!((IO_MUX <= IO_MUX() (unstable))); _for_each_inner!((LCD_CAM <=
627 LCD_CAM() (unstable))); _for_each_inner!((LEDC <= LEDC() (unstable)));
628 _for_each_inner!((LPWR <= RTC_CNTL() (unstable))); _for_each_inner!((MCPWM0 <=
629 MCPWM0() (unstable))); _for_each_inner!((MCPWM1 <= MCPWM1() (unstable)));
630 _for_each_inner!((PCNT <= PCNT() (unstable))); _for_each_inner!((PERI_BACKUP <=
631 PERI_BACKUP() (unstable))); _for_each_inner!((RMT <= RMT() (unstable)));
632 _for_each_inner!((RNG <= RNG() (unstable))); _for_each_inner!((RSA <= RSA(RSA : {
633 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
634 (unstable))); _for_each_inner!((RTC_CNTL <= RTC_CNTL() (unstable)));
635 _for_each_inner!((RTC_I2C <= RTC_I2C() (unstable))); _for_each_inner!((RTC_IO <=
636 RTC_IO() (unstable))); _for_each_inner!((SDHOST <= SDHOST() (unstable)));
637 _for_each_inner!((SENS <= SENS() (unstable))); _for_each_inner!((SENSITIVE <=
638 SENSITIVE() (unstable))); _for_each_inner!((SHA <= SHA(SHA : {
639 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
640 (unstable))); _for_each_inner!((SPI0 <= SPI0() (unstable)));
641 _for_each_inner!((SPI1 <= SPI1() (unstable))); _for_each_inner!((SPI2 <=
642 SPI2(SPI2 : { bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt
643 }))); _for_each_inner!((SPI3 <= SPI3(SPI3 : { bind_peri_interrupt,
644 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((SYSTEM <=
645 SYSTEM() (unstable))); _for_each_inner!((SYSTIMER <= SYSTIMER() (unstable)));
646 _for_each_inner!((TIMG0 <= TIMG0() (unstable))); _for_each_inner!((TIMG1 <=
647 TIMG1() (unstable))); _for_each_inner!((TWAI0 <= TWAI0() (unstable)));
648 _for_each_inner!((UART0 <= UART0(UART0 : { bind_peri_interrupt,
649 enable_peri_interrupt, disable_peri_interrupt }))); _for_each_inner!((UART1 <=
650 UART1(UART1 : { bind_peri_interrupt, enable_peri_interrupt,
651 disable_peri_interrupt }))); _for_each_inner!((UART2 <= UART2(UART2 : {
652 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })));
653 _for_each_inner!((UHCI0 <= UHCI0() (unstable))); _for_each_inner!((USB0 <= USB0()
654 (unstable))); _for_each_inner!((USB_DEVICE <= USB_DEVICE(USB_DEVICE : {
655 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
656 (unstable))); _for_each_inner!((USB_WRAP <= USB_WRAP() (unstable)));
657 _for_each_inner!((WCL <= WCL() (unstable))); _for_each_inner!((XTS_AES <=
658 XTS_AES() (unstable))); _for_each_inner!((DMA_CH0 <= virtual() (unstable)));
659 _for_each_inner!((DMA_CH1 <= virtual() (unstable))); _for_each_inner!((DMA_CH2 <=
660 virtual() (unstable))); _for_each_inner!((DMA_CH3 <= virtual() (unstable)));
661 _for_each_inner!((DMA_CH4 <= virtual() (unstable))); _for_each_inner!((ADC1 <=
662 virtual() (unstable))); _for_each_inner!((ADC2 <= virtual() (unstable)));
663 _for_each_inner!((BT <= virtual() (unstable))); _for_each_inner!((CPU_CTRL <=
664 virtual() (unstable))); _for_each_inner!((FLASH <= virtual() (unstable)));
665 _for_each_inner!((PSRAM <= virtual() (unstable))); _for_each_inner!((SW_INTERRUPT
666 <= virtual() (unstable))); _for_each_inner!((ULP_RISCV_CORE <= virtual()
667 (unstable))); _for_each_inner!((WIFI <= virtual() (unstable)));
668 _for_each_inner!((all(GPIO0 <= virtual()), (GPIO1 <= virtual()), (GPIO2 <=
669 virtual()), (GPIO3 <= virtual()), (GPIO4 <= virtual()), (GPIO5 <= virtual()),
670 (GPIO6 <= virtual()), (GPIO7 <= virtual()), (GPIO8 <= virtual()), (GPIO9 <=
671 virtual()), (GPIO10 <= virtual()), (GPIO11 <= virtual()), (GPIO12 <= virtual()),
672 (GPIO13 <= virtual()), (GPIO14 <= virtual()), (GPIO15 <= virtual()), (GPIO16 <=
673 virtual()), (GPIO17 <= virtual()), (GPIO18 <= virtual()), (GPIO19 <= virtual()),
674 (GPIO20 <= virtual()), (GPIO21 <= virtual()), (GPIO33 <= virtual()), (GPIO34 <=
675 virtual()), (GPIO35 <= virtual()), (GPIO36 <= virtual()), (GPIO37 <= virtual()),
676 (GPIO38 <= virtual()), (GPIO39 <= virtual()), (GPIO40 <= virtual()), (GPIO41 <=
677 virtual()), (GPIO42 <= virtual()), (GPIO43 <= virtual()), (GPIO44 <= virtual()),
678 (GPIO45 <= virtual()), (GPIO46 <= virtual()), (GPIO47 <= virtual()), (GPIO48 <=
679 virtual()), (AES <= AES(AES : { bind_peri_interrupt, enable_peri_interrupt,
680 disable_peri_interrupt }) (unstable)), (APB_CTRL <= APB_CTRL() (unstable)),
681 (APB_SARADC <= APB_SARADC() (unstable)), (ASSIST_DEBUG <= ASSIST_DEBUG()
682 (unstable)), (DMA <= DMA() (unstable)), (DS <= DS() (unstable)), (EFUSE <=
683 EFUSE() (unstable)), (EXTMEM <= EXTMEM() (unstable)), (GPIO <= GPIO()
684 (unstable)), (GPIO_SD <= GPIO_SD() (unstable)), (HMAC <= HMAC() (unstable)),
685 (I2C0 <= I2C0(I2C_EXT0 : { bind_peri_interrupt, enable_peri_interrupt,
686 disable_peri_interrupt })), (I2C1 <= I2C1(I2C_EXT1 : { bind_peri_interrupt,
687 enable_peri_interrupt, disable_peri_interrupt })), (I2S0 <= I2S0(I2S0 : {
688 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })
689 (unstable)), (I2S1 <= I2S1(I2S1 : { bind_peri_interrupt, enable_peri_interrupt,
690 disable_peri_interrupt }) (unstable)), (INTERRUPT_CORE0 <= INTERRUPT_CORE0()
691 (unstable)), (INTERRUPT_CORE1 <= INTERRUPT_CORE1() (unstable)), (IO_MUX <=
692 IO_MUX() (unstable)), (LCD_CAM <= LCD_CAM() (unstable)), (LEDC <= LEDC()
693 (unstable)), (LPWR <= RTC_CNTL() (unstable)), (MCPWM0 <= MCPWM0() (unstable)),
694 (MCPWM1 <= MCPWM1() (unstable)), (PCNT <= PCNT() (unstable)), (PERI_BACKUP <=
695 PERI_BACKUP() (unstable)), (RMT <= RMT() (unstable)), (RNG <= RNG() (unstable)),
696 (RSA <= RSA(RSA : { bind_peri_interrupt, enable_peri_interrupt,
697 disable_peri_interrupt }) (unstable)), (RTC_CNTL <= RTC_CNTL() (unstable)),
698 (RTC_I2C <= RTC_I2C() (unstable)), (RTC_IO <= RTC_IO() (unstable)), (SDHOST <=
699 SDHOST() (unstable)), (SENS <= SENS() (unstable)), (SENSITIVE <= SENSITIVE()
700 (unstable)), (SHA <= SHA(SHA : { bind_peri_interrupt, enable_peri_interrupt,
701 disable_peri_interrupt }) (unstable)), (SPI0 <= SPI0() (unstable)), (SPI1 <=
702 SPI1() (unstable)), (SPI2 <= SPI2(SPI2 : { bind_peri_interrupt,
703 enable_peri_interrupt, disable_peri_interrupt })), (SPI3 <= SPI3(SPI3 : {
704 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (SYSTEM
705 <= SYSTEM() (unstable)), (SYSTIMER <= SYSTIMER() (unstable)), (TIMG0 <= TIMG0()
706 (unstable)), (TIMG1 <= TIMG1() (unstable)), (TWAI0 <= TWAI0() (unstable)), (UART0
707 <= UART0(UART0 : { bind_peri_interrupt, enable_peri_interrupt,
708 disable_peri_interrupt })), (UART1 <= UART1(UART1 : { bind_peri_interrupt,
709 enable_peri_interrupt, disable_peri_interrupt })), (UART2 <= UART2(UART2 : {
710 bind_peri_interrupt, enable_peri_interrupt, disable_peri_interrupt })), (UHCI0 <=
711 UHCI0() (unstable)), (USB0 <= USB0() (unstable)), (USB_DEVICE <=
712 USB_DEVICE(USB_DEVICE : { bind_peri_interrupt, enable_peri_interrupt,
713 disable_peri_interrupt }) (unstable)), (USB_WRAP <= USB_WRAP() (unstable)), (WCL
714 <= WCL() (unstable)), (XTS_AES <= XTS_AES() (unstable)), (DMA_CH0 <= virtual()
715 (unstable)), (DMA_CH1 <= virtual() (unstable)), (DMA_CH2 <= virtual()
716 (unstable)), (DMA_CH3 <= virtual() (unstable)), (DMA_CH4 <= virtual()
717 (unstable)), (ADC1 <= virtual() (unstable)), (ADC2 <= virtual() (unstable)), (BT
718 <= virtual() (unstable)), (CPU_CTRL <= virtual() (unstable)), (FLASH <= virtual()
719 (unstable)), (PSRAM <= virtual() (unstable)), (SW_INTERRUPT <= virtual()
720 (unstable)), (ULP_RISCV_CORE <= virtual() (unstable)), (WIFI <= virtual()
721 (unstable))));
722 };
723}
724#[macro_export]
751#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
752macro_rules! for_each_gpio {
753 ($($pattern:tt => $code:tt;)*) => {
754 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
755 _for_each_inner!((0, GPIO0() () ([Input] [Output]))); _for_each_inner!((1,
756 GPIO1() () ([Input] [Output]))); _for_each_inner!((2, GPIO2() () ([Input]
757 [Output]))); _for_each_inner!((3, GPIO3() () ([Input] [Output])));
758 _for_each_inner!((4, GPIO4() () ([Input] [Output]))); _for_each_inner!((5,
759 GPIO5() () ([Input] [Output]))); _for_each_inner!((6, GPIO6() () ([Input]
760 [Output]))); _for_each_inner!((7, GPIO7() () ([Input] [Output])));
761 _for_each_inner!((8, GPIO8() (_3 => SUBSPICS1) ([Input] [Output])));
762 _for_each_inner!((9, GPIO9(_3 => SUBSPIHD _4 => FSPIHD) (_3 => SUBSPIHD _4 =>
763 FSPIHD) ([Input] [Output]))); _for_each_inner!((10, GPIO10(_2 => FSPIIO4 _4 =>
764 FSPICS0) (_2 => FSPIIO4 _3 => SUBSPICS0 _4 => FSPICS0) ([Input] [Output])));
765 _for_each_inner!((11, GPIO11(_2 => FSPIIO5 _3 => SUBSPID _4 => FSPID) (_2 =>
766 FSPIIO5 _3 => SUBSPID _4 => FSPID) ([Input] [Output]))); _for_each_inner!((12,
767 GPIO12(_2 => FSPIIO6 _4 => FSPICLK) (_2 => FSPIIO6 _3 => SUBSPICLK _4 => FSPICLK)
768 ([Input] [Output]))); _for_each_inner!((13, GPIO13(_2 => FSPIIO7 _3 => SUBSPIQ _4
769 => FSPIQ) (_2 => FSPIIO7 _3 => SUBSPIQ _4 => FSPIQ) ([Input] [Output])));
770 _for_each_inner!((14, GPIO14(_3 => SUBSPIWP _4 => FSPIWP) (_2 => FSPIDQS _3 =>
771 SUBSPIWP _4 => FSPIWP) ([Input] [Output]))); _for_each_inner!((15, GPIO15() (_2
772 => U0RTS) ([Input] [Output]))); _for_each_inner!((16, GPIO16(_2 => U0CTS) ()
773 ([Input] [Output]))); _for_each_inner!((17, GPIO17() (_2 => U1TXD) ([Input]
774 [Output]))); _for_each_inner!((18, GPIO18(_2 => U1RXD) (_3 => CLK_OUT3) ([Input]
775 [Output]))); _for_each_inner!((19, GPIO19() (_2 => U1RTS _3 => CLK_OUT2) ([Input]
776 [Output]))); _for_each_inner!((20, GPIO20(_2 => U1CTS) (_3 => CLK_OUT1) ([Input]
777 [Output]))); _for_each_inner!((21, GPIO21() () ([Input] [Output])));
778 _for_each_inner!((33, GPIO33(_2 => FSPIHD _3 => SUBSPIHD _4 => SPIIO4) (_2 =>
779 FSPIHD _3 => SUBSPIHD _4 => SPIIO4) ([Input] [Output]))); _for_each_inner!((34,
780 GPIO34(_2 => FSPICS0 _4 => SPIIO5) (_2 => FSPICS0 _3 => SUBSPICS0 _4 => SPIIO5)
781 ([Input] [Output]))); _for_each_inner!((35, GPIO35(_2 => FSPID _3 => SUBSPID _4
782 => SPIIO6) (_2 => FSPID _3 => SUBSPID _4 => SPIIO6) ([Input] [Output])));
783 _for_each_inner!((36, GPIO36(_2 => FSPICLK _4 => SPIIO7) (_2 => FSPICLK _3 =>
784 SUBSPICLK _4 => SPIIO7) ([Input] [Output]))); _for_each_inner!((37, GPIO37(_2 =>
785 FSPIQ _3 => SUBSPIQ _4 => SPIDQS) (_2 => FSPIQ _3 => SUBSPIQ _4 => SPIDQS)
786 ([Input] [Output]))); _for_each_inner!((38, GPIO38(_2 => FSPIWP _3 => SUBSPIWP)
787 (_2 => FSPIWP _3 => SUBSPIWP) ([Input] [Output]))); _for_each_inner!((39,
788 GPIO39() (_2 => CLK_OUT3 _3 => SUBSPICS1) ([Input] [Output])));
789 _for_each_inner!((40, GPIO40() (_2 => CLK_OUT2) ([Input] [Output])));
790 _for_each_inner!((41, GPIO41() (_2 => CLK_OUT1) ([Input] [Output])));
791 _for_each_inner!((42, GPIO42() () ([Input] [Output]))); _for_each_inner!((43,
792 GPIO43() (_0 => U0TXD _2 => CLK_OUT1) ([Input] [Output]))); _for_each_inner!((44,
793 GPIO44(_0 => U0RXD) (_2 => CLK_OUT2) ([Input] [Output]))); _for_each_inner!((45,
794 GPIO45() () ([Input] [Output]))); _for_each_inner!((46, GPIO46() () ([Input]
795 [Output]))); _for_each_inner!((47, GPIO47() (_0 => SPICLK_P_DIFF _2 =>
796 SUBSPICLK_P_DIFF) ([Input] [Output]))); _for_each_inner!((48, GPIO48() (_0 =>
797 SPICLK_N_DIFF _2 => SUBSPICLK_N_DIFF) ([Input] [Output])));
798 _for_each_inner!((all(0, GPIO0() () ([Input] [Output])), (1, GPIO1() () ([Input]
799 [Output])), (2, GPIO2() () ([Input] [Output])), (3, GPIO3() () ([Input]
800 [Output])), (4, GPIO4() () ([Input] [Output])), (5, GPIO5() () ([Input]
801 [Output])), (6, GPIO6() () ([Input] [Output])), (7, GPIO7() () ([Input]
802 [Output])), (8, GPIO8() (_3 => SUBSPICS1) ([Input] [Output])), (9, GPIO9(_3 =>
803 SUBSPIHD _4 => FSPIHD) (_3 => SUBSPIHD _4 => FSPIHD) ([Input] [Output])), (10,
804 GPIO10(_2 => FSPIIO4 _4 => FSPICS0) (_2 => FSPIIO4 _3 => SUBSPICS0 _4 => FSPICS0)
805 ([Input] [Output])), (11, GPIO11(_2 => FSPIIO5 _3 => SUBSPID _4 => FSPID) (_2 =>
806 FSPIIO5 _3 => SUBSPID _4 => FSPID) ([Input] [Output])), (12, GPIO12(_2 => FSPIIO6
807 _4 => FSPICLK) (_2 => FSPIIO6 _3 => SUBSPICLK _4 => FSPICLK) ([Input] [Output])),
808 (13, GPIO13(_2 => FSPIIO7 _3 => SUBSPIQ _4 => FSPIQ) (_2 => FSPIIO7 _3 => SUBSPIQ
809 _4 => FSPIQ) ([Input] [Output])), (14, GPIO14(_3 => SUBSPIWP _4 => FSPIWP) (_2 =>
810 FSPIDQS _3 => SUBSPIWP _4 => FSPIWP) ([Input] [Output])), (15, GPIO15() (_2 =>
811 U0RTS) ([Input] [Output])), (16, GPIO16(_2 => U0CTS) () ([Input] [Output])), (17,
812 GPIO17() (_2 => U1TXD) ([Input] [Output])), (18, GPIO18(_2 => U1RXD) (_3 =>
813 CLK_OUT3) ([Input] [Output])), (19, GPIO19() (_2 => U1RTS _3 => CLK_OUT2)
814 ([Input] [Output])), (20, GPIO20(_2 => U1CTS) (_3 => CLK_OUT1) ([Input]
815 [Output])), (21, GPIO21() () ([Input] [Output])), (33, GPIO33(_2 => FSPIHD _3 =>
816 SUBSPIHD _4 => SPIIO4) (_2 => FSPIHD _3 => SUBSPIHD _4 => SPIIO4) ([Input]
817 [Output])), (34, GPIO34(_2 => FSPICS0 _4 => SPIIO5) (_2 => FSPICS0 _3 =>
818 SUBSPICS0 _4 => SPIIO5) ([Input] [Output])), (35, GPIO35(_2 => FSPID _3 =>
819 SUBSPID _4 => SPIIO6) (_2 => FSPID _3 => SUBSPID _4 => SPIIO6) ([Input]
820 [Output])), (36, GPIO36(_2 => FSPICLK _4 => SPIIO7) (_2 => FSPICLK _3 =>
821 SUBSPICLK _4 => SPIIO7) ([Input] [Output])), (37, GPIO37(_2 => FSPIQ _3 =>
822 SUBSPIQ _4 => SPIDQS) (_2 => FSPIQ _3 => SUBSPIQ _4 => SPIDQS) ([Input]
823 [Output])), (38, GPIO38(_2 => FSPIWP _3 => SUBSPIWP) (_2 => FSPIWP _3 =>
824 SUBSPIWP) ([Input] [Output])), (39, GPIO39() (_2 => CLK_OUT3 _3 => SUBSPICS1)
825 ([Input] [Output])), (40, GPIO40() (_2 => CLK_OUT2) ([Input] [Output])), (41,
826 GPIO41() (_2 => CLK_OUT1) ([Input] [Output])), (42, GPIO42() () ([Input]
827 [Output])), (43, GPIO43() (_0 => U0TXD _2 => CLK_OUT1) ([Input] [Output])), (44,
828 GPIO44(_0 => U0RXD) (_2 => CLK_OUT2) ([Input] [Output])), (45, GPIO45() ()
829 ([Input] [Output])), (46, GPIO46() () ([Input] [Output])), (47, GPIO47() (_0 =>
830 SPICLK_P_DIFF _2 => SUBSPICLK_P_DIFF) ([Input] [Output])), (48, GPIO48() (_0 =>
831 SPICLK_N_DIFF _2 => SUBSPICLK_N_DIFF) ([Input] [Output]))));
832 };
833}
834#[macro_export]
861#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
862macro_rules! for_each_analog_function {
863 ($($pattern:tt => $code:tt;)*) => {
864 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
865 _for_each_inner!((TOUCH1, GPIO1)); _for_each_inner!((ADC1_CH0, GPIO1));
866 _for_each_inner!((TOUCH2, GPIO2)); _for_each_inner!((ADC1_CH1, GPIO2));
867 _for_each_inner!((TOUCH3, GPIO3)); _for_each_inner!((ADC1_CH2, GPIO3));
868 _for_each_inner!((TOUCH4, GPIO4)); _for_each_inner!((ADC1_CH3, GPIO4));
869 _for_each_inner!((TOUCH5, GPIO5)); _for_each_inner!((ADC1_CH4, GPIO5));
870 _for_each_inner!((TOUCH6, GPIO6)); _for_each_inner!((ADC1_CH5, GPIO6));
871 _for_each_inner!((TOUCH7, GPIO7)); _for_each_inner!((ADC1_CH6, GPIO7));
872 _for_each_inner!((TOUCH8, GPIO8)); _for_each_inner!((ADC1_CH7, GPIO8));
873 _for_each_inner!((TOUCH9, GPIO9)); _for_each_inner!((ADC1_CH8, GPIO9));
874 _for_each_inner!((TOUCH10, GPIO10)); _for_each_inner!((ADC1_CH9, GPIO10));
875 _for_each_inner!((TOUCH11, GPIO11)); _for_each_inner!((ADC2_CH0, GPIO11));
876 _for_each_inner!((TOUCH12, GPIO12)); _for_each_inner!((ADC2_CH1, GPIO12));
877 _for_each_inner!((TOUCH13, GPIO13)); _for_each_inner!((ADC2_CH2, GPIO13));
878 _for_each_inner!((TOUCH14, GPIO14)); _for_each_inner!((ADC2_CH3, GPIO14));
879 _for_each_inner!((XTAL_32K_P, GPIO15)); _for_each_inner!((ADC2_CH4, GPIO15));
880 _for_each_inner!((XTAL_32K_N, GPIO16)); _for_each_inner!((ADC2_CH5, GPIO16));
881 _for_each_inner!((ADC2_CH6, GPIO17)); _for_each_inner!((ADC2_CH7, GPIO18));
882 _for_each_inner!((USB_DM, GPIO19)); _for_each_inner!((ADC2_CH8, GPIO19));
883 _for_each_inner!((USB_DP, GPIO20)); _for_each_inner!((ADC2_CH9, GPIO20));
884 _for_each_inner!(((TOUCH1, TOUCHn, 1), GPIO1)); _for_each_inner!(((ADC1_CH0,
885 ADCn_CHm, 1, 0), GPIO1)); _for_each_inner!(((TOUCH2, TOUCHn, 2), GPIO2));
886 _for_each_inner!(((ADC1_CH1, ADCn_CHm, 1, 1), GPIO2)); _for_each_inner!(((TOUCH3,
887 TOUCHn, 3), GPIO3)); _for_each_inner!(((ADC1_CH2, ADCn_CHm, 1, 2), GPIO3));
888 _for_each_inner!(((TOUCH4, TOUCHn, 4), GPIO4)); _for_each_inner!(((ADC1_CH3,
889 ADCn_CHm, 1, 3), GPIO4)); _for_each_inner!(((TOUCH5, TOUCHn, 5), GPIO5));
890 _for_each_inner!(((ADC1_CH4, ADCn_CHm, 1, 4), GPIO5)); _for_each_inner!(((TOUCH6,
891 TOUCHn, 6), GPIO6)); _for_each_inner!(((ADC1_CH5, ADCn_CHm, 1, 5), GPIO6));
892 _for_each_inner!(((TOUCH7, TOUCHn, 7), GPIO7)); _for_each_inner!(((ADC1_CH6,
893 ADCn_CHm, 1, 6), GPIO7)); _for_each_inner!(((TOUCH8, TOUCHn, 8), GPIO8));
894 _for_each_inner!(((ADC1_CH7, ADCn_CHm, 1, 7), GPIO8)); _for_each_inner!(((TOUCH9,
895 TOUCHn, 9), GPIO9)); _for_each_inner!(((ADC1_CH8, ADCn_CHm, 1, 8), GPIO9));
896 _for_each_inner!(((TOUCH10, TOUCHn, 10), GPIO10)); _for_each_inner!(((ADC1_CH9,
897 ADCn_CHm, 1, 9), GPIO10)); _for_each_inner!(((TOUCH11, TOUCHn, 11), GPIO11));
898 _for_each_inner!(((ADC2_CH0, ADCn_CHm, 2, 0), GPIO11));
899 _for_each_inner!(((TOUCH12, TOUCHn, 12), GPIO12)); _for_each_inner!(((ADC2_CH1,
900 ADCn_CHm, 2, 1), GPIO12)); _for_each_inner!(((TOUCH13, TOUCHn, 13), GPIO13));
901 _for_each_inner!(((ADC2_CH2, ADCn_CHm, 2, 2), GPIO13));
902 _for_each_inner!(((TOUCH14, TOUCHn, 14), GPIO14)); _for_each_inner!(((ADC2_CH3,
903 ADCn_CHm, 2, 3), GPIO14)); _for_each_inner!(((ADC2_CH4, ADCn_CHm, 2, 4),
904 GPIO15)); _for_each_inner!(((ADC2_CH5, ADCn_CHm, 2, 5), GPIO16));
905 _for_each_inner!(((ADC2_CH6, ADCn_CHm, 2, 6), GPIO17));
906 _for_each_inner!(((ADC2_CH7, ADCn_CHm, 2, 7), GPIO18));
907 _for_each_inner!(((ADC2_CH8, ADCn_CHm, 2, 8), GPIO19));
908 _for_each_inner!(((ADC2_CH9, ADCn_CHm, 2, 9), GPIO20));
909 _for_each_inner!((all(TOUCH1, GPIO1), (ADC1_CH0, GPIO1), (TOUCH2, GPIO2),
910 (ADC1_CH1, GPIO2), (TOUCH3, GPIO3), (ADC1_CH2, GPIO3), (TOUCH4, GPIO4),
911 (ADC1_CH3, GPIO4), (TOUCH5, GPIO5), (ADC1_CH4, GPIO5), (TOUCH6, GPIO6),
912 (ADC1_CH5, GPIO6), (TOUCH7, GPIO7), (ADC1_CH6, GPIO7), (TOUCH8, GPIO8),
913 (ADC1_CH7, GPIO8), (TOUCH9, GPIO9), (ADC1_CH8, GPIO9), (TOUCH10, GPIO10),
914 (ADC1_CH9, GPIO10), (TOUCH11, GPIO11), (ADC2_CH0, GPIO11), (TOUCH12, GPIO12),
915 (ADC2_CH1, GPIO12), (TOUCH13, GPIO13), (ADC2_CH2, GPIO13), (TOUCH14, GPIO14),
916 (ADC2_CH3, GPIO14), (XTAL_32K_P, GPIO15), (ADC2_CH4, GPIO15), (XTAL_32K_N,
917 GPIO16), (ADC2_CH5, GPIO16), (ADC2_CH6, GPIO17), (ADC2_CH7, GPIO18), (USB_DM,
918 GPIO19), (ADC2_CH8, GPIO19), (USB_DP, GPIO20), (ADC2_CH9, GPIO20)));
919 _for_each_inner!((all_expanded((TOUCH1, TOUCHn, 1), GPIO1), ((ADC1_CH0, ADCn_CHm,
920 1, 0), GPIO1), ((TOUCH2, TOUCHn, 2), GPIO2), ((ADC1_CH1, ADCn_CHm, 1, 1), GPIO2),
921 ((TOUCH3, TOUCHn, 3), GPIO3), ((ADC1_CH2, ADCn_CHm, 1, 2), GPIO3), ((TOUCH4,
922 TOUCHn, 4), GPIO4), ((ADC1_CH3, ADCn_CHm, 1, 3), GPIO4), ((TOUCH5, TOUCHn, 5),
923 GPIO5), ((ADC1_CH4, ADCn_CHm, 1, 4), GPIO5), ((TOUCH6, TOUCHn, 6), GPIO6),
924 ((ADC1_CH5, ADCn_CHm, 1, 5), GPIO6), ((TOUCH7, TOUCHn, 7), GPIO7), ((ADC1_CH6,
925 ADCn_CHm, 1, 6), GPIO7), ((TOUCH8, TOUCHn, 8), GPIO8), ((ADC1_CH7, ADCn_CHm, 1,
926 7), GPIO8), ((TOUCH9, TOUCHn, 9), GPIO9), ((ADC1_CH8, ADCn_CHm, 1, 8), GPIO9),
927 ((TOUCH10, TOUCHn, 10), GPIO10), ((ADC1_CH9, ADCn_CHm, 1, 9), GPIO10), ((TOUCH11,
928 TOUCHn, 11), GPIO11), ((ADC2_CH0, ADCn_CHm, 2, 0), GPIO11), ((TOUCH12, TOUCHn,
929 12), GPIO12), ((ADC2_CH1, ADCn_CHm, 2, 1), GPIO12), ((TOUCH13, TOUCHn, 13),
930 GPIO13), ((ADC2_CH2, ADCn_CHm, 2, 2), GPIO13), ((TOUCH14, TOUCHn, 14), GPIO14),
931 ((ADC2_CH3, ADCn_CHm, 2, 3), GPIO14), ((ADC2_CH4, ADCn_CHm, 2, 4), GPIO15),
932 ((ADC2_CH5, ADCn_CHm, 2, 5), GPIO16), ((ADC2_CH6, ADCn_CHm, 2, 6), GPIO17),
933 ((ADC2_CH7, ADCn_CHm, 2, 7), GPIO18), ((ADC2_CH8, ADCn_CHm, 2, 8), GPIO19),
934 ((ADC2_CH9, ADCn_CHm, 2, 9), GPIO20)));
935 };
936}
937#[macro_export]
964#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
965macro_rules! for_each_lp_function {
966 ($($pattern:tt => $code:tt;)*) => {
967 macro_rules! _for_each_inner { $(($pattern) => $code;)* ($other : tt) => {} }
968 _for_each_inner!((RTC_GPIO0, GPIO0)); _for_each_inner!((SAR_I2C_SCL_0, GPIO0));
969 _for_each_inner!((RTC_GPIO1, GPIO1)); _for_each_inner!((SAR_I2C_SDA_0, GPIO1));
970 _for_each_inner!((RTC_GPIO2, GPIO2)); _for_each_inner!((SAR_I2C_SCL_1, GPIO2));
971 _for_each_inner!((RTC_GPIO3, GPIO3)); _for_each_inner!((SAR_I2C_SDA_1, GPIO3));
972 _for_each_inner!((RTC_GPIO4, GPIO4)); _for_each_inner!((RTC_GPIO5, GPIO5));
973 _for_each_inner!((RTC_GPIO6, GPIO6)); _for_each_inner!((RTC_GPIO7, GPIO7));
974 _for_each_inner!((RTC_GPIO8, GPIO8)); _for_each_inner!((RTC_GPIO9, GPIO9));
975 _for_each_inner!((RTC_GPIO10, GPIO10)); _for_each_inner!((RTC_GPIO11, GPIO11));
976 _for_each_inner!((RTC_GPIO12, GPIO12)); _for_each_inner!((RTC_GPIO13, GPIO13));
977 _for_each_inner!((RTC_GPIO14, GPIO14)); _for_each_inner!((RTC_GPIO15, GPIO15));
978 _for_each_inner!((RTC_GPIO16, GPIO16)); _for_each_inner!((RTC_GPIO17, GPIO17));
979 _for_each_inner!((RTC_GPIO18, GPIO18)); _for_each_inner!((RTC_GPIO19, GPIO19));
980 _for_each_inner!((RTC_GPIO20, GPIO20)); _for_each_inner!((RTC_GPIO21, GPIO21));
981 _for_each_inner!(((RTC_GPIO0, RTC_GPIOn, 0), GPIO0));
982 _for_each_inner!(((SAR_I2C_SCL_0, SAR_I2C_SCL_n, 0), GPIO0));
983 _for_each_inner!(((RTC_GPIO1, RTC_GPIOn, 1), GPIO1));
984 _for_each_inner!(((SAR_I2C_SDA_0, SAR_I2C_SDA_n, 0), GPIO1));
985 _for_each_inner!(((RTC_GPIO2, RTC_GPIOn, 2), GPIO2));
986 _for_each_inner!(((SAR_I2C_SCL_1, SAR_I2C_SCL_n, 1), GPIO2));
987 _for_each_inner!(((RTC_GPIO3, RTC_GPIOn, 3), GPIO3));
988 _for_each_inner!(((SAR_I2C_SDA_1, SAR_I2C_SDA_n, 1), GPIO3));
989 _for_each_inner!(((RTC_GPIO4, RTC_GPIOn, 4), GPIO4));
990 _for_each_inner!(((RTC_GPIO5, RTC_GPIOn, 5), GPIO5));
991 _for_each_inner!(((RTC_GPIO6, RTC_GPIOn, 6), GPIO6));
992 _for_each_inner!(((RTC_GPIO7, RTC_GPIOn, 7), GPIO7));
993 _for_each_inner!(((RTC_GPIO8, RTC_GPIOn, 8), GPIO8));
994 _for_each_inner!(((RTC_GPIO9, RTC_GPIOn, 9), GPIO9));
995 _for_each_inner!(((RTC_GPIO10, RTC_GPIOn, 10), GPIO10));
996 _for_each_inner!(((RTC_GPIO11, RTC_GPIOn, 11), GPIO11));
997 _for_each_inner!(((RTC_GPIO12, RTC_GPIOn, 12), GPIO12));
998 _for_each_inner!(((RTC_GPIO13, RTC_GPIOn, 13), GPIO13));
999 _for_each_inner!(((RTC_GPIO14, RTC_GPIOn, 14), GPIO14));
1000 _for_each_inner!(((RTC_GPIO15, RTC_GPIOn, 15), GPIO15));
1001 _for_each_inner!(((RTC_GPIO16, RTC_GPIOn, 16), GPIO16));
1002 _for_each_inner!(((RTC_GPIO17, RTC_GPIOn, 17), GPIO17));
1003 _for_each_inner!(((RTC_GPIO18, RTC_GPIOn, 18), GPIO18));
1004 _for_each_inner!(((RTC_GPIO19, RTC_GPIOn, 19), GPIO19));
1005 _for_each_inner!(((RTC_GPIO20, RTC_GPIOn, 20), GPIO20));
1006 _for_each_inner!(((RTC_GPIO21, RTC_GPIOn, 21), GPIO21));
1007 _for_each_inner!((all(RTC_GPIO0, GPIO0), (SAR_I2C_SCL_0, GPIO0), (RTC_GPIO1,
1008 GPIO1), (SAR_I2C_SDA_0, GPIO1), (RTC_GPIO2, GPIO2), (SAR_I2C_SCL_1, GPIO2),
1009 (RTC_GPIO3, GPIO3), (SAR_I2C_SDA_1, GPIO3), (RTC_GPIO4, GPIO4), (RTC_GPIO5,
1010 GPIO5), (RTC_GPIO6, GPIO6), (RTC_GPIO7, GPIO7), (RTC_GPIO8, GPIO8), (RTC_GPIO9,
1011 GPIO9), (RTC_GPIO10, GPIO10), (RTC_GPIO11, GPIO11), (RTC_GPIO12, GPIO12),
1012 (RTC_GPIO13, GPIO13), (RTC_GPIO14, GPIO14), (RTC_GPIO15, GPIO15), (RTC_GPIO16,
1013 GPIO16), (RTC_GPIO17, GPIO17), (RTC_GPIO18, GPIO18), (RTC_GPIO19, GPIO19),
1014 (RTC_GPIO20, GPIO20), (RTC_GPIO21, GPIO21)));
1015 _for_each_inner!((all_expanded((RTC_GPIO0, RTC_GPIOn, 0), GPIO0),
1016 ((SAR_I2C_SCL_0, SAR_I2C_SCL_n, 0), GPIO0), ((RTC_GPIO1, RTC_GPIOn, 1), GPIO1),
1017 ((SAR_I2C_SDA_0, SAR_I2C_SDA_n, 0), GPIO1), ((RTC_GPIO2, RTC_GPIOn, 2), GPIO2),
1018 ((SAR_I2C_SCL_1, SAR_I2C_SCL_n, 1), GPIO2), ((RTC_GPIO3, RTC_GPIOn, 3), GPIO3),
1019 ((SAR_I2C_SDA_1, SAR_I2C_SDA_n, 1), GPIO3), ((RTC_GPIO4, RTC_GPIOn, 4), GPIO4),
1020 ((RTC_GPIO5, RTC_GPIOn, 5), GPIO5), ((RTC_GPIO6, RTC_GPIOn, 6), GPIO6),
1021 ((RTC_GPIO7, RTC_GPIOn, 7), GPIO7), ((RTC_GPIO8, RTC_GPIOn, 8), GPIO8),
1022 ((RTC_GPIO9, RTC_GPIOn, 9), GPIO9), ((RTC_GPIO10, RTC_GPIOn, 10), GPIO10),
1023 ((RTC_GPIO11, RTC_GPIOn, 11), GPIO11), ((RTC_GPIO12, RTC_GPIOn, 12), GPIO12),
1024 ((RTC_GPIO13, RTC_GPIOn, 13), GPIO13), ((RTC_GPIO14, RTC_GPIOn, 14), GPIO14),
1025 ((RTC_GPIO15, RTC_GPIOn, 15), GPIO15), ((RTC_GPIO16, RTC_GPIOn, 16), GPIO16),
1026 ((RTC_GPIO17, RTC_GPIOn, 17), GPIO17), ((RTC_GPIO18, RTC_GPIOn, 18), GPIO18),
1027 ((RTC_GPIO19, RTC_GPIOn, 19), GPIO19), ((RTC_GPIO20, RTC_GPIOn, 20), GPIO20),
1028 ((RTC_GPIO21, RTC_GPIOn, 21), GPIO21)));
1029 };
1030}
1031#[macro_export]
1035#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1036macro_rules! define_io_mux_signals {
1037 () => {
1038 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
1039 #[derive(Debug, PartialEq, Copy, Clone)]
1040 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
1041 #[doc(hidden)]
1042 pub enum InputSignal {
1043 SPIQ = 0,
1044 SPID = 1,
1045 SPIHD = 2,
1046 SPIWP = 3,
1047 SPID4 = 7,
1048 SPID5 = 8,
1049 SPID6 = 9,
1050 SPID7 = 10,
1051 SPIDQS = 11,
1052 U0RXD = 12,
1053 U0CTS = 13,
1054 U0DSR = 14,
1055 U1RXD = 15,
1056 U1CTS = 16,
1057 U1DSR = 17,
1058 U2RXD = 18,
1059 U2CTS = 19,
1060 U2DSR = 20,
1061 I2S1_MCLK = 21,
1062 I2S0O_BCK = 22,
1063 I2S0_MCLK = 23,
1064 I2S0O_WS = 24,
1065 I2S0I_SD = 25,
1066 I2S0I_BCK = 26,
1067 I2S0I_WS = 27,
1068 I2S1O_BCK = 28,
1069 I2S1O_WS = 29,
1070 I2S1I_SD = 30,
1071 I2S1I_BCK = 31,
1072 I2S1I_WS = 32,
1073 PCNT0_SIG_CH0 = 33,
1074 PCNT0_SIG_CH1 = 34,
1075 PCNT0_CTRL_CH0 = 35,
1076 PCNT0_CTRL_CH1 = 36,
1077 PCNT1_SIG_CH0 = 37,
1078 PCNT1_SIG_CH1 = 38,
1079 PCNT1_CTRL_CH0 = 39,
1080 PCNT1_CTRL_CH1 = 40,
1081 PCNT2_SIG_CH0 = 41,
1082 PCNT2_SIG_CH1 = 42,
1083 PCNT2_CTRL_CH0 = 43,
1084 PCNT2_CTRL_CH1 = 44,
1085 PCNT3_SIG_CH0 = 45,
1086 PCNT3_SIG_CH1 = 46,
1087 PCNT3_CTRL_CH0 = 47,
1088 PCNT3_CTRL_CH1 = 48,
1089 I2S0I_SD1 = 51,
1090 I2S0I_SD2 = 52,
1091 I2S0I_SD3 = 53,
1092 USB_EXTPHY_VP = 55,
1093 USB_EXTPHY_VM = 56,
1094 USB_EXTPHY_RCV = 57,
1095 USB_OTG_IDDIG = 58,
1096 USB_OTG_AVALID = 59,
1097 USB_SRP_BVALID = 60,
1098 USB_OTG_VBUSVALID = 61,
1099 USB_SRP_SESSEND = 62,
1100 SPI3_CLK = 66,
1101 SPI3_Q = 67,
1102 SPI3_D = 68,
1103 SPI3_HD = 69,
1104 SPI3_WP = 70,
1105 SPI3_CS0 = 71,
1106 RMT_SIG_0 = 81,
1107 RMT_SIG_1 = 82,
1108 RMT_SIG_2 = 83,
1109 RMT_SIG_3 = 84,
1110 I2CEXT0_SCL = 89,
1111 I2CEXT0_SDA = 90,
1112 I2CEXT1_SCL = 91,
1113 I2CEXT1_SDA = 92,
1114 FSPICLK = 101,
1115 FSPIQ = 102,
1116 FSPID = 103,
1117 FSPIHD = 104,
1118 FSPIWP = 105,
1119 FSPIIO4 = 106,
1120 FSPIIO5 = 107,
1121 FSPIIO6 = 108,
1122 FSPIIO7 = 109,
1123 FSPICS0 = 110,
1124 TWAI_RX = 116,
1125 SUBSPIQ = 120,
1126 SUBSPID = 121,
1127 SUBSPIHD = 122,
1128 SUBSPIWP = 123,
1129 CAM_DATA_0 = 133,
1130 CAM_DATA_1 = 134,
1131 CAM_DATA_2 = 135,
1132 CAM_DATA_3 = 136,
1133 CAM_DATA_4 = 137,
1134 CAM_DATA_5 = 138,
1135 CAM_DATA_6 = 139,
1136 CAM_DATA_7 = 140,
1137 CAM_DATA_8 = 141,
1138 CAM_DATA_9 = 142,
1139 CAM_DATA_10 = 143,
1140 CAM_DATA_11 = 144,
1141 CAM_DATA_12 = 145,
1142 CAM_DATA_13 = 146,
1143 CAM_DATA_14 = 147,
1144 CAM_DATA_15 = 148,
1145 CAM_PCLK = 149,
1146 CAM_H_ENABLE = 150,
1147 CAM_H_SYNC = 151,
1148 CAM_V_SYNC = 152,
1149 SUBSPID4 = 155,
1150 SUBSPID5 = 156,
1151 SUBSPID6 = 157,
1152 SUBSPID7 = 158,
1153 SUBSPIDQS = 159,
1154 PWM0_SYNC0 = 160,
1155 PWM0_SYNC1 = 161,
1156 PWM0_SYNC2 = 162,
1157 PWM0_F0 = 163,
1158 PWM0_F1 = 164,
1159 PWM0_F2 = 165,
1160 PWM0_CAP0 = 166,
1161 PWM0_CAP1 = 167,
1162 PWM0_CAP2 = 168,
1163 PWM1_SYNC0 = 169,
1164 PWM1_SYNC1 = 170,
1165 PWM1_SYNC2 = 171,
1166 PWM1_F0 = 172,
1167 PWM1_F1 = 173,
1168 PWM1_F2 = 174,
1169 PWM1_CAP0 = 175,
1170 PWM1_CAP1 = 176,
1171 PWM1_CAP2 = 177,
1172 SDHOST_CCMD_IN_1 = 178,
1173 SDHOST_CCMD_IN_2 = 179,
1174 SDHOST_CDATA_IN_10 = 180,
1175 SDHOST_CDATA_IN_11 = 181,
1176 SDHOST_CDATA_IN_12 = 182,
1177 SDHOST_CDATA_IN_13 = 183,
1178 SDHOST_CDATA_IN_14 = 184,
1179 SDHOST_CDATA_IN_15 = 185,
1180 SDHOST_CDATA_IN_16 = 186,
1181 SDHOST_CDATA_IN_17 = 187,
1182 SDHOST_DATA_STROBE_1 = 192,
1183 SDHOST_DATA_STROBE_2 = 193,
1184 SDHOST_CARD_DETECT_N_1 = 194,
1185 SDHOST_CARD_DETECT_N_2 = 195,
1186 SDHOST_CARD_WRITE_PRT_1 = 196,
1187 SDHOST_CARD_WRITE_PRT_2 = 197,
1188 SDHOST_CARD_INT_N_1 = 198,
1189 SDHOST_CARD_INT_N_2 = 199,
1190 SDHOST_CDATA_IN_20 = 213,
1191 SDHOST_CDATA_IN_21 = 214,
1192 SDHOST_CDATA_IN_22 = 215,
1193 SDHOST_CDATA_IN_23 = 216,
1194 SDHOST_CDATA_IN_24 = 217,
1195 SDHOST_CDATA_IN_25 = 218,
1196 SDHOST_CDATA_IN_26 = 219,
1197 SDHOST_CDATA_IN_27 = 220,
1198 PRO_ALONEGPIO_IN0 = 221,
1199 PRO_ALONEGPIO_IN1 = 222,
1200 PRO_ALONEGPIO_IN2 = 223,
1201 PRO_ALONEGPIO_IN3 = 224,
1202 PRO_ALONEGPIO_IN4 = 225,
1203 PRO_ALONEGPIO_IN5 = 226,
1204 PRO_ALONEGPIO_IN6 = 227,
1205 PRO_ALONEGPIO_IN7 = 228,
1206 USB_JTAG_TDO_BRIDGE = 251,
1207 CORE1_GPIO_IN3 = 252,
1208 CORE1_GPIO_IN4 = 253,
1209 CORE1_GPIO_IN5 = 254,
1210 CORE1_GPIO_IN6 = 255,
1211 SPIIO4,
1212 SPIIO5,
1213 SPIIO6,
1214 SPIIO7,
1215 MTDI,
1216 MTCK,
1217 MTMS,
1218 }
1219 #[allow(non_camel_case_types, clippy::upper_case_acronyms)]
1220 #[derive(Debug, PartialEq, Copy, Clone)]
1221 #[cfg_attr(feature = "defmt", derive(defmt::Format))]
1222 #[doc(hidden)]
1223 pub enum OutputSignal {
1224 SPIQ = 0,
1225 SPID = 1,
1226 SPIHD = 2,
1227 SPIWP = 3,
1228 SPICLK = 4,
1229 SPICS0 = 5,
1230 SPICS1 = 6,
1231 SPID4 = 7,
1232 SPID5 = 8,
1233 SPID6 = 9,
1234 SPID7 = 10,
1235 SPIDQS = 11,
1236 U0TXD = 12,
1237 U0RTS = 13,
1238 U0DTR = 14,
1239 U1TXD = 15,
1240 U1RTS = 16,
1241 U1DTR = 17,
1242 U2TXD = 18,
1243 U2RTS = 19,
1244 U2DTR = 20,
1245 I2S1_MCLK = 21,
1246 I2S0O_BCK = 22,
1247 I2S0_MCLK = 23,
1248 I2S0O_WS = 24,
1249 I2S0O_SD = 25,
1250 I2S0I_BCK = 26,
1251 I2S0I_WS = 27,
1252 I2S1O_BCK = 28,
1253 I2S1O_WS = 29,
1254 I2S1O_SD = 30,
1255 I2S1I_BCK = 31,
1256 I2S1I_WS = 32,
1257 USB_EXTPHY_OEN = 55,
1258 USB_EXTPHY_VPO = 57,
1259 USB_EXTPHY_VMO = 58,
1260 SPI3_CLK = 66,
1261 SPI3_Q = 67,
1262 SPI3_D = 68,
1263 SPI3_HD = 69,
1264 SPI3_WP = 70,
1265 SPI3_CS0 = 71,
1266 SPI3_CS1 = 72,
1267 LEDC_LS_SIG0 = 73,
1268 LEDC_LS_SIG1 = 74,
1269 LEDC_LS_SIG2 = 75,
1270 LEDC_LS_SIG3 = 76,
1271 LEDC_LS_SIG4 = 77,
1272 LEDC_LS_SIG5 = 78,
1273 LEDC_LS_SIG6 = 79,
1274 LEDC_LS_SIG7 = 80,
1275 RMT_SIG_0 = 81,
1276 RMT_SIG_1 = 82,
1277 RMT_SIG_2 = 83,
1278 RMT_SIG_3 = 84,
1279 I2CEXT0_SCL = 89,
1280 I2CEXT0_SDA = 90,
1281 I2CEXT1_SCL = 91,
1282 I2CEXT1_SDA = 92,
1283 GPIO_SD0 = 93,
1284 GPIO_SD1 = 94,
1285 GPIO_SD2 = 95,
1286 GPIO_SD3 = 96,
1287 GPIO_SD4 = 97,
1288 GPIO_SD5 = 98,
1289 GPIO_SD6 = 99,
1290 GPIO_SD7 = 100,
1291 FSPICLK = 101,
1292 FSPIQ = 102,
1293 FSPID = 103,
1294 FSPIHD = 104,
1295 FSPIWP = 105,
1296 FSPIIO4 = 106,
1297 FSPIIO5 = 107,
1298 FSPIIO6 = 108,
1299 FSPIIO7 = 109,
1300 FSPICS0 = 110,
1301 FSPICS1 = 111,
1302 FSPICS2 = 112,
1303 FSPICS3 = 113,
1304 FSPICS4 = 114,
1305 FSPICS5 = 115,
1306 TWAI_TX = 116,
1307 SUBSPICLK = 119,
1308 SUBSPIQ = 120,
1309 SUBSPID = 121,
1310 SUBSPIHD = 122,
1311 SUBSPIWP = 123,
1312 SUBSPICS0 = 124,
1313 SUBSPICS1 = 125,
1314 FSPIDQS = 126,
1315 SPI3_CS2 = 127,
1316 I2S0O_SD1 = 128,
1317 LCD_CS = 132,
1318 LCD_DATA_0 = 133,
1319 LCD_DATA_1 = 134,
1320 LCD_DATA_2 = 135,
1321 LCD_DATA_3 = 136,
1322 LCD_DATA_4 = 137,
1323 LCD_DATA_5 = 138,
1324 LCD_DATA_6 = 139,
1325 LCD_DATA_7 = 140,
1326 LCD_DATA_8 = 141,
1327 LCD_DATA_9 = 142,
1328 LCD_DATA_10 = 143,
1329 LCD_DATA_11 = 144,
1330 LCD_DATA_12 = 145,
1331 LCD_DATA_13 = 146,
1332 LCD_DATA_14 = 147,
1333 LCD_DATA_15 = 148,
1334 CAM_CLK = 149,
1335 LCD_H_ENABLE = 150,
1336 LCD_H_SYNC = 151,
1337 LCD_V_SYNC = 152,
1338 LCD_DC = 153,
1339 LCD_PCLK = 154,
1340 SUBSPID4 = 155,
1341 SUBSPID5 = 156,
1342 SUBSPID6 = 157,
1343 SUBSPID7 = 158,
1344 SUBSPIDQS = 159,
1345 PWM0_0A = 160,
1346 PWM0_0B = 161,
1347 PWM0_1A = 162,
1348 PWM0_1B = 163,
1349 PWM0_2A = 164,
1350 PWM0_2B = 165,
1351 PWM1_0A = 166,
1352 PWM1_0B = 167,
1353 PWM1_1A = 168,
1354 PWM1_1B = 169,
1355 PWM1_2A = 170,
1356 PWM1_2B = 171,
1357 SDHOST_CCLK_OUT_1 = 172,
1358 SDHOST_CCLK_OUT_2 = 173,
1359 SDHOST_RST_N_1 = 174,
1360 SDHOST_RST_N_2 = 175,
1361 SDHOST_CCMD_OD_PULLUP_EN_N = 176,
1362 SDIO_TOHOST_INT = 177,
1363 SDHOST_CCMD_OUT_1 = 178,
1364 SDHOST_CCMD_OUT_2 = 179,
1365 SDHOST_CDATA_OUT_10 = 180,
1366 SDHOST_CDATA_OUT_11 = 181,
1367 SDHOST_CDATA_OUT_12 = 182,
1368 SDHOST_CDATA_OUT_13 = 183,
1369 SDHOST_CDATA_OUT_14 = 184,
1370 SDHOST_CDATA_OUT_15 = 185,
1371 SDHOST_CDATA_OUT_16 = 186,
1372 SDHOST_CDATA_OUT_17 = 187,
1373 SDHOST_CDATA_OUT_20 = 213,
1374 SDHOST_CDATA_OUT_21 = 214,
1375 SDHOST_CDATA_OUT_22 = 215,
1376 SDHOST_CDATA_OUT_23 = 216,
1377 SDHOST_CDATA_OUT_24 = 217,
1378 SDHOST_CDATA_OUT_25 = 218,
1379 SDHOST_CDATA_OUT_26 = 219,
1380 SDHOST_CDATA_OUT_27 = 220,
1381 PRO_ALONEGPIO_OUT0 = 221,
1382 PRO_ALONEGPIO_OUT1 = 222,
1383 PRO_ALONEGPIO_OUT2 = 223,
1384 PRO_ALONEGPIO_OUT3 = 224,
1385 PRO_ALONEGPIO_OUT4 = 225,
1386 PRO_ALONEGPIO_OUT5 = 226,
1387 PRO_ALONEGPIO_OUT6 = 227,
1388 PRO_ALONEGPIO_OUT7 = 228,
1389 USB_JTAG_TRST = 251,
1390 CORE1_GPIO_OUT3 = 252,
1391 CORE1_GPIO_OUT4 = 253,
1392 CORE1_GPIO_OUT5 = 254,
1393 CORE1_GPIO_OUT6 = 255,
1394 GPIO = 256,
1395 SPIIO4,
1396 SPIIO5,
1397 SPIIO6,
1398 SPIIO7,
1399 CLK_OUT1,
1400 CLK_OUT2,
1401 CLK_OUT3,
1402 SPICLK_P_DIFF,
1403 SPICLK_N_DIFF,
1404 SUBSPICLK_P_DIFF,
1405 SUBSPICLK_N_DIFF,
1406 MTDO,
1407 }
1408 };
1409}
1410#[macro_export]
1423#[expect(clippy::crate_in_macro_def)]
1424#[cfg_attr(docsrs, doc(cfg(feature = "_device-selected")))]
1425macro_rules! define_io_mux_reg {
1426 () => {
1427 pub(crate) fn io_mux_reg(gpio_num: u8) -> &'static crate::pac::io_mux::GPIO {
1428 crate::peripherals::IO_MUX::regs().gpio(gpio_num as usize)
1429 }
1430 };
1431}