aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/build.rs4
-rw-r--r--embassy-stm32/src/lib.rs2
-rw-r--r--embassy-stm32/src/ucpd.rs28
3 files changed, 34 insertions, 0 deletions
diff --git a/embassy-stm32/build.rs b/embassy-stm32/build.rs
index 84e8be25d..680216034 100644
--- a/embassy-stm32/build.rs
+++ b/embassy-stm32/build.rs
@@ -764,6 +764,8 @@ fn main() {
764 #[rustfmt::skip] 764 #[rustfmt::skip]
765 let signals: HashMap<_, _> = [ 765 let signals: HashMap<_, _> = [
766 // (kind, signal) => trait 766 // (kind, signal) => trait
767 (("ucpd", "CC1"), quote!(crate::ucpd::Cc1Pin)),
768 (("ucpd", "CC2"), quote!(crate::ucpd::Cc2Pin)),
767 (("usart", "TX"), quote!(crate::usart::TxPin)), 769 (("usart", "TX"), quote!(crate::usart::TxPin)),
768 (("usart", "RX"), quote!(crate::usart::RxPin)), 770 (("usart", "RX"), quote!(crate::usart::RxPin)),
769 (("usart", "CTS"), quote!(crate::usart::CtsPin)), 771 (("usart", "CTS"), quote!(crate::usart::CtsPin)),
@@ -1102,6 +1104,8 @@ fn main() {
1102 1104
1103 let signals: HashMap<_, _> = [ 1105 let signals: HashMap<_, _> = [
1104 // (kind, signal) => trait 1106 // (kind, signal) => trait
1107 (("ucpd", "RX"), quote!(crate::ucpd::RxDma)),
1108 (("ucpd", "TX"), quote!(crate::ucpd::TxDma)),
1105 (("usart", "RX"), quote!(crate::usart::RxDma)), 1109 (("usart", "RX"), quote!(crate::usart::RxDma)),
1106 (("usart", "TX"), quote!(crate::usart::TxDma)), 1110 (("usart", "TX"), quote!(crate::usart::TxDma)),
1107 (("lpuart", "RX"), quote!(crate::usart::RxDma)), 1111 (("lpuart", "RX"), quote!(crate::usart::RxDma)),
diff --git a/embassy-stm32/src/lib.rs b/embassy-stm32/src/lib.rs
index b548a0343..361dc6f53 100644
--- a/embassy-stm32/src/lib.rs
+++ b/embassy-stm32/src/lib.rs
@@ -73,6 +73,8 @@ pub mod sai;
73pub mod sdmmc; 73pub mod sdmmc;
74#[cfg(spi)] 74#[cfg(spi)]
75pub mod spi; 75pub mod spi;
76#[cfg(ucpd)]
77pub mod ucpd;
76#[cfg(uid)] 78#[cfg(uid)]
77pub mod uid; 79pub mod uid;
78#[cfg(usart)] 80#[cfg(usart)]
diff --git a/embassy-stm32/src/ucpd.rs b/embassy-stm32/src/ucpd.rs
new file mode 100644
index 000000000..a2bac7611
--- /dev/null
+++ b/embassy-stm32/src/ucpd.rs
@@ -0,0 +1,28 @@
1//! USB Type-C/USB Power Delivery Interface (UCPD)
2
3use crate::rcc::RccPeripheral;
4
5/// UCPD instance trait.
6pub trait Instance: sealed::Instance + RccPeripheral {}
7
8pub(crate) mod sealed {
9 pub trait Instance {
10 const REGS: crate::pac::ucpd::Ucpd;
11 }
12}
13
14foreach_peripheral!(
15 (ucpd, $inst:ident) => {
16 impl sealed::Instance for crate::peripherals::$inst {
17 const REGS: crate::pac::ucpd::Ucpd = crate::pac::$inst;
18 }
19
20 impl Instance for crate::peripherals::$inst {}
21 };
22);
23
24pin_trait!(Cc1Pin, Instance);
25pin_trait!(Cc2Pin, Instance);
26
27dma_trait!(TxDma, Instance);
28dma_trait!(RxDma, Instance);