1use crate::{
2 peripherals::{ctimer, flexcomm, gpio::Gpio, iocon::Iocon},
3 typestates::{
4 init_state,
5 pin::{
6 flexcomm as fc,
8 flexcomm::ChipSelect,
9 function,
10 state::{self, Special},
11 },
12 },
13};
14
15pub use crate::typestates::pin::gpio::{direction, Level};
16
17pub mod gpio;
19
20pub use crate::typestates::pin::{PinId, PinType};
21
22use crate::typestates::reg_proxy::RegClusterProxy;
23
24pub struct Pin<T: PinId, S: state::PinState> {
26 pub(crate) id: T,
27 #[allow(dead_code)]
28 pub(crate) state: S,
29}
30
31impl Pin<Pio0_22, state::Unused> {
32 pub fn into_usb0_vbus_pin(
33 self,
34 iocon: &mut Iocon<init_state::Enabled>,
35 ) -> Pin<Pio0_22, state::Special<function::USB0_VBUS>> {
36 iocon.raw.pio0_22.modify(
37 |_, w| {
38 w.func()
39 .alt7() .mode()
41 .inactive() .slew()
43 .standard() .invert()
45 .disabled() .digimode()
47 .digital() .od()
49 .normal()
50 }, );
52
53 Pin {
54 id: self.id,
55 state: state::Special {
56 _function: function::USB0_VBUS,
57 },
58 }
59 }
60}
61
62static mut PIN_TAKEN: [[bool; 32]; 2] = [[false; 32]; 2];
65
66macro_rules! pins {
67 ($(
68 $field:ident,
69 $pin:ident,
70 $port:expr,
71 $number:expr,
72 $type:expr,
73 $default_state_ty:ty,
74 $default_state_val:expr;
75 )*) => {
76 #[allow(missing_docs)]
78 pub struct Pins {
79 $(pub $field: Pin<$pin, $default_state_ty>,)*
80 }
81
82 impl Pins {
83
84 fn any_taken() -> bool {
85 unsafe {
86 let any_port_0 = PIN_TAKEN[0].iter().any(|x| *x);
87 let any_port_1 = PIN_TAKEN[1].iter().any(|x| *x);
88 any_port_0 || any_port_1
89 }
90 }
91
92 fn set_all_taken() {
93 unsafe {
94 for entry in PIN_TAKEN[0].iter_mut() { *entry = true; }
95 for entry in PIN_TAKEN[1].iter_mut() { *entry = true; }
96 }
97 }
98
99 fn set_all_released() {
100 unsafe {
101 for entry in PIN_TAKEN[0].iter_mut() { *entry = false; }
102 for entry in PIN_TAKEN[1].iter_mut() { *entry = false; }
103 }
104 }
105
106 pub fn take() -> Option<Self> {
107 if Self::any_taken() {
108 None
109 } else {
110 Some(unsafe {
111 Self::set_all_taken();
112 Self::steal()
113 } )
114 }
115 }
116
117 pub fn release(self) {
118 Self::set_all_released();
119 }
120
121 pub unsafe fn steal() -> Self {
125 Self {
126 $(
127 $field: $pin::steal(),
128 )*
129 }
130 }
131 }
132
133
134 $(
135 #[allow(non_camel_case_types)]
139 pub struct $pin(());
140
141 impl Pin<$pin, state::Unused> {
142 pub fn into_gpio_pin(
144 self,
145 iocon: &mut Iocon<init_state::Enabled>,
146 _: &mut Gpio<init_state::Enabled>,
147 ) -> Pin<$pin, state::Gpio<direction::Unknown>> {
148 iocon.raw.$field.modify(|_, w| w
150 .func().alt0() .mode().inactive() .slew().standard() .invert().disabled() .digimode().digital() .od().normal() );
157 Pin {
158 id: self.id,
159 state: state::Gpio {
160 dirset: RegClusterProxy::new(),
163 dirclr: RegClusterProxy::new(),
164 pin: RegClusterProxy::new(),
165 set: RegClusterProxy::new(),
166 clr: RegClusterProxy::new(),
167
168 _direction: direction::Unknown,
169 },
170 }
171 }
172
173
174 }
175
176 impl $pin {
177 pub fn take() -> Option<Pin<Self, $default_state_ty>> {
178 if unsafe { PIN_TAKEN[$port][$number] } {
179 None
180 } else {
181 Some(unsafe {
182 Self::steal()
183 } )
184 }
185 }
186
187 pub fn release(self) {
188 unsafe { PIN_TAKEN[$port][$number] = false; }
189 }
190
191 pub unsafe fn steal() -> Pin<Self, $default_state_ty> {
195 PIN_TAKEN[$port][$number] = true;
196 Pin {
197 id: Self(()),
198 state: $default_state_val,
199 }
200 }
201 }
202
203 impl PinId for $pin {
204 const PORT: usize = $port;
205 const NUMBER: u8 = $number;
206 const MASK: u32 = 0x1 << $number;
207 const OFFSET: usize = (0x20 << $port) + (0x1 << $number);
208 const TYPE: PinType = $type;
209 }
210 )*
211 }
212}
213
214macro_rules! analog_pins {
215 ($(
216 $field:ident,
217 $pin:ident,
218 $port:expr,
219 $number:expr,
220 $type:expr,
221 $default_state_ty:ty,
222 $default_state_val:expr,
223 $channel:expr;
224 )*) => {
225 $(
227 impl Pin<$pin, state::Unused> {
228 pub fn into_analog_input(
229 self,
230 iocon: &mut Iocon<init_state::Enabled>,
231 _: &mut Gpio<init_state::Enabled>,
232 ) -> Pin<$pin, state::Analog<direction::Input>> {
233
234 iocon.raw.$field.modify(|_, w| w
236 .func().alt0() .mode().inactive() .slew().standard() .invert().disabled() .digimode().analog() .od().normal() .asw().set_bit() );
244
245 let pin = Pin {
247 id: self.id,
248 state: state::Analog{
249 channel: $channel,
250 dirclr: RegClusterProxy::new(),
251 _direction: direction::Unknown,
252 },
253 };
254 return pin.into_input();
255 }
256 }
257 )*
258 }
259}
260
261macro_rules! ctimer_match_output_pins {
262 ($(
263 $ctimer:ty,
264 $method:ident,
265 $field:ident,
266 $pin:ident,
267 $func:expr,
268 $channel_type:ident,
269 $channel_number:expr;
270 )*) => {
271 $(
273 impl Pin<$pin, state::Unused> {
274 pub fn $method (
275 self,
276 iocon: &mut Iocon<init_state::Enabled>,
277 ) -> Pin<$pin, state::Special<function::$channel_type<$ctimer>>> {
278
279 iocon.raw.$field.modify(|_, w| unsafe { w
281 .func().bits($func) .mode().inactive() .slew().standard() .invert().disabled() .digimode().digital() .od().normal() });
288
289 Pin {
290 id: self.id,
291 state: state::Special{
292 _function: function::$channel_type {_marker: core::marker::PhantomData}
293 }
294 }
295 }
296 }
297
298 impl Pin<$pin, state::Special<function::$channel_type<$ctimer>>> {
299 pub const CHANNEL: u8 = $channel_number;
300 pub fn get_channel(&self) -> u8 {
301 Self::CHANNEL
302 }
303 }
304 )*
305 }
306}
307
308pins!(
309 pio0_0 , Pio0_0 , 0, 0, PinType::A, state::Unused, state::Unused;
310 pio0_1 , Pio0_1 , 0, 1, PinType::D, state::Unused, state::Unused;
311 pio0_2 , Pio0_2 , 0, 2, PinType::D, state::Unused, state::Unused;
312 pio0_3 , Pio0_3 , 0, 3, PinType::D, state::Unused, state::Unused;
313 pio0_4 , Pio0_4 , 0, 4, PinType::D, state::Unused, state::Unused;
314 pio0_5 , Pio0_5 , 0, 5, PinType::D, state::Unused, state::Unused;
315 pio0_6 , Pio0_6 , 0, 6, PinType::D, state::Unused, state::Unused;
316 pio0_7 , Pio0_7 , 0, 7, PinType::D, state::Unused, state::Unused;
317 pio0_8 , Pio0_8 , 0, 8, PinType::D, state::Unused, state::Unused;
318 pio0_9 , Pio0_9 , 0, 9, PinType::A, state::Unused, state::Unused;
319 pio0_10, Pio0_10, 0, 10, PinType::A, state::Unused, state::Unused;
320 pio0_11, Pio0_11, 0, 11, PinType::A, state::Special<function::SWCLK>,
321 state::Special{ _function: function::SWCLK {} };
322 pio0_12, Pio0_12, 0, 12, PinType::A, state::Special<function::SWDIO>,
323 state::Special{ _function: function::SWDIO {} };
324 pio0_13, Pio0_13, 0, 13, PinType::I, state::Unused, state::Unused;
325 pio0_14, Pio0_14, 0, 14, PinType::I, state::Unused, state::Unused;
326 pio0_15, Pio0_15, 0, 15, PinType::A, state::Unused, state::Unused;
327 pio0_16, Pio0_16, 0, 16, PinType::A, state::Unused, state::Unused;
328 pio0_17, Pio0_17, 0, 17, PinType::D, state::Unused, state::Unused;
329 pio0_18, Pio0_18, 0, 18, PinType::A, state::Unused, state::Unused;
330 pio0_19, Pio0_19, 0, 19, PinType::D, state::Unused, state::Unused;
331 pio0_20, Pio0_20, 0, 20, PinType::D, state::Unused, state::Unused;
332 pio0_21, Pio0_21, 0, 21, PinType::D, state::Unused, state::Unused;
333 pio0_22, Pio0_22, 0, 22, PinType::D, state::Unused, state::Unused;
334 pio0_23, Pio0_23, 0, 23, PinType::A, state::Unused, state::Unused;
335 pio0_24, Pio0_24, 0, 24, PinType::D, state::Unused, state::Unused;
336 pio0_25, Pio0_25, 0, 25, PinType::D, state::Unused, state::Unused;
337 pio0_26, Pio0_26, 0, 26, PinType::D, state::Unused, state::Unused;
338 pio0_27, Pio0_27, 0, 27, PinType::D, state::Unused, state::Unused;
339 pio0_28, Pio0_28, 0, 28, PinType::D, state::Unused, state::Unused;
340 pio0_29, Pio0_29, 0, 29, PinType::D, state::Unused, state::Unused;
341 pio0_30, Pio0_30, 0, 30, PinType::D, state::Unused, state::Unused;
342 pio0_31, Pio0_31, 0, 31, PinType::A, state::Unused, state::Unused;
343
344 pio1_0 , Pio1_0 , 1, 0, PinType::A, state::Unused, state::Unused;
345 pio1_1 , Pio1_1 , 1, 1, PinType::D, state::Unused, state::Unused;
346 pio1_2 , Pio1_2 , 1, 2, PinType::D, state::Unused, state::Unused;
347 pio1_3 , Pio1_3 , 1, 3, PinType::D, state::Unused, state::Unused;
348 pio1_4 , Pio1_4 , 1, 4, PinType::D, state::Unused, state::Unused;
349 pio1_5 , Pio1_5 , 1, 5, PinType::D, state::Unused, state::Unused;
350 pio1_6 , Pio1_6 , 1, 6, PinType::D, state::Unused, state::Unused;
351 pio1_7 , Pio1_7 , 1, 7, PinType::D, state::Unused, state::Unused;
352 pio1_8 , Pio1_8 , 1, 8, PinType::A, state::Unused, state::Unused;
353 pio1_9 , Pio1_9 , 1, 9, PinType::A, state::Unused, state::Unused;
354 pio1_10, Pio1_10, 1, 10, PinType::D, state::Unused, state::Unused;
355 pio1_11, Pio1_11, 1, 11, PinType::D, state::Unused, state::Unused;
356 pio1_12, Pio1_12, 1, 12, PinType::D, state::Unused, state::Unused;
357 pio1_13, Pio1_13, 1, 13, PinType::D, state::Unused, state::Unused;
358 pio1_14, Pio1_14, 1, 14, PinType::A, state::Unused, state::Unused;
359 pio1_15, Pio1_15, 1, 15, PinType::D, state::Unused, state::Unused;
360 pio1_16, Pio1_16, 1, 16, PinType::D, state::Unused, state::Unused;
361 pio1_17, Pio1_17, 1, 17, PinType::D, state::Unused, state::Unused;
362 pio1_18, Pio1_18, 1, 18, PinType::D, state::Unused, state::Unused;
363 pio1_19, Pio1_19, 1, 19, PinType::A, state::Unused, state::Unused;
364 pio1_20, Pio1_20, 1, 20, PinType::D, state::Unused, state::Unused;
365 pio1_21, Pio1_21, 1, 21, PinType::D, state::Unused, state::Unused;
366 pio1_22, Pio1_22, 1, 22, PinType::D, state::Unused, state::Unused;
367 pio1_23, Pio1_23, 1, 23, PinType::D, state::Unused, state::Unused;
368 pio1_24, Pio1_24, 1, 24, PinType::D, state::Unused, state::Unused;
369 pio1_25, Pio1_25, 1, 25, PinType::D, state::Unused, state::Unused;
370 pio1_26, Pio1_26, 1, 26, PinType::D, state::Unused, state::Unused;
371 pio1_27, Pio1_27, 1, 27, PinType::D, state::Unused, state::Unused;
372 pio1_28, Pio1_28, 1, 28, PinType::D, state::Unused, state::Unused;
373 pio1_29, Pio1_29, 1, 29, PinType::D, state::Unused, state::Unused;
374 pio1_30, Pio1_30, 1, 30, PinType::D, state::Unused, state::Unused;
375 pio1_31, Pio1_31, 1, 31, PinType::D, state::Unused, state::Unused;
376);
377
378analog_pins!(
379 pio0_0 , Pio0_0 , 0, 0, PinType::A, state::Unused, state::Unused, 0u8; pio0_9 , Pio0_9 , 0, 9, PinType::A, state::Unused, state::Unused, 1u8;
381 pio0_10, Pio0_10, 0, 10, PinType::A, state::Unused, state::Unused, 1u8;
382 pio0_11, Pio0_11, 0, 11, PinType::A, state::Special<function::SWCLK>,
383 state::Special{ _function: function::SWCLK {} }, 9u8;
384 pio0_12, Pio0_12, 0, 12, PinType::A, state::Special<function::SWDIO>,
385 state::Special{ _function: function::SWDIO {} }, 10u8;
386 pio0_15, Pio0_15, 0, 15, PinType::A, state::Unused, state::Unused, 2u8;
387 pio0_16, Pio0_16, 0, 16, PinType::A, state::Unused, state::Unused, 8u8;
388 pio0_18, Pio0_18, 0, 18, PinType::A, state::Unused, state::Unused, 2u8;
389 pio0_23, Pio0_23, 0, 23, PinType::A, state::Unused, state::Unused, 0u8;
390 pio0_31, Pio0_31, 0, 31, PinType::A, state::Unused, state::Unused, 3u8;
391
392 pio1_0 , Pio1_0 , 1, 0, PinType::A, state::Unused, state::Unused, 11u8;
393 pio1_8 , Pio1_8 , 1, 8, PinType::A, state::Unused, state::Unused, 4u8;
394 pio1_9 , Pio1_9 , 1, 9, PinType::A, state::Unused, state::Unused, 12u8;
395 pio1_14, Pio1_14, 1, 14, PinType::A, state::Unused, state::Unused, 3u8;
396 pio1_19, Pio1_19, 1, 19, PinType::A, state::Unused, state::Unused, 0xffu8; );
398
399ctimer_match_output_pins!(
400 ctimer::Ctimer1<init_state::Enabled>, into_match_output, pio1_16 , Pio1_16, 3, MATCH_OUTPUT3, 3;
401 ctimer::Ctimer3<init_state::Enabled>, into_match_output, pio0_5 , Pio0_5, 3, MATCH_OUTPUT0, 0;
402 ctimer::Ctimer3<init_state::Enabled>, into_match_output, pio1_21 , Pio1_21, 3, MATCH_OUTPUT2, 2;
403 ctimer::Ctimer3<init_state::Enabled>, into_match_output, pio1_19 , Pio1_19, 3, MATCH_OUTPUT1, 1;
404
405 ctimer::Ctimer2<init_state::Enabled>, into_match_output, pio1_7, Pio1_7, 3, MATCH_OUTPUT2, 2;
406 ctimer::Ctimer2<init_state::Enabled>, into_match_output, pio1_6, Pio1_6, 3, MATCH_OUTPUT1, 1;
407 ctimer::Ctimer2<init_state::Enabled>, into_match_output, pio1_4, Pio1_4, 3, MATCH_OUTPUT1, 1;
408);
409
410macro_rules! special_pins {
411 ($(
412 ($Pin:ty,$pin:ident): {
413 $(
414 ($alt_func:expr, $SPECIAL_FUNCTION:ident): [
415 $(
416 ($method:ident,$Peripheral:ty,$Marker:ident),
417 )*
418 ]
419 )+
420 })*) => {
421
422 $($($(
423 impl Pin<$Pin, state::Unused> {
424 pub fn $method(
425 self,
426 iocon: &mut Iocon<init_state::Enabled>,
427 ) ->Pin<$Pin, state::Special<function::$SPECIAL_FUNCTION>> {
428 iocon.raw.$pin.modify(|_, w| unsafe {
431 w
432 .func().bits($alt_func) .mode().inactive() .slew().standard() .invert().disabled() .digimode().digital() .od().normal() });
439
440 Pin {
441 id: self.id,
442 state: Special {
443 _function: function::$SPECIAL_FUNCTION {},
444
445 },
446 }
447 }
448 }
449 )*)+)*
450 }
451}
452
453special_pins! {
461 (Pio0_0, pio0_0): {
462 (2, FC3_SCK): [
463 (into_usart3_sclk_pin, Usart3, UsartSclkPin),
464 (into_spi3_sck_pin, Spi3, SpiSckPin),
465 ]
466 }
467 (Pio0_1, pio0_1): {
468 (2, FC3_CTS_SDA_SSEL0): [
469 (into_usart3_cts_pin, Usart3, UsartCtsPin),
470 (into_i2c3_sda_pin, I2c3, I2cSdaPin),
471 (into_spi3_cs_pin, Spi3, SpiCsPin),
472 ]
473 }
474 (Pio0_2, pio0_2): {
475 (1, FC3_TXD_SCL_MISO_WS): [
476 (into_usart3_tx_pin, Usart3, UsartTxPin),
477 (into_i2c3_scl_pin, I2c3, I2cSclPin),
478 (into_spi3_miso_pin, Spi3, SpiMisoPin),
479 (into_i2s3_ws_pin, I2s3, I2sWsPin),
480 ]
481 }
482 (Pio0_3, pio0_3): {
483 (1, FC3_RXD_SDA_MOSI_DATA): [
484 (into_usart3_rx_pin, Usart3, UsartRxPin),
485 (into_i2c3_sda_pin, I2c3, I2cSdaPin),
486 (into_spi3_mosi_pin, Spi3, SpiMosiPin),
487 (into_i2s3_sda_pin, I2s3, I2sSdaPin),
488 ]
489 }
490 (Pio0_4, pio0_4): {
491 (2, FC4_SCK): [
492 (into_usart4_sclk_pin, Usart4, UsartSclkPin),
493 (into_spi4_sck_pin, Spi4, SpiSckPin),
494 ]
495 }
496 (Pio0_5, pio0_5): {
497 (2, FC4_RXD_SDA_MOSI_DATA): [
498 (into_usart4_rx_pin, Usart4, UsartRxPin),
499 (into_i2c4_sda_pin, I2c4, I2cSdaPin),
500 (into_spi4_mosi_pin, Spi4, SpiMosiPin),
501 (into_i2s4_sda_pin, I2s4, I2sSdaPin),
502 ]
503 }
504 (Pio0_5, pio0_5): {
505 (8, FC3_RTS_SCL_SSEL1): [
506 (into_usart3_rts_pin, Usart3, UsartRtsPin),
507 (into_i2c3_scl_pin, I2c3, I2cSclPin),
508 (into_spi3_cs_pin, Spi3, SpiCsPin),
509 ]
510 }
511 (Pio0_6, pio0_6): {
512 (1, FC3_SCK): [
513 (into_usart3_sclk_pin, Usart3, UsartSclkPin),
514 (into_spi3_sck_pin, Spi3, SpiSckPin),
515 ]
516 }
517 (Pio0_7, pio0_7): {
518 (1, FC3_RTS_SCL_SSEL1): [
519 (into_usart3_rts_pin, Usart3, UsartRtsPin),
520 (into_i2c3_scl_pin, I2c3, I2cSclPin),
521 (into_spi3_cs_pin, Spi3, SpiCsPin),
522 ]
523 }
524 (Pio0_7, pio0_7): {
525 (3, FC5_SCK): [
526 (into_usart5_sclk_pin, Usart5, UsartSclkPin),
527 (into_spi5_sck_pin, Spi5, SpiSckPin),
528 ]
529 }
530 (Pio0_7, pio0_7): {
531 (4, FC1_SCK): [
532 (into_usart1_sclk_pin, Usart1, UsartSclkPin),
533 (into_spi1_sck_pin, Spi1, SpiSckPin),
534 ]
535 }
536 (Pio0_8, pio0_8): {
537 (1, FC3_SSEL3): [
538 (into_spi3_cs_pin, Spi3, SpiCsPin),
539 ]
540 }
541 (Pio0_8, pio0_8): {
542 (3, FC5_RXD_SDA_MOSI_DATA): [
543 (into_usart5_rx_pin, Usart5, UsartRxPin),
544 (into_i2c5_sda_pin, I2c5, I2cSdaPin),
545 (into_spi5_mosi_pin, Spi5, SpiMosiPin),
546 (into_i2s5_sda_pin, I2s5, I2sSdaPin),
547 ]
548 }
549 (Pio0_9, pio0_9): {
550 (1, FC3_SSEL2): [
551 (into_spi3_cs_pin, Spi3, SpiCsPin),
552 ]
553 }
554 (Pio0_9, pio0_9): {
555 (3, FC5_TXD_SCL_MISO_WS): [
556 (into_usart5_tx_pin, Usart5, UsartTxPin),
557 (into_i2c5_scl_pin, I2c5, I2cSclPin),
558 (into_spi5_miso_pin, Spi5, SpiMisoPin),
559 (into_i2s5_ws_pin, I2s5, I2sWsPin),
560 ]
561 }
562 (Pio0_10, pio0_10): {
563 (1, FC6_SCK): [
564 (into_usart6_sclk_pin, Usart6, UsartSclkPin),
565 (into_spi6_sck_pin, Spi6, SpiSckPin),
566 ]
567 }
568 (Pio0_10, pio0_10): {
569 (4, FC1_TXD_SCL_MISO_WS): [
570 (into_usart1_tx_pin, Usart1, UsartTxPin),
571 (into_i2c1_scl_pin, I2c1, I2cSclPin),
572 (into_spi1_miso_pin, Spi1, SpiMisoPin),
573 (into_i2s1_ws_pin, I2s1, I2sWsPin),
574 ]
575 }
576 (Pio0_11, pio0_11): {
577 (1, FC6_RXD_SDA_MOSI_DATA): [
578 (into_usart6_rx_pin, Usart6, UsartRxPin),
579 (into_i2c6_sda_pin, I2c6, I2cSdaPin),
580 (into_spi6_mosi_pin, Spi6, SpiMosiPin),
581 (into_i2s6_sda_pin, I2s6, I2sSdaPin),
582 ]
583 }
584 (Pio0_12, pio0_12): {
585 (1, FC3_TXD_SCL_MISO_WS): [
586 (into_usart3_tx_pin, Usart3, UsartTxPin),
587 (into_i2c3_scl_pin, I2c3, I2cSclPin),
588 (into_spi3_miso_pin, Spi3, SpiMisoPin),
589 (into_i2s3_ws_pin, I2s3, I2sWsPin),
590 ]
591 }
592 (Pio0_12, pio0_12): {
593 (7, FC6_TXD_SCL_MISO_WS): [
594 (into_usart6_tx_pin, Usart6, UsartTxPin),
595 (into_i2c6_scl_pin, I2c6, I2cSclPin),
596 (into_spi6_miso_pin, Spi6, SpiMisoPin),
597 (into_i2s6_ws_pin, I2s6, I2sWsPin),
598 ]
599 }
600 (Pio0_13, pio0_13): {
601 (1, FC1_CTS_SDA_SSEL0): [
602 (into_usart1_cts_pin, Usart1, UsartCtsPin),
603 (into_i2c1_sda_pin, I2c1, I2cSdaPin),
604 (into_spi1_cs_pin, Spi1, SpiCsPin),
605 ]
606 }
607 (Pio0_13, pio0_13): {
608 (5, FC1_RXD_SDA_MOSI_DATA): [
609 (into_usart1_rx_pin, Usart1, UsartRxPin),
610 (into_spi1_mosi_pin, Spi1, SpiMosiPin),
612 (into_i2s1_sda_pin, I2s1, I2sSdaPin),
613 ]
614 }
615 (Pio0_14, pio0_14): {
616 (1, FC1_RTS_SCL_SSEL1): [
617 (into_usart1_rts_pin, Usart1, UsartRtsPin),
618 (into_i2c1_scl_pin, I2c1, I2cSclPin),
619 (into_spi1_cs_pin, Spi1, SpiCsPin),
620 ]
621 }
622 (Pio0_14, pio0_14): {
623 (6, FC1_TXD_SCL_MISO_WS): [
624 (into_usart1_tx_pin, Usart1, UsartTxPin),
625 (into_spi1_miso_pin, Spi1, SpiMisoPin),
627 (into_i2s1_ws_pin, I2s1, I2sWsPin),
628 ]
629 }
630 (Pio0_15, pio0_15): {
631 (1, FC6_CTS_SDA_SSEL0): [
632 (into_usart6_cts_pin, Usart6, UsartCtsPin),
633 (into_i2c6_sda_pin, I2c6, I2cSdaPin),
634 (into_spi6_cs_pin, Spi6, SpiCsPin),
635 ]
636 }
637 (Pio0_16, pio0_16): {
638 (1, FC4_TXD_SCL_MISO_WS): [
639 (into_usart4_tx_pin, Usart4, UsartTxPin),
640 (into_i2c4_scl_pin, I2c4, I2cSclPin),
641 (into_spi4_miso_pin, Spi4, SpiMisoPin),
642 (into_i2s4_ws_pin, I2s4, I2sWsPin),
643 ]
644 }
645 (Pio0_17, pio0_17): {
646 (1, FC4_SSEL2): [
647 (into_spi4_cs_pin, Spi4, SpiCsPin),
648 ]
649 }
650 (Pio0_18, pio0_18): {
651 (1, FC4_CTS_SDA_SSEL0): [
652 (into_usart4_cts_pin, Usart4, UsartCtsPin),
653 (into_i2c4_sda_pin, I2c4, I2cSdaPin),
654 (into_spi4_cs_pin, Spi4, SpiCsPin),
655 ]
656 }
657 (Pio0_19, pio0_19): {
658 (1, FC4_RTS_SCL_SSEL1): [
659 (into_usart4_rts_pin, Usart4, UsartRtsPin),
660 (into_i2c4_scl_pin, I2c4, I2cSclPin),
661 (into_spi4_cs_pin, Spi4, SpiCsPin),
662 ]
663 }
664 (Pio0_19, pio0_19): {
665 (7, FC7_TXD_SCL_MISO_WS): [
666 (into_usart7_tx_pin, Usart7, UsartTxPin),
667 (into_i2c7_scl_pin, I2c7, I2cSclPin),
668 (into_spi7_miso_pin, Spi7, SpiMisoPin),
669 (into_i2s7_ws_pin, I2s7, I2sWsPin),
670 ]
671 }
672 (Pio0_20, pio0_20): {
673 (1, FC3_CTS_SDA_SSEL0): [
674 (into_usart3_cts_pin, Usart3, UsartCtsPin),
675 (into_i2c3_sda_pin, I2c3, I2cSdaPin),
676 (into_spi3_cs_pin, Spi3, SpiCsPin),
677 ]
678 }
679 (Pio0_20, pio0_20): {
680 (7, FC7_RXD_SDA_MOSI_DATA): [
681 (into_usart7_rx_pin, Usart7, UsartRxPin),
682 (into_i2c7_sda_pin, I2c7, I2cSdaPin),
683 (into_spi7_mosi_pin, Spi7, SpiMosiPin),
684 (into_i2s7_sda_pin, I2s7, I2sSdaPin),
685 ]
686 }
687 (Pio0_20, pio0_20): {
688 (8, HS_SPI_SSEL0): [
689 (into_spi8_cs_pin, Spi8, SpiCsPin),
690 ]
691 }
692 (Pio0_21, pio0_21): {
693 (1, FC3_RTS_SCL_SSEL1): [
694 (into_usart3_rts_pin, Usart3, UsartRtsPin),
695 (into_i2c3_scl_pin, I2c3, I2cSclPin),
696 (into_spi3_cs_pin, Spi3, SpiCsPin),
697 ]
698 }
699 (Pio0_21, pio0_21): {
700 (7, FC7_SCK): [
701 (into_usart7_sclk_pin, Usart7, UsartSclkPin),
702 (into_spi7_sck_pin, Spi7, SpiSckPin),
703 ]
704 }
705 (Pio0_22, pio0_22): {
706 (1, FC6_TXD_SCL_MISO_WS): [
707 (into_usart6_tx_pin, Usart6, UsartTxPin),
708 (into_i2c6_scl_pin, I2c6, I2cSclPin),
709 (into_spi6_miso_pin, Spi6, SpiMisoPin),
710 (into_i2s6_ws_pin, I2s6, I2sWsPin),
711 ]
712 }
713 (Pio0_23, pio0_23): {
714 (5, FC0_CTS_SDA_SSEL0): [
715 (into_usart0_cts_pin, Usart0, UsartCtsPin),
716 (into_i2c0_sda_pin, I2c0, I2cSdaPin),
717 (into_spi0_cs_pin, Spi0, SpiCsPin),
718 ]
719 }
720 (Pio0_24, pio0_24): {
721 (1, FC0_RXD_SDA_MOSI_DATA): [
722 (into_usart0_rx_pin, Usart0, UsartRxPin),
723 (into_i2c0_sda_pin, I2c0, I2cSdaPin),
724 (into_spi0_mosi_pin, Spi0, SpiMosiPin),
725 (into_i2s0_sda_pin, I2s0, I2sSdaPin),
726 ]
727 }
728 (Pio0_25, pio0_25): {
729 (1, FC0_TXD_SCL_MISO_WS): [
730 (into_usart0_tx_pin, Usart0, UsartTxPin),
731 (into_i2c0_scl_pin, I2c0, I2cSclPin),
732 (into_spi0_miso_pin, Spi0, SpiMisoPin),
733 (into_i2s0_ws_pin, I2s0, I2sWsPin),
734 ]
735 }
736 (Pio0_26, pio0_26): {
737 (1, FC2_RXD_SDA_MOSI_DATA): [
738 (into_usart2_rx_pin, Usart2, UsartRxPin),
739 (into_i2c2_sda_pin, I2c2, I2cSdaPin),
740 (into_spi2_mosi_pin, Spi2, SpiMosiPin),
741 (into_i2s2_sda_pin, I2s2, I2sSdaPin),
742 ]
743 }
744 (Pio0_26, pio0_26): {
745 (8, FC0_SCK): [
746 (into_usart0_sclk_pin, Usart0, UsartSclkPin),
747 (into_spi0_sck_pin, Spi0, SpiSckPin),
748 ]
749 }
750 (Pio0_26, pio0_26): {
751 (9, HS_SPI_MOSI): [
752 (into_spi8_mosi_pin, Spi8, SpiMosiPin),
753 ]
754 }
755 (Pio0_27, pio0_27): {
756 (1, FC2_TXD_SCL_MISO_WS): [
757 (into_usart2_tx_pin, Usart2, UsartTxPin),
758 (into_i2c2_scl_pin, I2c2, I2cSclPin),
759 (into_spi2_miso_pin, Spi2, SpiMisoPin),
760 (into_i2s2_ws_pin, I2s2, I2sWsPin),
761 ]
762 }
763 (Pio0_27, pio0_27): {
764 (7, FC7_RXD_SDA_MOSI_DATA): [
765 (into_usart7_rx_pin, Usart7, UsartRxPin),
766 (into_i2c7_sda_pin, I2c7, I2cSdaPin),
767 (into_spi7_mosi_pin, Spi7, SpiMosiPin),
768 (into_i2s7_sda_pin, I2s7, I2sSdaPin),
769 ]
770 }
771 (Pio0_28, pio0_28): {
772 (1, FC0_SCK): [
773 (into_usart0_sclk_pin, Usart0, UsartSclkPin),
774 (into_spi0_sck_pin, Spi0, SpiSckPin),
775 ]
776 }
777 (Pio0_29, pio0_29): {
778 (1, FC0_RXD_SDA_MOSI_DATA): [
779 (into_usart0_rx_pin, Usart0, UsartRxPin),
780 (into_i2c0_sda_pin, I2c0, I2cSdaPin),
781 (into_spi0_mosi_pin, Spi0, SpiMosiPin),
782 (into_i2s0_sda_pin, I2s0, I2sSdaPin),
783 ]
784 }
785 (Pio0_30, pio0_30): {
786 (1, FC0_TXD_SCL_MISO_WS): [
787 (into_usart0_tx_pin, Usart0, UsartTxPin),
788 (into_i2c0_scl_pin, I2c0, I2cSclPin),
789 (into_spi0_miso_pin, Spi0, SpiMisoPin),
790 (into_i2s0_ws_pin, I2s0, I2sWsPin),
791 ]
792 }
793 (Pio0_31, pio0_31): {
794 (1, FC0_CTS_SDA_SSEL0): [
795 (into_usart0_cts_pin, Usart0, UsartCtsPin),
796 (into_i2c0_sda_pin, I2c0, I2cSdaPin),
797 (into_spi0_cs_pin, Spi0, SpiCsPin),
798 ]
799 }
800 (Pio1_0, pio1_0): {
801 (1, FC0_RTS_SCL_SSEL1): [
802 (into_usart0_rts_pin, Usart0, UsartRtsPin),
803 (into_i2c0_scl_pin, I2c0, I2cSclPin),
804 (into_spi0_cs_pin, Spi0, SpiCsPin),
805 ]
806 }
807 (Pio1_1, pio1_1): {
808 (1, FC3_RXD_SDA_MOSI_DATA): [
809 (into_usart3_rx_pin, Usart3, UsartRxPin),
810 (into_i2c3_sda_pin, I2c3, I2cSdaPin),
811 (into_spi3_mosi_pin, Spi3, SpiMosiPin),
812 (into_i2s3_sda_pin, I2s3, I2sSdaPin),
813 ]
814 }
815 (Pio1_1, pio1_1): {
816 (5, HS_SPI_SSEL1): [
817 (into_spi8_cs_pin, Spi8, SpiCsPin),
818 ]
819 }
820 (Pio1_2, pio1_2): {
821 (6, HS_SPI_SCK): [
822 (into_spi8_sck_pin, Spi8, SpiSckPin),
823 ]
824 }
825 (Pio1_3, pio1_3): {
826 (6, HS_SPI_MISO): [
827 (into_spi8_miso_pin, Spi8, SpiMisoPin),
828 ]
829 }
830 (Pio1_4, pio1_4): {
831 (1, FC0_SCK): [
832 (into_usart0_sclk_pin, Usart0, UsartSclkPin),
833 (into_spi0_sck_pin, Spi0, SpiSckPin),
834 ]
835 }
836 (Pio1_5, pio1_5): {
837 (1, FC0_RXD_SDA_MOSI_DATA): [
838 (into_usart0_rx_pin, Usart0, UsartRxPin),
839 (into_i2c0_sda_pin, I2c0, I2cSdaPin),
840 (into_spi0_mosi_pin, Spi0, SpiMosiPin),
841 (into_i2s0_sda_pin, I2s0, I2sSdaPin),
842 ]
843 }
844 (Pio1_6, pio1_6): {
845 (1, FC0_TXD_SCL_MISO_WS): [
846 (into_usart0_tx_pin, Usart0, UsartTxPin),
847 (into_i2c0_scl_pin, I2c0, I2cSclPin),
848 (into_spi0_miso_pin, Spi0, SpiMisoPin),
849 (into_i2s0_ws_pin, I2s0, I2sWsPin),
850 ]
851 }
852 (Pio1_7, pio1_7): {
853 (1, FC0_RTS_SCL_SSEL1): [
854 (into_usart0_rts_pin, Usart0, UsartRtsPin),
855 (into_i2c0_scl_pin, I2c0, I2cSclPin),
856 (into_spi0_cs_pin, Spi0, SpiCsPin),
857 ]
858 }
859 (Pio1_8, pio1_8): {
860 (1, FC0_CTS_SDA_SSEL0): [
861 (into_usart0_cts_pin, Usart0, UsartCtsPin),
862 (into_i2c0_sda_pin, I2c0, I2cSdaPin),
863 (into_spi0_cs_pin, Spi0, SpiCsPin),
864 ]
865 }
866 (Pio1_8, pio1_8): {
867 (5, FC4_SSEL2): [
868 (into_spi4_cs_pin, Spi4, SpiCsPin),
869 ]
870 }
871 (Pio1_9, pio1_9): {
872 (2, FC1_SCK): [
873 (into_usart1_sclk_pin, Usart1, UsartSclkPin),
874 (into_spi1_sck_pin, Spi1, SpiSckPin),
875 ]
876 }
877 (Pio1_9, pio1_9): {
878 (5, FC4_CTS_SDA_SSEL0): [
879 (into_usart4_cts_pin, Usart4, UsartCtsPin),
880 (into_i2c4_sda_pin, I2c4, I2cSdaPin),
881 (into_spi4_cs_pin, Spi4, SpiCsPin),
882 ]
883 }
884 (Pio1_10, pio1_10): {
885 (2, FC1_RXD_SDA_MOSI_DATA): [
886 (into_usart1_rx_pin, Usart1, UsartRxPin),
887 (into_i2c1_sda_pin, I2c1, I2cSdaPin),
888 (into_spi1_mosi_pin, Spi1, SpiMosiPin),
889 (into_i2s1_sda_pin, I2s1, I2sSdaPin),
890 ]
891 }
892 (Pio1_11, pio1_11): {
893 (2, FC1_TXD_SCL_MISO_WS): [
894 (into_usart1_tx_pin, Usart1, UsartTxPin),
895 (into_i2c1_scl_pin, I2c1, I2cSclPin),
896 (into_spi1_miso_pin, Spi1, SpiMisoPin),
897 (into_i2s1_ws_pin, I2s1, I2sWsPin),
898 ]
899 }
900 (Pio1_12, pio1_12): {
901 (2, FC6_SCK): [
902 (into_usart6_sclk_pin, Usart6, UsartSclkPin),
903 (into_spi6_sck_pin, Spi6, SpiSckPin),
904 ]
905 }
906 (Pio1_12, pio1_12): {
907 (5, HS_SPI_SSEL2): [
908 (into_spi8_cs_pin, Spi8, SpiCsPin),
909 ]
910 }
911 (Pio1_13, pio1_13): {
912 (2, FC6_RXD_SDA_MOSI_DATA): [
913 (into_usart6_rx_pin, Usart6, UsartRxPin),
914 (into_i2c6_sda_pin, I2c6, I2cSdaPin),
915 (into_spi6_mosi_pin, Spi6, SpiMosiPin),
916 (into_i2s6_sda_pin, I2s6, I2sSdaPin),
917 ]
918 }
919 (Pio1_14, pio1_14): {
920 (4, FC5_CTS_SDA_SSEL0): [
921 (into_usart5_cts_pin, Usart5, UsartCtsPin),
922 (into_i2c5_sda_pin, I2c5, I2cSdaPin),
923 (into_spi5_cs_pin, Spi5, SpiCsPin),
924 ]
925 }
926 (Pio1_15, pio1_15): {
927 (4, FC5_RTS_SCL_SSEL1): [
928 (into_usart5_rts_pin, Usart5, UsartRtsPin),
929 (into_i2c5_scl_pin, I2c5, I2cSclPin),
930 (into_spi5_cs_pin, Spi5, SpiCsPin),
931 ]
932 }
933 (Pio1_15, pio1_15): {
934 (5, FC4_RTS_SCL_SSEL1): [
935 (into_usart4_rts_pin, Usart4, UsartRtsPin),
936 (into_i2c4_scl_pin, I2c4, I2cSclPin),
937 (into_spi4_cs_pin, Spi4, SpiCsPin),
938 ]
939 }
940 (Pio1_16, pio1_16): {
941 (2, FC6_TXD_SCL_MISO_WS): [
942 (into_usart6_tx_pin, Usart6, UsartTxPin),
943 (into_i2c6_scl_pin, I2c6, I2cSclPin),
944 (into_spi6_miso_pin, Spi6, SpiMisoPin),
945 (into_i2s6_ws_pin, I2s6, I2sWsPin),
946 ]
947 }
948 (Pio1_17, pio1_17): {
949 (3, FC6_RTS_SCL_SSEL1): [
950 (into_usart6_rts_pin, Usart6, UsartRtsPin),
951 (into_i2c6_scl_pin, I2c6, I2cSclPin),
952 (into_spi6_cs_pin, Spi6, SpiCsPin),
953 ]
954 }
955 (Pio1_19, pio1_19): {
956 (5, FC4_SCK): [
957 (into_usart4_sclk_pin, Usart4, UsartSclkPin),
958 (into_spi4_sck_pin, Spi4, SpiSckPin),
959 ]
960 }
961 (Pio1_20, pio1_20): {
962 (1, FC7_RTS_SCL_SSEL1): [
963 (into_usart7_rts_pin, Usart7, UsartRtsPin),
964 (into_i2c7_scl_pin, I2c7, I2cSclPin),
965 (into_spi7_cs_pin, Spi7, SpiCsPin),
966 ]
967 }
968 (Pio1_20, pio1_20): {
969 (5, FC4_TXD_SCL_MISO_WS): [
970 (into_usart4_tx_pin, Usart4, UsartTxPin),
971 (into_i2c4_scl_pin, I2c4, I2cSclPin),
972 (into_spi4_miso_pin, Spi4, SpiMisoPin),
973 (into_i2s4_ws_pin, I2s4, I2sWsPin),
974 ]
975 }
976 (Pio1_21, pio1_21): {
977 (1, FC7_CTS_SDA_SSEL0): [
978 (into_usart7_cts_pin, Usart7, UsartCtsPin),
979 (into_i2c7_sda_pin, I2c7, I2cSdaPin),
980 (into_spi7_cs_pin, Spi7, SpiCsPin),
981 ]
982 }
983 (Pio1_21, pio1_21): {
984 (5, FC4_RXD_SDA_MOSI_DATA): [
985 (into_usart4_rx_pin, Usart4, UsartRxPin),
986 (into_i2c4_sda_pin, I2c4, I2cSdaPin),
987 (into_spi4_mosi_pin, Spi4, SpiMosiPin),
988 (into_i2s4_sda_pin, I2s4, I2sSdaPin),
989 ]
990 }
991 (Pio1_22, pio1_22): {
992 (5, FC4_SSEL3): [
993 (into_spi4_cs_pin, Spi4, SpiCsPin),
994 ]
995 }
996 (Pio1_23, pio1_23): {
997 (1, FC2_SCK): [
998 (into_usart2_sclk_pin, Usart2, UsartSclkPin),
999 (into_spi2_sck_pin, Spi2, SpiSckPin),
1000 ]
1001 }
1002 (Pio1_23, pio1_23): {
1003 (5, FC3_SSEL2): [
1004 (into_spi3_cs_pin, Spi3, SpiCsPin),
1005 ]
1006 }
1007 (Pio1_24, pio1_24): {
1008 (1, FC2_RXD_SDA_MOSI_DATA): [
1009 (into_usart2_rx_pin, Usart2, UsartRxPin),
1010 (into_i2c2_sda_pin, I2c2, I2cSdaPin),
1011 (into_spi2_mosi_pin, Spi2, SpiMosiPin),
1012 (into_i2s2_sda_pin, I2s2, I2sSdaPin),
1013 ]
1014 }
1015 (Pio1_24, pio1_24): {
1016 (5, FC3_SSEL3): [
1017 (into_spi3_cs_pin, Spi3, SpiCsPin),
1018 ]
1019 }
1020 (Pio1_25, pio1_25): {
1021 (1, FC2_TXD_SCL_MISO_WS): [
1022 (into_usart2_tx_pin, Usart2, UsartTxPin),
1023 (into_i2c2_scl_pin, I2c2, I2cSclPin),
1024 (into_spi2_miso_pin, Spi2, SpiMisoPin),
1025 (into_i2s2_ws_pin, I2s2, I2sWsPin),
1026 ]
1027 }
1028 (Pio1_26, pio1_26): {
1029 (1, FC2_CTS_SDA_SSEL0): [
1030 (into_usart2_cts_pin, Usart2, UsartCtsPin),
1031 (into_i2c2_sda_pin, I2c2, I2cSdaPin),
1032 (into_spi2_cs_pin, Spi2, SpiCsPin),
1033 ]
1034 }
1035 (Pio1_26, pio1_26): {
1036 (5, HS_SPI_SSEL3): [
1037 (into_spi8_cs_pin, Spi8, SpiCsPin),
1038 ]
1039 }
1040 (Pio1_27, pio1_27): {
1041 (1, FC2_RTS_SCL_SSEL1): [
1042 (into_usart2_rts_pin, Usart2, UsartRtsPin),
1043 (into_i2c2_scl_pin, I2c2, I2cSclPin),
1044 (into_spi2_cs_pin, Spi2, SpiCsPin),
1045 ]
1046 }
1047 (Pio1_28, pio1_28): {
1048 (1, FC7_SCK): [
1049 (into_usart7_sclk_pin, Usart7, UsartSclkPin),
1050 (into_spi7_sck_pin, Spi7, SpiSckPin),
1051 ]
1052 }
1053 (Pio1_29, pio1_29): {
1054 (1, FC7_RXD_SDA_MOSI_DATA): [
1055 (into_usart7_rx_pin, Usart7, UsartRxPin),
1056 (into_i2c7_sda_pin, I2c7, I2cSdaPin),
1057 (into_spi7_mosi_pin, Spi7, SpiMosiPin),
1058 (into_i2s7_sda_pin, I2s7, I2sSdaPin),
1059 ]
1060 }
1061 (Pio1_30, pio1_30): {
1062 (1, FC7_TXD_SCL_MISO_WS): [
1063 (into_usart7_tx_pin, Usart7, UsartTxPin),
1064 (into_i2c7_scl_pin, I2c7, I2cSclPin),
1065 (into_spi7_miso_pin, Spi7, SpiMisoPin),
1066 (into_i2s7_ws_pin, I2s7, I2sWsPin),
1067 ]
1068 }
1069}
1070
1071impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c0>
1072 for Pin<PIO, Special<function::FC0_RTS_SCL_SSEL1>>
1073{
1074}
1075impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c0>
1076 for Pin<PIO, Special<function::FC0_TXD_SCL_MISO_WS>>
1077{
1078}
1079impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c1>
1080 for Pin<PIO, Special<function::FC1_RTS_SCL_SSEL1>>
1081{
1082}
1083impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c1>
1084 for Pin<PIO, Special<function::FC1_TXD_SCL_MISO_WS>>
1085{
1086}
1087impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c2>
1088 for Pin<PIO, Special<function::FC2_RTS_SCL_SSEL1>>
1089{
1090}
1091impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c2>
1092 for Pin<PIO, Special<function::FC2_TXD_SCL_MISO_WS>>
1093{
1094}
1095impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c3>
1096 for Pin<PIO, Special<function::FC3_RTS_SCL_SSEL1>>
1097{
1098}
1099impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c3>
1100 for Pin<PIO, Special<function::FC3_TXD_SCL_MISO_WS>>
1101{
1102}
1103impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c4>
1104 for Pin<PIO, Special<function::FC4_RTS_SCL_SSEL1>>
1105{
1106}
1107impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c4>
1108 for Pin<PIO, Special<function::FC4_TXD_SCL_MISO_WS>>
1109{
1110}
1111impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c5>
1112 for Pin<PIO, Special<function::FC5_RTS_SCL_SSEL1>>
1113{
1114}
1115impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c5>
1116 for Pin<PIO, Special<function::FC5_TXD_SCL_MISO_WS>>
1117{
1118}
1119impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c6>
1120 for Pin<PIO, Special<function::FC6_RTS_SCL_SSEL1>>
1121{
1122}
1123impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c6>
1124 for Pin<PIO, Special<function::FC6_TXD_SCL_MISO_WS>>
1125{
1126}
1127impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c7>
1128 for Pin<PIO, Special<function::FC7_RTS_SCL_SSEL1>>
1129{
1130}
1131impl<PIO: PinId> fc::I2cSclPin<PIO, flexcomm::I2c7>
1132 for Pin<PIO, Special<function::FC7_TXD_SCL_MISO_WS>>
1133{
1134}
1135impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c0>
1136 for Pin<PIO, Special<function::FC0_CTS_SDA_SSEL0>>
1137{
1138}
1139impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c0>
1140 for Pin<PIO, Special<function::FC0_RXD_SDA_MOSI_DATA>>
1141{
1142}
1143impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c1>
1144 for Pin<PIO, Special<function::FC1_CTS_SDA_SSEL0>>
1145{
1146}
1147impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c1>
1148 for Pin<PIO, Special<function::FC1_RXD_SDA_MOSI_DATA>>
1149{
1150}
1151impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c2>
1152 for Pin<PIO, Special<function::FC2_CTS_SDA_SSEL0>>
1153{
1154}
1155impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c2>
1156 for Pin<PIO, Special<function::FC2_RXD_SDA_MOSI_DATA>>
1157{
1158}
1159impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c3>
1160 for Pin<PIO, Special<function::FC3_CTS_SDA_SSEL0>>
1161{
1162}
1163impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c3>
1164 for Pin<PIO, Special<function::FC3_RXD_SDA_MOSI_DATA>>
1165{
1166}
1167impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c4>
1168 for Pin<PIO, Special<function::FC4_CTS_SDA_SSEL0>>
1169{
1170}
1171impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c4>
1172 for Pin<PIO, Special<function::FC4_RXD_SDA_MOSI_DATA>>
1173{
1174}
1175impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c5>
1176 for Pin<PIO, Special<function::FC5_CTS_SDA_SSEL0>>
1177{
1178}
1179impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c5>
1180 for Pin<PIO, Special<function::FC5_RXD_SDA_MOSI_DATA>>
1181{
1182}
1183impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c6>
1184 for Pin<PIO, Special<function::FC6_CTS_SDA_SSEL0>>
1185{
1186}
1187impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c6>
1188 for Pin<PIO, Special<function::FC6_RXD_SDA_MOSI_DATA>>
1189{
1190}
1191impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c7>
1192 for Pin<PIO, Special<function::FC7_CTS_SDA_SSEL0>>
1193{
1194}
1195impl<PIO: PinId> fc::I2cSdaPin<PIO, flexcomm::I2c7>
1196 for Pin<PIO, Special<function::FC7_RXD_SDA_MOSI_DATA>>
1197{
1198}
1199impl<PIO: PinId> fc::I2sSdaPin<PIO, flexcomm::I2s0>
1200 for Pin<PIO, Special<function::FC0_RXD_SDA_MOSI_DATA>>
1201{
1202}
1203impl<PIO: PinId> fc::I2sSdaPin<PIO, flexcomm::I2s1>
1204 for Pin<PIO, Special<function::FC1_RXD_SDA_MOSI_DATA>>
1205{
1206}
1207impl<PIO: PinId> fc::I2sSdaPin<PIO, flexcomm::I2s2>
1208 for Pin<PIO, Special<function::FC2_RXD_SDA_MOSI_DATA>>
1209{
1210}
1211impl<PIO: PinId> fc::I2sSdaPin<PIO, flexcomm::I2s3>
1212 for Pin<PIO, Special<function::FC3_RXD_SDA_MOSI_DATA>>
1213{
1214}
1215impl<PIO: PinId> fc::I2sSdaPin<PIO, flexcomm::I2s4>
1216 for Pin<PIO, Special<function::FC4_RXD_SDA_MOSI_DATA>>
1217{
1218}
1219impl<PIO: PinId> fc::I2sSdaPin<PIO, flexcomm::I2s5>
1220 for Pin<PIO, Special<function::FC5_RXD_SDA_MOSI_DATA>>
1221{
1222}
1223impl<PIO: PinId> fc::I2sSdaPin<PIO, flexcomm::I2s6>
1224 for Pin<PIO, Special<function::FC6_RXD_SDA_MOSI_DATA>>
1225{
1226}
1227impl<PIO: PinId> fc::I2sSdaPin<PIO, flexcomm::I2s7>
1228 for Pin<PIO, Special<function::FC7_RXD_SDA_MOSI_DATA>>
1229{
1230}
1231impl<PIO: PinId> fc::I2sWsPin<PIO, flexcomm::I2s0>
1232 for Pin<PIO, Special<function::FC0_TXD_SCL_MISO_WS>>
1233{
1234}
1235impl<PIO: PinId> fc::I2sWsPin<PIO, flexcomm::I2s1>
1236 for Pin<PIO, Special<function::FC1_TXD_SCL_MISO_WS>>
1237{
1238}
1239impl<PIO: PinId> fc::I2sWsPin<PIO, flexcomm::I2s2>
1240 for Pin<PIO, Special<function::FC2_TXD_SCL_MISO_WS>>
1241{
1242}
1243impl<PIO: PinId> fc::I2sWsPin<PIO, flexcomm::I2s3>
1244 for Pin<PIO, Special<function::FC3_TXD_SCL_MISO_WS>>
1245{
1246}
1247impl<PIO: PinId> fc::I2sWsPin<PIO, flexcomm::I2s4>
1248 for Pin<PIO, Special<function::FC4_TXD_SCL_MISO_WS>>
1249{
1250}
1251impl<PIO: PinId> fc::I2sWsPin<PIO, flexcomm::I2s5>
1252 for Pin<PIO, Special<function::FC5_TXD_SCL_MISO_WS>>
1253{
1254}
1255impl<PIO: PinId> fc::I2sWsPin<PIO, flexcomm::I2s6>
1256 for Pin<PIO, Special<function::FC6_TXD_SCL_MISO_WS>>
1257{
1258}
1259impl<PIO: PinId> fc::I2sWsPin<PIO, flexcomm::I2s7>
1260 for Pin<PIO, Special<function::FC7_TXD_SCL_MISO_WS>>
1261{
1262}
1263impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi0>
1264 for Pin<PIO, Special<function::FC0_CTS_SDA_SSEL0>>
1265{
1266 const CS: ChipSelect = ChipSelect::Chip0;
1267}
1268impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi0>
1269 for Pin<PIO, Special<function::FC0_RTS_SCL_SSEL1>>
1270{
1271 const CS: ChipSelect = ChipSelect::Chip1;
1272}
1273impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi1>
1274 for Pin<PIO, Special<function::FC1_CTS_SDA_SSEL0>>
1275{
1276 const CS: ChipSelect = ChipSelect::Chip0;
1277}
1278impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi1>
1279 for Pin<PIO, Special<function::FC1_RTS_SCL_SSEL1>>
1280{
1281 const CS: ChipSelect = ChipSelect::Chip1;
1282}
1283impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi2>
1284 for Pin<PIO, Special<function::FC2_CTS_SDA_SSEL0>>
1285{
1286 const CS: ChipSelect = ChipSelect::Chip0;
1287}
1288impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi2>
1289 for Pin<PIO, Special<function::FC2_RTS_SCL_SSEL1>>
1290{
1291 const CS: ChipSelect = ChipSelect::Chip1;
1292}
1293impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi3>
1294 for Pin<PIO, Special<function::FC3_CTS_SDA_SSEL0>>
1295{
1296 const CS: ChipSelect = ChipSelect::Chip0;
1297}
1298impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi3>
1299 for Pin<PIO, Special<function::FC3_RTS_SCL_SSEL1>>
1300{
1301 const CS: ChipSelect = ChipSelect::Chip1;
1302}
1303impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi3> for Pin<PIO, Special<function::FC3_SSEL2>> {
1304 const CS: ChipSelect = ChipSelect::Chip2;
1305}
1306impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi3> for Pin<PIO, Special<function::FC3_SSEL3>> {
1307 const CS: ChipSelect = ChipSelect::Chip3;
1308}
1309impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi4>
1310 for Pin<PIO, Special<function::FC4_CTS_SDA_SSEL0>>
1311{
1312 const CS: ChipSelect = ChipSelect::Chip0;
1313}
1314impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi4>
1315 for Pin<PIO, Special<function::FC4_RTS_SCL_SSEL1>>
1316{
1317 const CS: ChipSelect = ChipSelect::Chip1;
1318}
1319impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi4> for Pin<PIO, Special<function::FC4_SSEL2>> {
1320 const CS: ChipSelect = ChipSelect::Chip2;
1321}
1322impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi4> for Pin<PIO, Special<function::FC4_SSEL3>> {
1323 const CS: ChipSelect = ChipSelect::Chip3;
1324}
1325impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi5>
1326 for Pin<PIO, Special<function::FC5_CTS_SDA_SSEL0>>
1327{
1328 const CS: ChipSelect = ChipSelect::Chip0;
1329}
1330impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi5>
1331 for Pin<PIO, Special<function::FC5_RTS_SCL_SSEL1>>
1332{
1333 const CS: ChipSelect = ChipSelect::Chip1;
1334}
1335impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi6>
1336 for Pin<PIO, Special<function::FC6_CTS_SDA_SSEL0>>
1337{
1338 const CS: ChipSelect = ChipSelect::Chip0;
1339}
1340impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi6>
1341 for Pin<PIO, Special<function::FC6_RTS_SCL_SSEL1>>
1342{
1343 const CS: ChipSelect = ChipSelect::Chip1;
1344}
1345impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi7>
1346 for Pin<PIO, Special<function::FC7_CTS_SDA_SSEL0>>
1347{
1348 const CS: ChipSelect = ChipSelect::Chip0;
1349}
1350impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi7>
1351 for Pin<PIO, Special<function::FC7_RTS_SCL_SSEL1>>
1352{
1353 const CS: ChipSelect = ChipSelect::Chip1;
1354}
1355impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi8> for Pin<PIO, Special<function::HS_SPI_SSEL0>> {
1356 const CS: ChipSelect = ChipSelect::Chip0;
1357}
1358impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi8> for Pin<PIO, Special<function::HS_SPI_SSEL1>> {
1359 const CS: ChipSelect = ChipSelect::Chip1;
1360}
1361impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi8> for Pin<PIO, Special<function::HS_SPI_SSEL2>> {
1362 const CS: ChipSelect = ChipSelect::Chip2;
1363}
1364impl<PIO: PinId> fc::SpiCsPin<PIO, flexcomm::Spi8> for Pin<PIO, Special<function::HS_SPI_SSEL3>> {
1365 const CS: ChipSelect = ChipSelect::Chip3;
1366}
1367impl<PIO: PinId> fc::SpiMisoPin<PIO, flexcomm::Spi0>
1368 for Pin<PIO, Special<function::FC0_TXD_SCL_MISO_WS>>
1369{
1370}
1371impl<PIO: PinId> fc::SpiMisoPin<PIO, flexcomm::Spi1>
1372 for Pin<PIO, Special<function::FC1_TXD_SCL_MISO_WS>>
1373{
1374}
1375impl<PIO: PinId> fc::SpiMisoPin<PIO, flexcomm::Spi2>
1376 for Pin<PIO, Special<function::FC2_TXD_SCL_MISO_WS>>
1377{
1378}
1379impl<PIO: PinId> fc::SpiMisoPin<PIO, flexcomm::Spi3>
1380 for Pin<PIO, Special<function::FC3_TXD_SCL_MISO_WS>>
1381{
1382}
1383impl<PIO: PinId> fc::SpiMisoPin<PIO, flexcomm::Spi4>
1384 for Pin<PIO, Special<function::FC4_TXD_SCL_MISO_WS>>
1385{
1386}
1387impl<PIO: PinId> fc::SpiMisoPin<PIO, flexcomm::Spi5>
1388 for Pin<PIO, Special<function::FC5_TXD_SCL_MISO_WS>>
1389{
1390}
1391impl<PIO: PinId> fc::SpiMisoPin<PIO, flexcomm::Spi6>
1392 for Pin<PIO, Special<function::FC6_TXD_SCL_MISO_WS>>
1393{
1394}
1395impl<PIO: PinId> fc::SpiMisoPin<PIO, flexcomm::Spi7>
1396 for Pin<PIO, Special<function::FC7_TXD_SCL_MISO_WS>>
1397{
1398}
1399impl<PIO: PinId> fc::SpiMisoPin<PIO, flexcomm::Spi8> for Pin<PIO, Special<function::HS_SPI_MISO>> {}
1400impl<PIO: PinId> fc::SpiMosiPin<PIO, flexcomm::Spi0>
1401 for Pin<PIO, Special<function::FC0_RXD_SDA_MOSI_DATA>>
1402{
1403}
1404impl<PIO: PinId> fc::SpiMosiPin<PIO, flexcomm::Spi1>
1405 for Pin<PIO, Special<function::FC1_RXD_SDA_MOSI_DATA>>
1406{
1407}
1408impl<PIO: PinId> fc::SpiMosiPin<PIO, flexcomm::Spi2>
1409 for Pin<PIO, Special<function::FC2_RXD_SDA_MOSI_DATA>>
1410{
1411}
1412impl<PIO: PinId> fc::SpiMosiPin<PIO, flexcomm::Spi3>
1413 for Pin<PIO, Special<function::FC3_RXD_SDA_MOSI_DATA>>
1414{
1415}
1416impl<PIO: PinId> fc::SpiMosiPin<PIO, flexcomm::Spi4>
1417 for Pin<PIO, Special<function::FC4_RXD_SDA_MOSI_DATA>>
1418{
1419}
1420impl<PIO: PinId> fc::SpiMosiPin<PIO, flexcomm::Spi5>
1421 for Pin<PIO, Special<function::FC5_RXD_SDA_MOSI_DATA>>
1422{
1423}
1424impl<PIO: PinId> fc::SpiMosiPin<PIO, flexcomm::Spi6>
1425 for Pin<PIO, Special<function::FC6_RXD_SDA_MOSI_DATA>>
1426{
1427}
1428impl<PIO: PinId> fc::SpiMosiPin<PIO, flexcomm::Spi7>
1429 for Pin<PIO, Special<function::FC7_RXD_SDA_MOSI_DATA>>
1430{
1431}
1432impl<PIO: PinId> fc::SpiMosiPin<PIO, flexcomm::Spi8> for Pin<PIO, Special<function::HS_SPI_MOSI>> {}
1433impl<PIO: PinId> fc::SpiSckPin<PIO, flexcomm::Spi0> for Pin<PIO, Special<function::FC0_SCK>> {}
1434impl<PIO: PinId> fc::SpiSckPin<PIO, flexcomm::Spi1> for Pin<PIO, Special<function::FC1_SCK>> {}
1435impl<PIO: PinId> fc::SpiSckPin<PIO, flexcomm::Spi2> for Pin<PIO, Special<function::FC2_SCK>> {}
1436impl<PIO: PinId> fc::SpiSckPin<PIO, flexcomm::Spi3> for Pin<PIO, Special<function::FC3_SCK>> {}
1437impl<PIO: PinId> fc::SpiSckPin<PIO, flexcomm::Spi4> for Pin<PIO, Special<function::FC4_SCK>> {}
1438impl<PIO: PinId> fc::SpiSckPin<PIO, flexcomm::Spi5> for Pin<PIO, Special<function::FC5_SCK>> {}
1439impl<PIO: PinId> fc::SpiSckPin<PIO, flexcomm::Spi6> for Pin<PIO, Special<function::FC6_SCK>> {}
1440impl<PIO: PinId> fc::SpiSckPin<PIO, flexcomm::Spi7> for Pin<PIO, Special<function::FC7_SCK>> {}
1441impl<PIO: PinId> fc::SpiSckPin<PIO, flexcomm::Spi8> for Pin<PIO, Special<function::HS_SPI_SCK>> {}
1442impl<PIO: PinId> fc::UsartCtsPin<PIO, flexcomm::Usart0>
1443 for Pin<PIO, Special<function::FC0_CTS_SDA_SSEL0>>
1444{
1445}
1446impl<PIO: PinId> fc::UsartCtsPin<PIO, flexcomm::Usart1>
1447 for Pin<PIO, Special<function::FC1_CTS_SDA_SSEL0>>
1448{
1449}
1450impl<PIO: PinId> fc::UsartCtsPin<PIO, flexcomm::Usart2>
1451 for Pin<PIO, Special<function::FC2_CTS_SDA_SSEL0>>
1452{
1453}
1454impl<PIO: PinId> fc::UsartCtsPin<PIO, flexcomm::Usart3>
1455 for Pin<PIO, Special<function::FC3_CTS_SDA_SSEL0>>
1456{
1457}
1458impl<PIO: PinId> fc::UsartCtsPin<PIO, flexcomm::Usart4>
1459 for Pin<PIO, Special<function::FC4_CTS_SDA_SSEL0>>
1460{
1461}
1462impl<PIO: PinId> fc::UsartCtsPin<PIO, flexcomm::Usart5>
1463 for Pin<PIO, Special<function::FC5_CTS_SDA_SSEL0>>
1464{
1465}
1466impl<PIO: PinId> fc::UsartCtsPin<PIO, flexcomm::Usart6>
1467 for Pin<PIO, Special<function::FC6_CTS_SDA_SSEL0>>
1468{
1469}
1470impl<PIO: PinId> fc::UsartCtsPin<PIO, flexcomm::Usart7>
1471 for Pin<PIO, Special<function::FC7_CTS_SDA_SSEL0>>
1472{
1473}
1474impl<PIO: PinId> fc::UsartRtsPin<PIO, flexcomm::Usart0>
1475 for Pin<PIO, Special<function::FC0_RTS_SCL_SSEL1>>
1476{
1477}
1478impl<PIO: PinId> fc::UsartRtsPin<PIO, flexcomm::Usart1>
1479 for Pin<PIO, Special<function::FC1_RTS_SCL_SSEL1>>
1480{
1481}
1482impl<PIO: PinId> fc::UsartRtsPin<PIO, flexcomm::Usart2>
1483 for Pin<PIO, Special<function::FC2_RTS_SCL_SSEL1>>
1484{
1485}
1486impl<PIO: PinId> fc::UsartRtsPin<PIO, flexcomm::Usart3>
1487 for Pin<PIO, Special<function::FC3_RTS_SCL_SSEL1>>
1488{
1489}
1490impl<PIO: PinId> fc::UsartRtsPin<PIO, flexcomm::Usart4>
1491 for Pin<PIO, Special<function::FC4_RTS_SCL_SSEL1>>
1492{
1493}
1494impl<PIO: PinId> fc::UsartRtsPin<PIO, flexcomm::Usart5>
1495 for Pin<PIO, Special<function::FC5_RTS_SCL_SSEL1>>
1496{
1497}
1498impl<PIO: PinId> fc::UsartRtsPin<PIO, flexcomm::Usart6>
1499 for Pin<PIO, Special<function::FC6_RTS_SCL_SSEL1>>
1500{
1501}
1502impl<PIO: PinId> fc::UsartRtsPin<PIO, flexcomm::Usart7>
1503 for Pin<PIO, Special<function::FC7_RTS_SCL_SSEL1>>
1504{
1505}
1506impl<PIO: PinId> fc::UsartRxPin<PIO, flexcomm::Usart0>
1507 for Pin<PIO, Special<function::FC0_RXD_SDA_MOSI_DATA>>
1508{
1509}
1510impl<PIO: PinId> fc::UsartRxPin<PIO, flexcomm::Usart1>
1511 for Pin<PIO, Special<function::FC1_RXD_SDA_MOSI_DATA>>
1512{
1513}
1514impl<PIO: PinId> fc::UsartRxPin<PIO, flexcomm::Usart2>
1515 for Pin<PIO, Special<function::FC2_RXD_SDA_MOSI_DATA>>
1516{
1517}
1518impl<PIO: PinId> fc::UsartRxPin<PIO, flexcomm::Usart3>
1519 for Pin<PIO, Special<function::FC3_RXD_SDA_MOSI_DATA>>
1520{
1521}
1522impl<PIO: PinId> fc::UsartRxPin<PIO, flexcomm::Usart4>
1523 for Pin<PIO, Special<function::FC4_RXD_SDA_MOSI_DATA>>
1524{
1525}
1526impl<PIO: PinId> fc::UsartRxPin<PIO, flexcomm::Usart5>
1527 for Pin<PIO, Special<function::FC5_RXD_SDA_MOSI_DATA>>
1528{
1529}
1530impl<PIO: PinId> fc::UsartRxPin<PIO, flexcomm::Usart6>
1531 for Pin<PIO, Special<function::FC6_RXD_SDA_MOSI_DATA>>
1532{
1533}
1534impl<PIO: PinId> fc::UsartRxPin<PIO, flexcomm::Usart7>
1535 for Pin<PIO, Special<function::FC7_RXD_SDA_MOSI_DATA>>
1536{
1537}
1538impl<PIO: PinId> fc::UsartSclkPin<PIO, flexcomm::Usart0> for Pin<PIO, Special<function::FC0_SCK>> {}
1539impl<PIO: PinId> fc::UsartSclkPin<PIO, flexcomm::Usart1> for Pin<PIO, Special<function::FC1_SCK>> {}
1540impl<PIO: PinId> fc::UsartSclkPin<PIO, flexcomm::Usart2> for Pin<PIO, Special<function::FC2_SCK>> {}
1541impl<PIO: PinId> fc::UsartSclkPin<PIO, flexcomm::Usart3> for Pin<PIO, Special<function::FC3_SCK>> {}
1542impl<PIO: PinId> fc::UsartSclkPin<PIO, flexcomm::Usart4> for Pin<PIO, Special<function::FC4_SCK>> {}
1543impl<PIO: PinId> fc::UsartSclkPin<PIO, flexcomm::Usart5> for Pin<PIO, Special<function::FC5_SCK>> {}
1544impl<PIO: PinId> fc::UsartSclkPin<PIO, flexcomm::Usart6> for Pin<PIO, Special<function::FC6_SCK>> {}
1545impl<PIO: PinId> fc::UsartSclkPin<PIO, flexcomm::Usart7> for Pin<PIO, Special<function::FC7_SCK>> {}
1546impl<PIO: PinId> fc::UsartTxPin<PIO, flexcomm::Usart0>
1547 for Pin<PIO, Special<function::FC0_TXD_SCL_MISO_WS>>
1548{
1549}
1550impl<PIO: PinId> fc::UsartTxPin<PIO, flexcomm::Usart1>
1551 for Pin<PIO, Special<function::FC1_TXD_SCL_MISO_WS>>
1552{
1553}
1554impl<PIO: PinId> fc::UsartTxPin<PIO, flexcomm::Usart2>
1555 for Pin<PIO, Special<function::FC2_TXD_SCL_MISO_WS>>
1556{
1557}
1558impl<PIO: PinId> fc::UsartTxPin<PIO, flexcomm::Usart3>
1559 for Pin<PIO, Special<function::FC3_TXD_SCL_MISO_WS>>
1560{
1561}
1562impl<PIO: PinId> fc::UsartTxPin<PIO, flexcomm::Usart4>
1563 for Pin<PIO, Special<function::FC4_TXD_SCL_MISO_WS>>
1564{
1565}
1566impl<PIO: PinId> fc::UsartTxPin<PIO, flexcomm::Usart5>
1567 for Pin<PIO, Special<function::FC5_TXD_SCL_MISO_WS>>
1568{
1569}
1570impl<PIO: PinId> fc::UsartTxPin<PIO, flexcomm::Usart6>
1571 for Pin<PIO, Special<function::FC6_TXD_SCL_MISO_WS>>
1572{
1573}
1574impl<PIO: PinId> fc::UsartTxPin<PIO, flexcomm::Usart7>
1575 for Pin<PIO, Special<function::FC7_TXD_SCL_MISO_WS>>
1576{
1577}