aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob McWhirter <[email protected]>2021-06-03 13:50:48 -0400
committerBob McWhirter <[email protected]>2021-06-03 13:50:48 -0400
commit2c722ec0ee8fc53e18f1b6df0b602df1aecfd59b (patch)
tree3fcf15564695d3358feb6155fdde63829abce224
parentfe47f781be10264ce1d3b533c1bdbf6508f6b361 (diff)
Migrate sdmmc to macro tables.
-rw-r--r--embassy-stm32/gen.py88
-rw-r--r--embassy-stm32/src/sdmmc/mod.rs2
-rw-r--r--embassy-stm32/src/sdmmc/v2.rs59
3 files changed, 49 insertions, 100 deletions
diff --git a/embassy-stm32/gen.py b/embassy-stm32/gen.py
index 7c128c1aa..ddd4a3b88 100644
--- a/embassy-stm32/gen.py
+++ b/embassy-stm32/gen.py
@@ -48,48 +48,6 @@ with open(output_file, 'w') as f:
48 48
49 custom_singletons = False 49 custom_singletons = False
50 50
51 # if block_mod == 'usart':
52 # f.write(f'impl_usart!({name});')
53 # for pin, funcs in af.items():
54 # if pin in pins:
55 # if (func := funcs.get(f'{name}_RX')) != None:
56 # f.write(f'impl_usart_pin!({name}, RxPin, {pin}, {func});')
57 # if (func := funcs.get(f'{name}_TX')) != None:
58 # f.write(f'impl_usart_pin!({name}, TxPin, {pin}, {func});')
59 # if (func := funcs.get(f'{name}_CTS')) != None:
60 # f.write(f'impl_usart_pin!({name}, CtsPin, {pin}, {func});')
61 # if (func := funcs.get(f'{name}_RTS')) != None:
62 # f.write(f'impl_usart_pin!({name}, RtsPin, {pin}, {func});')
63 # if (func := funcs.get(f'{name}_CK')) != None:
64 # f.write(f'impl_usart_pin!({name}, CkPin, {pin}, {func});')
65
66 # if block_mod == 'rng':
67 # for irq in chip['interrupts']:
68 # if re.search('RNG', irq):
69 # f.write(f'impl_rng!({name}, {irq});')
70
71 # if block_mod == 'spi':
72 # if 'clock' in peri:
73 # clock = peri['clock']
74 # f.write(f'impl_spi!({name}, {clock});')
75 # for pin, funcs in af.items():
76 # if pin in pins:
77 # if (func := funcs.get(f'{name}_SCK')) != None:
78 # f.write(f'impl_spi_pin!({name}, SckPin, {pin}, {func});')
79 # if (func := funcs.get(f'{name}_MOSI')) != None:
80 # f.write(f'impl_spi_pin!({name}, MosiPin, {pin}, {func});')
81 # if (func := funcs.get(f'{name}_MISO')) != None:
82 # f.write(f'impl_spi_pin!({name}, MisoPin, {pin}, {func});')
83
84 # if block_mod == 'i2c':
85 # f.write(f'impl_i2c!({name});')
86 # for pin, funcs in af.items():
87 # if pin in pins:
88 # if func := funcs.get(f'{name}_SCL'):
89 # f.write(f'impl_i2c_pin!({name}, SclPin, {pin}, {func});')
90 # if func := funcs.get(f'{name}_SDA'):
91 # f.write(f'impl_i2c_pin!({name}, SdaPin, {pin}, {func});')
92
93 if block_mod == 'gpio': 51 if block_mod == 'gpio':
94 custom_singletons = True 52 custom_singletons = True
95 port = name[4:] 53 port = name[4:]
@@ -111,53 +69,7 @@ with open(output_file, 'w') as f:
111 69
112 f.write(f'impl_dma_channel!({channel}, {dma_num}, {ch_num});') 70 f.write(f'impl_dma_channel!({channel}, {dma_num}, {ch_num});')
113 71
114 if peri['block'] == 'sdmmc_v2/SDMMC':
115 f.write(f'impl_sdmmc!({name});')
116 for pin, funcs in af.items():
117 if pin in pins:
118 if (func := funcs.get(f'{name}_CK')) != None:
119 f.write(f'impl_sdmmc_pin!({name}, CkPin, {pin}, {func});')
120 if (func := funcs.get(f'{name}_CMD')) != None:
121 f.write(f'impl_sdmmc_pin!({name}, CmdPin, {pin}, {func});')
122 if (func := funcs.get(f'{name}_D0')) != None:
123 f.write(f'impl_sdmmc_pin!({name}, D0Pin, {pin}, {func});')
124 if (func := funcs.get(f'{name}_D1')) != None:
125 f.write(f'impl_sdmmc_pin!({name}, D1Pin, {pin}, {func});')
126 if (func := funcs.get(f'{name}_D2')) != None:
127 f.write(f'impl_sdmmc_pin!({name}, D2Pin, {pin}, {func});')
128 if (func := funcs.get(f'{name}_D3')) != None:
129 f.write(f'impl_sdmmc_pin!({name}, D3Pin, {pin}, {func});')
130 if (func := funcs.get(f'{name}_D4')) != None:
131 f.write(f'impl_sdmmc_pin!({name}, D4Pin, {pin}, {func});')
132 if (func := funcs.get(f'{name}_D5')) != None:
133 f.write(f'impl_sdmmc_pin!({name}, D5Pin, {pin}, {func});')
134 if (func := funcs.get(f'{name}_D6')) != None:
135 f.write(f'impl_sdmmc_pin!({name}, D6Pin, {pin}, {func});')
136 if (func := funcs.get(f'{name}_D7')) != None:
137 f.write(f'impl_sdmmc_pin!({name}, D7Pin, {pin}, {func});')
138
139 # if block_name == 'TimGp16':
140 # if re.match('TIM[2345]$', name):
141 # f.write(f'impl_timer!({name});')
142
143 # if block_mod == 'exti':
144 # for irq in chip['interrupts']:
145 # if re.match('EXTI', irq):
146 # exti_interrupts.append(irq)
147
148 # if block_mod == 'dac':
149 # f.write(f'impl_dac!({name});')
150 # if 'dac_out1' in peri:
151 # pin = peri['dac_out1']
152 # f.write(f'impl_dac_pin!({name}, 1, {pin});')
153 # if 'dac_out2' in peri:
154 # pin = peri['dac_out2']
155 # f.write(f'impl_dac_pin!({name}, 2, {pin});')
156 #
157 if not custom_singletons: 72 if not custom_singletons:
158 singletons.append(name) 73 singletons.append(name)
159 74
160 f.write(f"embassy_extras::peripherals!({','.join(singletons)});") 75 f.write(f"embassy_extras::peripherals!({','.join(singletons)});")
161
162 # ========= exti interrupts
163 # f.write(f"impl_exti_irq!({','.join(exti_interrupts)});")
diff --git a/embassy-stm32/src/sdmmc/mod.rs b/embassy-stm32/src/sdmmc/mod.rs
index 087cb4c40..9244c22a6 100644
--- a/embassy-stm32/src/sdmmc/mod.rs
+++ b/embassy-stm32/src/sdmmc/mod.rs
@@ -1,6 +1,6 @@
1#![macro_use] 1#![macro_use]
2 2
3#[cfg_attr(sdmmc_v1, path = "v1.rs")] 3//#[cfg_attr(sdmmc_v1, path = "v1.rs")]
4#[cfg_attr(sdmmc_v2, path = "v2.rs")] 4#[cfg_attr(sdmmc_v2, path = "v2.rs")]
5mod _version; 5mod _version;
6 6
diff --git a/embassy-stm32/src/sdmmc/v2.rs b/embassy-stm32/src/sdmmc/v2.rs
index e432ca9a3..6d21091a9 100644
--- a/embassy-stm32/src/sdmmc/v2.rs
+++ b/embassy-stm32/src/sdmmc/v2.rs
@@ -15,6 +15,7 @@ use crate::interrupt::Interrupt;
15use crate::pac; 15use crate::pac;
16use crate::pac::gpio::Gpio; 16use crate::pac::gpio::Gpio;
17use crate::pac::sdmmc::Sdmmc as RegBlock; 17use crate::pac::sdmmc::Sdmmc as RegBlock;
18use crate::peripherals;
18use crate::time::Hertz; 19use crate::time::Hertz;
19 20
20/// The signalling scheme used on the SDMMC bus 21/// The signalling scheme used on the SDMMC bus
@@ -1469,12 +1470,12 @@ where
1469 } 1470 }
1470} 1471}
1471 1472
1472macro_rules! impl_sdmmc { 1473crate::pac::peripherals!(
1473 ($inst:ident) => { 1474 (sdmmc, $inst:ident) => {
1474 impl crate::sdmmc::sealed::Instance for peripherals::$inst { 1475 impl sealed::Instance for peripherals::$inst {
1475 type Interrupt = crate::interrupt::$inst; 1476 type Interrupt = crate::interrupt::$inst;
1476 1477
1477 fn inner() -> crate::sdmmc::SdmmcInner { 1478 fn inner() -> SdmmcInner {
1478 const INNER: crate::sdmmc::SdmmcInner = crate::sdmmc::SdmmcInner(crate::pac::$inst); 1479 const INNER: crate::sdmmc::SdmmcInner = crate::sdmmc::SdmmcInner(crate::pac::$inst);
1479 INNER 1480 INNER
1480 } 1481 }
@@ -1485,20 +1486,56 @@ macro_rules! impl_sdmmc {
1485 } 1486 }
1486 } 1487 }
1487 1488
1488 impl crate::sdmmc::Instance for peripherals::$inst {} 1489 impl Instance for peripherals::$inst {}
1489 }; 1490 };
1490} 1491);
1491 1492
1492macro_rules! impl_sdmmc_pin { 1493macro_rules! impl_pin {
1493 ($inst:ident, $func:ident, $pin:ident, $num:expr) => { 1494 ($inst:ident, $pin:ident, $signal:ident, $af:expr) => {
1494 impl crate::sdmmc::sealed::$func<peripherals::$inst> for peripherals::$pin { 1495 impl crate::sdmmc::sealed::$signal<peripherals::$inst> for peripherals::$pin {
1495 const AF_NUM: u8 = $num; 1496 const AF_NUM: u8 = $af;
1496 } 1497 }
1497 1498
1498 impl crate::sdmmc::$func<peripherals::$inst> for peripherals::$pin {} 1499 impl crate::sdmmc::$signal<peripherals::$inst> for peripherals::$pin {}
1499 }; 1500 };
1500} 1501}
1501 1502
1503crate::pac::peripheral_pins!(
1504 ($inst:ident, sdmmc, SDMMC, $pin:ident, CK, $af:expr) => {
1505 impl_pin!($inst, $pin, CkPin, $af);
1506 };
1507 ($inst:ident, sdmmc, SDMMC, $pin:ident, CMD, $af:expr) => {
1508 impl_pin!($inst, $pin, CmdPin, $af);
1509 };
1510 ($inst:ident, sdmmc, SDMMC, $pin:ident, D0, $af:expr) => {
1511 impl_pin!($inst, $pin, D0Pin, $af);
1512 };
1513 ($inst:ident, sdmmc, SDMMC, $pin:ident, D1, $af:expr) => {
1514 impl_pin!($inst, $pin, D1Pin, $af);
1515 };
1516 ($inst:ident, sdmmc, SDMMC, $pin:ident, D2, $af:expr) => {
1517 impl_pin!($inst, $pin, D2Pin, $af);
1518 };
1519 ($inst:ident, sdmmc, SDMMC, $pin:ident, D3, $af:expr) => {
1520 impl_pin!($inst, $pin, D3Pin, $af);
1521 };
1522 ($inst:ident, sdmmc, SDMMC, $pin:ident, D4, $af:expr) => {
1523 impl_pin!($inst, $pin, D4Pin, $af);
1524 };
1525 ($inst:ident, sdmmc, SDMMC, $pin:ident, D5, $af:expr) => {
1526 impl_pin!($inst, $pin, D5Pin, $af);
1527 };
1528 ($inst:ident, sdmmc, SDMMC, $pin:ident, D6, $af:expr) => {
1529 impl_pin!($inst, $pin, D6Pin, $af);
1530 };
1531 ($inst:ident, sdmmc, SDMMC, $pin:ident, D6, $af:expr) => {
1532 impl_pin!($inst, $pin, D7Pin, $af);
1533 };
1534 ($inst:ident, sdmmc, SDMMC, $pin:ident, D8, $af:expr) => {
1535 impl_pin!($inst, $pin, D8Pin, $af);
1536 };
1537);
1538
1502#[cfg(feature = "sdmmc-rs")] 1539#[cfg(feature = "sdmmc-rs")]
1503mod sdmmc_rs { 1540mod sdmmc_rs {
1504 use super::*; 1541 use super::*;