aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-02-13 02:22:06 +0100
committerDario Nieuwenhuis <[email protected]>2023-02-13 02:22:06 +0100
commit1e36c91bf884ed16b898bd5a79e32ee0e62471ef (patch)
tree9547e46558dcf24936073f3e126e1f479583d9f1
parent80b7c3cf69141c76ba2ae099225c2580cd430086 (diff)
stm32: fix fmc-related build failures on some F4's
-rw-r--r--embassy-stm32/src/fmc.rs (renamed from embassy-stm32/src/fmc/mod.rs)130
-rw-r--r--embassy-stm32/src/fmc/pins.rs118
2 files changed, 122 insertions, 126 deletions
diff --git a/embassy-stm32/src/fmc/mod.rs b/embassy-stm32/src/fmc.rs
index 5adfa0d48..b9129cb51 100644
--- a/embassy-stm32/src/fmc/mod.rs
+++ b/embassy-stm32/src/fmc.rs
@@ -6,9 +6,6 @@ use crate::gpio::sealed::AFType;
6use crate::gpio::{Pull, Speed}; 6use crate::gpio::{Pull, Speed};
7use crate::Peripheral; 7use crate::Peripheral;
8 8
9mod pins;
10pub use pins::*;
11
12pub struct Fmc<'d, T: Instance> { 9pub struct Fmc<'d, T: Instance> {
13 peri: PhantomData<&'d mut T>, 10 peri: PhantomData<&'d mut T>,
14} 11}
@@ -19,7 +16,7 @@ unsafe impl<'d, T> stm32_fmc::FmcPeripheral for Fmc<'d, T>
19where 16where
20 T: Instance, 17 T: Instance,
21{ 18{
22 const REGISTERS: *const () = crate::pac::FMC.0 as *const _; 19 const REGISTERS: *const () = T::REGS.0 as *const _;
23 20
24 fn enable(&mut self) { 21 fn enable(&mut self) {
25 <T as crate::rcc::sealed::RccPeripheral>::enable(); 22 <T as crate::rcc::sealed::RccPeripheral>::enable();
@@ -32,7 +29,7 @@ where
32 // This is a "not" because it is expected that all future versions have this bit 29 // This is a "not" because it is expected that all future versions have this bit
33 #[cfg(not(any(fmc_v1x3, fmc_v2x1, fsmc_v1x0, fsmc_v1x3, fsmc_v2x3, fsmc_v3x1)))] 30 #[cfg(not(any(fmc_v1x3, fmc_v2x1, fsmc_v1x0, fsmc_v1x3, fsmc_v2x3, fsmc_v3x1)))]
34 unsafe { 31 unsafe {
35 T::regs().bcr1().modify(|r| r.set_fmcen(true)) 32 T::REGS.bcr1().modify(|r| r.set_fmcen(true))
36 }; 33 };
37 } 34 }
38 35
@@ -150,13 +147,130 @@ impl<'d, T: Instance> Fmc<'d, T> {
150 )); 147 ));
151} 148}
152 149
150pub(crate) mod sealed {
151 pub trait Instance: crate::rcc::sealed::RccPeripheral {
152 const REGS: crate::pac::fmc::Fmc;
153 }
154}
155
156pub trait Instance: sealed::Instance + 'static {}
157
153foreach_peripheral!( 158foreach_peripheral!(
154 (fmc, $inst:ident) => { 159 (fmc, $inst:ident) => {
155 impl crate::fmc::sealed::Instance for crate::peripherals::$inst { 160 impl crate::fmc::sealed::Instance for crate::peripherals::$inst {
156 fn regs() -> stm32_metapac::fmc::Fmc { 161 const REGS: crate::pac::fmc::Fmc = crate::pac::$inst;
157 crate::pac::$inst
158 }
159 } 162 }
160 impl crate::fmc::Instance for crate::peripherals::$inst {} 163 impl crate::fmc::Instance for crate::peripherals::$inst {}
161 }; 164 };
162); 165);
166
167pin_trait!(SDNWEPin, Instance);
168pin_trait!(SDNCASPin, Instance);
169pin_trait!(SDNRASPin, Instance);
170
171pin_trait!(SDNE0Pin, Instance);
172pin_trait!(SDNE1Pin, Instance);
173
174pin_trait!(SDCKE0Pin, Instance);
175pin_trait!(SDCKE1Pin, Instance);
176
177pin_trait!(SDCLKPin, Instance);
178
179pin_trait!(NBL0Pin, Instance);
180pin_trait!(NBL1Pin, Instance);
181pin_trait!(NBL2Pin, Instance);
182pin_trait!(NBL3Pin, Instance);
183
184pin_trait!(INTPin, Instance);
185pin_trait!(NLPin, Instance);
186pin_trait!(NWaitPin, Instance);
187
188pin_trait!(NE1Pin, Instance);
189pin_trait!(NE2Pin, Instance);
190pin_trait!(NE3Pin, Instance);
191pin_trait!(NE4Pin, Instance);
192
193pin_trait!(NCEPin, Instance);
194pin_trait!(NOEPin, Instance);
195pin_trait!(NWEPin, Instance);
196pin_trait!(ClkPin, Instance);
197
198pin_trait!(BA0Pin, Instance);
199pin_trait!(BA1Pin, Instance);
200
201pin_trait!(D0Pin, Instance);
202pin_trait!(D1Pin, Instance);
203pin_trait!(D2Pin, Instance);
204pin_trait!(D3Pin, Instance);
205pin_trait!(D4Pin, Instance);
206pin_trait!(D5Pin, Instance);
207pin_trait!(D6Pin, Instance);
208pin_trait!(D7Pin, Instance);
209pin_trait!(D8Pin, Instance);
210pin_trait!(D9Pin, Instance);
211pin_trait!(D10Pin, Instance);
212pin_trait!(D11Pin, Instance);
213pin_trait!(D12Pin, Instance);
214pin_trait!(D13Pin, Instance);
215pin_trait!(D14Pin, Instance);
216pin_trait!(D15Pin, Instance);
217pin_trait!(D16Pin, Instance);
218pin_trait!(D17Pin, Instance);
219pin_trait!(D18Pin, Instance);
220pin_trait!(D19Pin, Instance);
221pin_trait!(D20Pin, Instance);
222pin_trait!(D21Pin, Instance);
223pin_trait!(D22Pin, Instance);
224pin_trait!(D23Pin, Instance);
225pin_trait!(D24Pin, Instance);
226pin_trait!(D25Pin, Instance);
227pin_trait!(D26Pin, Instance);
228pin_trait!(D27Pin, Instance);
229pin_trait!(D28Pin, Instance);
230pin_trait!(D29Pin, Instance);
231pin_trait!(D30Pin, Instance);
232pin_trait!(D31Pin, Instance);
233
234pin_trait!(DA0Pin, Instance);
235pin_trait!(DA1Pin, Instance);
236pin_trait!(DA2Pin, Instance);
237pin_trait!(DA3Pin, Instance);
238pin_trait!(DA4Pin, Instance);
239pin_trait!(DA5Pin, Instance);
240pin_trait!(DA6Pin, Instance);
241pin_trait!(DA7Pin, Instance);
242pin_trait!(DA8Pin, Instance);
243pin_trait!(DA9Pin, Instance);
244pin_trait!(DA10Pin, Instance);
245pin_trait!(DA11Pin, Instance);
246pin_trait!(DA12Pin, Instance);
247pin_trait!(DA13Pin, Instance);
248pin_trait!(DA14Pin, Instance);
249pin_trait!(DA15Pin, Instance);
250
251pin_trait!(A0Pin, Instance);
252pin_trait!(A1Pin, Instance);
253pin_trait!(A2Pin, Instance);
254pin_trait!(A3Pin, Instance);
255pin_trait!(A4Pin, Instance);
256pin_trait!(A5Pin, Instance);
257pin_trait!(A6Pin, Instance);
258pin_trait!(A7Pin, Instance);
259pin_trait!(A8Pin, Instance);
260pin_trait!(A9Pin, Instance);
261pin_trait!(A10Pin, Instance);
262pin_trait!(A11Pin, Instance);
263pin_trait!(A12Pin, Instance);
264pin_trait!(A13Pin, Instance);
265pin_trait!(A14Pin, Instance);
266pin_trait!(A15Pin, Instance);
267pin_trait!(A16Pin, Instance);
268pin_trait!(A17Pin, Instance);
269pin_trait!(A18Pin, Instance);
270pin_trait!(A19Pin, Instance);
271pin_trait!(A20Pin, Instance);
272pin_trait!(A21Pin, Instance);
273pin_trait!(A22Pin, Instance);
274pin_trait!(A23Pin, Instance);
275pin_trait!(A24Pin, Instance);
276pin_trait!(A25Pin, Instance);
diff --git a/embassy-stm32/src/fmc/pins.rs b/embassy-stm32/src/fmc/pins.rs
deleted file mode 100644
index 5062e52ae..000000000
--- a/embassy-stm32/src/fmc/pins.rs
+++ /dev/null
@@ -1,118 +0,0 @@
1pub(crate) mod sealed {
2 pub trait Instance: crate::rcc::sealed::RccPeripheral {
3 fn regs() -> crate::pac::fmc::Fmc;
4 }
5}
6
7pub trait Instance: sealed::Instance + 'static {}
8
9pin_trait!(SDNWEPin, Instance);
10pin_trait!(SDNCASPin, Instance);
11pin_trait!(SDNRASPin, Instance);
12
13pin_trait!(SDNE0Pin, Instance);
14pin_trait!(SDNE1Pin, Instance);
15
16pin_trait!(SDCKE0Pin, Instance);
17pin_trait!(SDCKE1Pin, Instance);
18
19pin_trait!(SDCLKPin, Instance);
20
21pin_trait!(NBL0Pin, Instance);
22pin_trait!(NBL1Pin, Instance);
23pin_trait!(NBL2Pin, Instance);
24pin_trait!(NBL3Pin, Instance);
25
26pin_trait!(INTPin, Instance);
27pin_trait!(NLPin, Instance);
28pin_trait!(NWaitPin, Instance);
29
30pin_trait!(NE1Pin, Instance);
31pin_trait!(NE2Pin, Instance);
32pin_trait!(NE3Pin, Instance);
33pin_trait!(NE4Pin, Instance);
34
35pin_trait!(NCEPin, Instance);
36pin_trait!(NOEPin, Instance);
37pin_trait!(NWEPin, Instance);
38pin_trait!(ClkPin, Instance);
39
40pin_trait!(BA0Pin, Instance);
41pin_trait!(BA1Pin, Instance);
42
43pin_trait!(D0Pin, Instance);
44pin_trait!(D1Pin, Instance);
45pin_trait!(D2Pin, Instance);
46pin_trait!(D3Pin, Instance);
47pin_trait!(D4Pin, Instance);
48pin_trait!(D5Pin, Instance);
49pin_trait!(D6Pin, Instance);
50pin_trait!(D7Pin, Instance);
51pin_trait!(D8Pin, Instance);
52pin_trait!(D9Pin, Instance);
53pin_trait!(D10Pin, Instance);
54pin_trait!(D11Pin, Instance);
55pin_trait!(D12Pin, Instance);
56pin_trait!(D13Pin, Instance);
57pin_trait!(D14Pin, Instance);
58pin_trait!(D15Pin, Instance);
59pin_trait!(D16Pin, Instance);
60pin_trait!(D17Pin, Instance);
61pin_trait!(D18Pin, Instance);
62pin_trait!(D19Pin, Instance);
63pin_trait!(D20Pin, Instance);
64pin_trait!(D21Pin, Instance);
65pin_trait!(D22Pin, Instance);
66pin_trait!(D23Pin, Instance);
67pin_trait!(D24Pin, Instance);
68pin_trait!(D25Pin, Instance);
69pin_trait!(D26Pin, Instance);
70pin_trait!(D27Pin, Instance);
71pin_trait!(D28Pin, Instance);
72pin_trait!(D29Pin, Instance);
73pin_trait!(D30Pin, Instance);
74pin_trait!(D31Pin, Instance);
75
76pin_trait!(DA0Pin, Instance);
77pin_trait!(DA1Pin, Instance);
78pin_trait!(DA2Pin, Instance);
79pin_trait!(DA3Pin, Instance);
80pin_trait!(DA4Pin, Instance);
81pin_trait!(DA5Pin, Instance);
82pin_trait!(DA6Pin, Instance);
83pin_trait!(DA7Pin, Instance);
84pin_trait!(DA8Pin, Instance);
85pin_trait!(DA9Pin, Instance);
86pin_trait!(DA10Pin, Instance);
87pin_trait!(DA11Pin, Instance);
88pin_trait!(DA12Pin, Instance);
89pin_trait!(DA13Pin, Instance);
90pin_trait!(DA14Pin, Instance);
91pin_trait!(DA15Pin, Instance);
92
93pin_trait!(A0Pin, Instance);
94pin_trait!(A1Pin, Instance);
95pin_trait!(A2Pin, Instance);
96pin_trait!(A3Pin, Instance);
97pin_trait!(A4Pin, Instance);
98pin_trait!(A5Pin, Instance);
99pin_trait!(A6Pin, Instance);
100pin_trait!(A7Pin, Instance);
101pin_trait!(A8Pin, Instance);
102pin_trait!(A9Pin, Instance);
103pin_trait!(A10Pin, Instance);
104pin_trait!(A11Pin, Instance);
105pin_trait!(A12Pin, Instance);
106pin_trait!(A13Pin, Instance);
107pin_trait!(A14Pin, Instance);
108pin_trait!(A15Pin, Instance);
109pin_trait!(A16Pin, Instance);
110pin_trait!(A17Pin, Instance);
111pin_trait!(A18Pin, Instance);
112pin_trait!(A19Pin, Instance);
113pin_trait!(A20Pin, Instance);
114pin_trait!(A21Pin, Instance);
115pin_trait!(A22Pin, Instance);
116pin_trait!(A23Pin, Instance);
117pin_trait!(A24Pin, Instance);
118pin_trait!(A25Pin, Instance);