aboutsummaryrefslogtreecommitdiff
path: root/embassy-mspm0
diff options
context:
space:
mode:
authori509VCB <[email protected]>2025-12-13 21:23:22 -0600
committeri509VCB <[email protected]>2025-12-14 00:37:30 -0600
commit5bef2eab2352113c2ab9a97be72d72d6df46045d (patch)
tree40c43682d2c8e0ec6f714b8b0a20b4ec2e4a33a0 /embassy-mspm0
parent574868282518ceb81bddcb03bee38fc5b6208a5a (diff)
mspm0: add MSPM0G518x support and new packages for others
G518x is the first MSPM0 part with a USB, I2S and NPU peripheral. There is also a new TIMB peripheral (no PWM, so it is perfect for a time driver). Unfortunately it also introduces UNICOMM which is a shared peripheral which can be in UART/I2C/SPI modes. This means that the current UART and I2C drivers need some adjustment to work with the new UNICOMM parts (which is the future).
Diffstat (limited to 'embassy-mspm0')
-rw-r--r--embassy-mspm0/CHANGELOG.md3
-rw-r--r--embassy-mspm0/Cargo.toml145
-rw-r--r--embassy-mspm0/build.rs52
-rw-r--r--embassy-mspm0/src/gpio.rs4
-rw-r--r--embassy-mspm0/src/i2c_target.rs9
-rw-r--r--embassy-mspm0/src/lib.rs16
-rw-r--r--embassy-mspm0/src/macros.rs1
-rw-r--r--embassy-mspm0/src/time_driver.rs4
8 files changed, 155 insertions, 79 deletions
diff --git a/embassy-mspm0/CHANGELOG.md b/embassy-mspm0/CHANGELOG.md
index 6972a8472..19275f35a 100644
--- a/embassy-mspm0/CHANGELOG.md
+++ b/embassy-mspm0/CHANGELOG.md
@@ -19,4 +19,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19- feat: Add i2c target implementation (#4605) 19- feat: Add i2c target implementation (#4605)
20- fix: group irq handlers must check for NO_INTR (#4785) 20- fix: group irq handlers must check for NO_INTR (#4785)
21- feat: Add read_reset_cause function 21- feat: Add read_reset_cause function
22- feat: Add module Mathacl & example for mspm0g3507 (#4897) \ No newline at end of file 22- feat: Add module Mathacl & example for mspm0g3507 (#4897)
23- feat: Add MSPM0G5187 supportt
diff --git a/embassy-mspm0/Cargo.toml b/embassy-mspm0/Cargo.toml
index 254e0209b..cf2346328 100644
--- a/embassy-mspm0/Cargo.toml
+++ b/embassy-mspm0/Cargo.toml
@@ -73,7 +73,7 @@ critical-section = "1.2.0"
73micromath = "2.0.0" 73micromath = "2.0.0"
74 74
75# mspm0-metapac = { version = "" } 75# mspm0-metapac = { version = "" }
76mspm0-metapac = { git = "https://github.com/mspm0-rs/mspm0-data-generated/", tag = "mspm0-data-f21b04e9de074af4965bf67ec3646cb9fe1b9852" } 76mspm0-metapac = { git = "https://github.com/mspm0-rs/mspm0-data-generated/", tag = "mspm0-data-e91edd86813aa94cbb6737d34e4f1d22b8487cb6" }
77 77
78[build-dependencies] 78[build-dependencies]
79proc-macro2 = "1.0.94" 79proc-macro2 = "1.0.94"
@@ -81,7 +81,7 @@ quote = "1.0.40"
81cfg_aliases = "0.2.1" 81cfg_aliases = "0.2.1"
82 82
83# mspm0-metapac = { version = "", default-features = false, features = ["metadata"] } 83# mspm0-metapac = { version = "", default-features = false, features = ["metadata"] }
84mspm0-metapac = { git = "https://github.com/mspm0-rs/mspm0-data-generated/", tag = "mspm0-data-f21b04e9de074af4965bf67ec3646cb9fe1b9852", default-features = false, features = ["metadata"] } 84mspm0-metapac = { git = "https://github.com/mspm0-rs/mspm0-data-generated/", tag = "mspm0-data-e91edd86813aa94cbb6737d34e4f1d22b8487cb6", default-features = false, features = ["metadata"] }
85 85
86[features] 86[features]
87default = ["rt"] 87default = ["rt"]
@@ -153,15 +153,14 @@ time-driver-tima1 = ["_time-driver"]
153#! 153#!
154#! **Important:** Do not forget to adapt the target chip in your toolchain, 154#! **Important:** Do not forget to adapt the target chip in your toolchain,
155#! e.g. in `.cargo/config.toml`. 155#! e.g. in `.cargo/config.toml`.
156
157mspm0c1103dgs20 = ["mspm0-metapac/mspm0c1103dgs20"] 156mspm0c1103dgs20 = ["mspm0-metapac/mspm0c1103dgs20"]
158mspm0c1103dsg = ["mspm0-metapac/mspm0c1103dsg"]
159mspm0c1103dyy = ["mspm0-metapac/mspm0c1103dyy"]
160mspm0c1103ruk = ["mspm0-metapac/mspm0c1103ruk"] 157mspm0c1103ruk = ["mspm0-metapac/mspm0c1103ruk"]
158mspm0c1103dyy = ["mspm0-metapac/mspm0c1103dyy"]
159mspm0c1103dsg = ["mspm0-metapac/mspm0c1103dsg"]
161mspm0c1104dgs20 = ["mspm0-metapac/mspm0c1104dgs20"] 160mspm0c1104dgs20 = ["mspm0-metapac/mspm0c1104dgs20"]
162mspm0c1104dsg = ["mspm0-metapac/mspm0c1104dsg"]
163mspm0c1104dyy = ["mspm0-metapac/mspm0c1104dyy"]
164mspm0c1104ruk = ["mspm0-metapac/mspm0c1104ruk"] 161mspm0c1104ruk = ["mspm0-metapac/mspm0c1104ruk"]
162mspm0c1104dyy = ["mspm0-metapac/mspm0c1104dyy"]
163mspm0c1104dsg = ["mspm0-metapac/mspm0c1104dsg"]
165mspm0c1104ycj = ["mspm0-metapac/mspm0c1104ycj"] 164mspm0c1104ycj = ["mspm0-metapac/mspm0c1104ycj"]
166mspm0c1105pt = ["mspm0-metapac/mspm0c1105pt"] 165mspm0c1105pt = ["mspm0-metapac/mspm0c1105pt"]
167mspm0c1105rgz = ["mspm0-metapac/mspm0c1105rgz"] 166mspm0c1105rgz = ["mspm0-metapac/mspm0c1105rgz"]
@@ -181,43 +180,54 @@ mspm0c1106rge = ["mspm0-metapac/mspm0c1106rge"]
181mspm0c1106dgs20 = ["mspm0-metapac/mspm0c1106dgs20"] 180mspm0c1106dgs20 = ["mspm0-metapac/mspm0c1106dgs20"]
182mspm0c1106ruk = ["mspm0-metapac/mspm0c1106ruk"] 181mspm0c1106ruk = ["mspm0-metapac/mspm0c1106ruk"]
183mspm0c1106zcm = ["mspm0-metapac/mspm0c1106zcm"] 182mspm0c1106zcm = ["mspm0-metapac/mspm0c1106zcm"]
184mspm0g1105dgs28 = ["mspm0-metapac/mspm0g1105dgs28"]
185mspm0g1105pm = ["mspm0-metapac/mspm0g1105pm"]
186mspm0g1105pt = ["mspm0-metapac/mspm0g1105pt"]
187mspm0g1105rge = ["mspm0-metapac/mspm0g1105rge"] 183mspm0g1105rge = ["mspm0-metapac/mspm0g1105rge"]
188mspm0g1105rgz = ["mspm0-metapac/mspm0g1105rgz"] 184mspm0g1105dgs28 = ["mspm0-metapac/mspm0g1105dgs28"]
189mspm0g1105rhb = ["mspm0-metapac/mspm0g1105rhb"] 185mspm0g1105rhb = ["mspm0-metapac/mspm0g1105rhb"]
190mspm0g1106dgs28 = ["mspm0-metapac/mspm0g1106dgs28"] 186mspm0g1105rgz = ["mspm0-metapac/mspm0g1105rgz"]
191mspm0g1106pm = ["mspm0-metapac/mspm0g1106pm"] 187mspm0g1105pt = ["mspm0-metapac/mspm0g1105pt"]
192mspm0g1106pt = ["mspm0-metapac/mspm0g1106pt"] 188mspm0g1105pm = ["mspm0-metapac/mspm0g1105pm"]
193mspm0g1106rge = ["mspm0-metapac/mspm0g1106rge"] 189mspm0g1106rge = ["mspm0-metapac/mspm0g1106rge"]
194mspm0g1106rgz = ["mspm0-metapac/mspm0g1106rgz"] 190mspm0g1106dgs28 = ["mspm0-metapac/mspm0g1106dgs28"]
195mspm0g1106rhb = ["mspm0-metapac/mspm0g1106rhb"] 191mspm0g1106rhb = ["mspm0-metapac/mspm0g1106rhb"]
196mspm0g1107dgs28 = ["mspm0-metapac/mspm0g1107dgs28"] 192mspm0g1106rgz = ["mspm0-metapac/mspm0g1106rgz"]
197mspm0g1107pm = ["mspm0-metapac/mspm0g1107pm"] 193mspm0g1106pt = ["mspm0-metapac/mspm0g1106pt"]
198mspm0g1107pt = ["mspm0-metapac/mspm0g1107pt"] 194mspm0g1106pm = ["mspm0-metapac/mspm0g1106pm"]
199mspm0g1107rge = ["mspm0-metapac/mspm0g1107rge"] 195mspm0g1107rge = ["mspm0-metapac/mspm0g1107rge"]
200mspm0g1107rgz = ["mspm0-metapac/mspm0g1107rgz"] 196mspm0g1107dgs28 = ["mspm0-metapac/mspm0g1107dgs28"]
201mspm0g1107rhb = ["mspm0-metapac/mspm0g1107rhb"] 197mspm0g1107rhb = ["mspm0-metapac/mspm0g1107rhb"]
198mspm0g1107rgz = ["mspm0-metapac/mspm0g1107rgz"]
199mspm0g1107pt = ["mspm0-metapac/mspm0g1107pt"]
200mspm0g1107pm = ["mspm0-metapac/mspm0g1107pm"]
202mspm0g1107ycj = ["mspm0-metapac/mspm0g1107ycj"] 201mspm0g1107ycj = ["mspm0-metapac/mspm0g1107ycj"]
203mspm0g1505pm = ["mspm0-metapac/mspm0g1505pm"]
204mspm0g1505pt = ["mspm0-metapac/mspm0g1505pt"]
205mspm0g1505rge = ["mspm0-metapac/mspm0g1505rge"] 202mspm0g1505rge = ["mspm0-metapac/mspm0g1505rge"]
206mspm0g1505rgz = ["mspm0-metapac/mspm0g1505rgz"]
207mspm0g1505rhb = ["mspm0-metapac/mspm0g1505rhb"] 203mspm0g1505rhb = ["mspm0-metapac/mspm0g1505rhb"]
208mspm0g1506pm = ["mspm0-metapac/mspm0g1506pm"] 204mspm0g1505rgz = ["mspm0-metapac/mspm0g1505rgz"]
209mspm0g1506pt = ["mspm0-metapac/mspm0g1506pt"] 205mspm0g1505pt = ["mspm0-metapac/mspm0g1505pt"]
206mspm0g1505pm = ["mspm0-metapac/mspm0g1505pm"]
210mspm0g1506rge = ["mspm0-metapac/mspm0g1506rge"] 207mspm0g1506rge = ["mspm0-metapac/mspm0g1506rge"]
211mspm0g1506rgz = ["mspm0-metapac/mspm0g1506rgz"]
212mspm0g1506rhb = ["mspm0-metapac/mspm0g1506rhb"] 208mspm0g1506rhb = ["mspm0-metapac/mspm0g1506rhb"]
213mspm0g1507pm = ["mspm0-metapac/mspm0g1507pm"] 209mspm0g1506rgz = ["mspm0-metapac/mspm0g1506rgz"]
214mspm0g1507pt = ["mspm0-metapac/mspm0g1507pt"] 210mspm0g1506pt = ["mspm0-metapac/mspm0g1506pt"]
211mspm0g1506pm = ["mspm0-metapac/mspm0g1506pm"]
215mspm0g1507rge = ["mspm0-metapac/mspm0g1507rge"] 212mspm0g1507rge = ["mspm0-metapac/mspm0g1507rge"]
216mspm0g1507rgz = ["mspm0-metapac/mspm0g1507rgz"]
217mspm0g1507rhb = ["mspm0-metapac/mspm0g1507rhb"] 213mspm0g1507rhb = ["mspm0-metapac/mspm0g1507rhb"]
214mspm0g1507rgz = ["mspm0-metapac/mspm0g1507rgz"]
215mspm0g1507pt = ["mspm0-metapac/mspm0g1507pt"]
216mspm0g1507pm = ["mspm0-metapac/mspm0g1507pm"]
218mspm0g1507ycj = ["mspm0-metapac/mspm0g1507ycj"] 217mspm0g1507ycj = ["mspm0-metapac/mspm0g1507ycj"]
219mspm0g1519rgz = ["mspm0-metapac/mspm0g1519rgz"] 218mspm0g1518rhb = ["mspm0-metapac/mspm0g1518rhb"]
219mspm0g1518rgz = ["mspm0-metapac/mspm0g1518rgz"]
220mspm0g1518pt = ["mspm0-metapac/mspm0g1518pt"]
221mspm0g1518pm = ["mspm0-metapac/mspm0g1518pm"]
222mspm0g1518pz = ["mspm0-metapac/mspm0g1518pz"]
223mspm0g1518pn = ["mspm0-metapac/mspm0g1518pn"]
224mspm0g1518zaw = ["mspm0-metapac/mspm0g1518zaw"]
220mspm0g1519rhb = ["mspm0-metapac/mspm0g1519rhb"] 225mspm0g1519rhb = ["mspm0-metapac/mspm0g1519rhb"]
226mspm0g1519rgz = ["mspm0-metapac/mspm0g1519rgz"]
227mspm0g1519pt = ["mspm0-metapac/mspm0g1519pt"]
228mspm0g1519pm = ["mspm0-metapac/mspm0g1519pm"]
229mspm0g1519pz = ["mspm0-metapac/mspm0g1519pz"]
230mspm0g1519pn = ["mspm0-metapac/mspm0g1519pn"]
221mspm0g3105dgs20 = ["mspm0-metapac/mspm0g3105dgs20"] 231mspm0g3105dgs20 = ["mspm0-metapac/mspm0g3105dgs20"]
222mspm0g3105dgs28 = ["mspm0-metapac/mspm0g3105dgs28"] 232mspm0g3105dgs28 = ["mspm0-metapac/mspm0g3105dgs28"]
223mspm0g3105rhb = ["mspm0-metapac/mspm0g3105rhb"] 233mspm0g3105rhb = ["mspm0-metapac/mspm0g3105rhb"]
@@ -228,77 +238,92 @@ mspm0g3107dgs20 = ["mspm0-metapac/mspm0g3107dgs20"]
228mspm0g3107dgs28 = ["mspm0-metapac/mspm0g3107dgs28"] 238mspm0g3107dgs28 = ["mspm0-metapac/mspm0g3107dgs28"]
229mspm0g3107rhb = ["mspm0-metapac/mspm0g3107rhb"] 239mspm0g3107rhb = ["mspm0-metapac/mspm0g3107rhb"]
230mspm0g3505dgs28 = ["mspm0-metapac/mspm0g3505dgs28"] 240mspm0g3505dgs28 = ["mspm0-metapac/mspm0g3505dgs28"]
231mspm0g3505pm = ["mspm0-metapac/mspm0g3505pm"]
232mspm0g3505pt = ["mspm0-metapac/mspm0g3505pt"]
233mspm0g3505rgz = ["mspm0-metapac/mspm0g3505rgz"]
234mspm0g3505rhb = ["mspm0-metapac/mspm0g3505rhb"] 241mspm0g3505rhb = ["mspm0-metapac/mspm0g3505rhb"]
242mspm0g3505rgz = ["mspm0-metapac/mspm0g3505rgz"]
243mspm0g3505pt = ["mspm0-metapac/mspm0g3505pt"]
244mspm0g3505pm = ["mspm0-metapac/mspm0g3505pm"]
235mspm0g3506dgs28 = ["mspm0-metapac/mspm0g3506dgs28"] 245mspm0g3506dgs28 = ["mspm0-metapac/mspm0g3506dgs28"]
236mspm0g3506pm = ["mspm0-metapac/mspm0g3506pm"]
237mspm0g3506pt = ["mspm0-metapac/mspm0g3506pt"]
238mspm0g3506rgz = ["mspm0-metapac/mspm0g3506rgz"]
239mspm0g3506rhb = ["mspm0-metapac/mspm0g3506rhb"] 246mspm0g3506rhb = ["mspm0-metapac/mspm0g3506rhb"]
247mspm0g3506rgz = ["mspm0-metapac/mspm0g3506rgz"]
248mspm0g3506pt = ["mspm0-metapac/mspm0g3506pt"]
249mspm0g3506pm = ["mspm0-metapac/mspm0g3506pm"]
240mspm0g3507dgs28 = ["mspm0-metapac/mspm0g3507dgs28"] 250mspm0g3507dgs28 = ["mspm0-metapac/mspm0g3507dgs28"]
241mspm0g3507pm = ["mspm0-metapac/mspm0g3507pm"]
242mspm0g3507pt = ["mspm0-metapac/mspm0g3507pt"]
243mspm0g3507rgz = ["mspm0-metapac/mspm0g3507rgz"]
244mspm0g3507rhb = ["mspm0-metapac/mspm0g3507rhb"] 251mspm0g3507rhb = ["mspm0-metapac/mspm0g3507rhb"]
252mspm0g3507rgz = ["mspm0-metapac/mspm0g3507rgz"]
253mspm0g3507pt = ["mspm0-metapac/mspm0g3507pt"]
254mspm0g3507pm = ["mspm0-metapac/mspm0g3507pm"]
255mspm0g3518rhb = ["mspm0-metapac/mspm0g3518rhb"]
256mspm0g3518rgz = ["mspm0-metapac/mspm0g3518rgz"]
257mspm0g3518pt = ["mspm0-metapac/mspm0g3518pt"]
258mspm0g3518pm = ["mspm0-metapac/mspm0g3518pm"]
259mspm0g3518pz = ["mspm0-metapac/mspm0g3518pz"]
260mspm0g3518pn = ["mspm0-metapac/mspm0g3518pn"]
261mspm0g3519rhb = ["mspm0-metapac/mspm0g3519rhb"]
262mspm0g3519rgz = ["mspm0-metapac/mspm0g3519rgz"]
263mspm0g3519pt = ["mspm0-metapac/mspm0g3519pt"]
245mspm0g3519pm = ["mspm0-metapac/mspm0g3519pm"] 264mspm0g3519pm = ["mspm0-metapac/mspm0g3519pm"]
246mspm0g3519pn = ["mspm0-metapac/mspm0g3519pn"]
247mspm0g3519pz = ["mspm0-metapac/mspm0g3519pz"] 265mspm0g3519pz = ["mspm0-metapac/mspm0g3519pz"]
248mspm0g3519rgz = ["mspm0-metapac/mspm0g3519rgz"] 266mspm0g3519pn = ["mspm0-metapac/mspm0g3519pn"]
249mspm0g3519rhb = ["mspm0-metapac/mspm0g3519rhb"] 267mspm0g3519zaw = ["mspm0-metapac/mspm0g3519zaw"]
268mspm0g5187rhb = ["mspm0-metapac/mspm0g5187rhb"]
269mspm0g5187rgz = ["mspm0-metapac/mspm0g5187rgz"]
270mspm0g5187pt = ["mspm0-metapac/mspm0g5187pt"]
271mspm0g5187pm = ["mspm0-metapac/mspm0g5187pm"]
272mspm0g5187ruy = ["mspm0-metapac/mspm0g5187ruy"]
273mspm0g5187ycj = ["mspm0-metapac/mspm0g5187ycj"]
274mspm0g5187rge = ["mspm0-metapac/mspm0g5187rge"]
250mspm0h3216pt = ["mspm0-metapac/mspm0h3216pt"] 275mspm0h3216pt = ["mspm0-metapac/mspm0h3216pt"]
251mspm0l1105dgs20 = ["mspm0-metapac/mspm0l1105dgs20"] 276mspm0l1105dgs20 = ["mspm0-metapac/mspm0l1105dgs20"]
252mspm0l1105dgs28 = ["mspm0-metapac/mspm0l1105dgs28"] 277mspm0l1105dgs28 = ["mspm0-metapac/mspm0l1105dgs28"]
253mspm0l1105dyy = ["mspm0-metapac/mspm0l1105dyy"]
254mspm0l1105rge = ["mspm0-metapac/mspm0l1105rge"] 278mspm0l1105rge = ["mspm0-metapac/mspm0l1105rge"]
255mspm0l1105rtr = ["mspm0-metapac/mspm0l1105rtr"] 279mspm0l1105rtr = ["mspm0-metapac/mspm0l1105rtr"]
280mspm0l1105dyy = ["mspm0-metapac/mspm0l1105dyy"]
281mspm0l1106rhb = ["mspm0-metapac/mspm0l1106rhb"]
256mspm0l1106dgs20 = ["mspm0-metapac/mspm0l1106dgs20"] 282mspm0l1106dgs20 = ["mspm0-metapac/mspm0l1106dgs20"]
257mspm0l1106dgs28 = ["mspm0-metapac/mspm0l1106dgs28"] 283mspm0l1106dgs28 = ["mspm0-metapac/mspm0l1106dgs28"]
258mspm0l1106dyy = ["mspm0-metapac/mspm0l1106dyy"]
259mspm0l1106rge = ["mspm0-metapac/mspm0l1106rge"] 284mspm0l1106rge = ["mspm0-metapac/mspm0l1106rge"]
260mspm0l1106rhb = ["mspm0-metapac/mspm0l1106rhb"]
261mspm0l1106rtr = ["mspm0-metapac/mspm0l1106rtr"] 285mspm0l1106rtr = ["mspm0-metapac/mspm0l1106rtr"]
262mspm0l1227pm = ["mspm0-metapac/mspm0l1227pm"] 286mspm0l1106dyy = ["mspm0-metapac/mspm0l1106dyy"]
287mspm0l1227rhb = ["mspm0-metapac/mspm0l1227rhb"]
263mspm0l1227pn = ["mspm0-metapac/mspm0l1227pn"] 288mspm0l1227pn = ["mspm0-metapac/mspm0l1227pn"]
289mspm0l1227rgz = ["mspm0-metapac/mspm0l1227rgz"]
264mspm0l1227pt = ["mspm0-metapac/mspm0l1227pt"] 290mspm0l1227pt = ["mspm0-metapac/mspm0l1227pt"]
291mspm0l1227pm = ["mspm0-metapac/mspm0l1227pm"]
265mspm0l1227rge = ["mspm0-metapac/mspm0l1227rge"] 292mspm0l1227rge = ["mspm0-metapac/mspm0l1227rge"]
266mspm0l1227rgz = ["mspm0-metapac/mspm0l1227rgz"] 293mspm0l1228rhb = ["mspm0-metapac/mspm0l1228rhb"]
267mspm0l1227rhb = ["mspm0-metapac/mspm0l1227rhb"]
268mspm0l1228pm = ["mspm0-metapac/mspm0l1228pm"]
269mspm0l1228pn = ["mspm0-metapac/mspm0l1228pn"] 294mspm0l1228pn = ["mspm0-metapac/mspm0l1228pn"]
295mspm0l1228rgz = ["mspm0-metapac/mspm0l1228rgz"]
270mspm0l1228pt = ["mspm0-metapac/mspm0l1228pt"] 296mspm0l1228pt = ["mspm0-metapac/mspm0l1228pt"]
297mspm0l1228pm = ["mspm0-metapac/mspm0l1228pm"]
271mspm0l1228rge = ["mspm0-metapac/mspm0l1228rge"] 298mspm0l1228rge = ["mspm0-metapac/mspm0l1228rge"]
272mspm0l1228rgz = ["mspm0-metapac/mspm0l1228rgz"]
273mspm0l1228rhb = ["mspm0-metapac/mspm0l1228rhb"]
274mspm0l1303rge = ["mspm0-metapac/mspm0l1303rge"] 299mspm0l1303rge = ["mspm0-metapac/mspm0l1303rge"]
300mspm0l1304rhb = ["mspm0-metapac/mspm0l1304rhb"]
275mspm0l1304dgs20 = ["mspm0-metapac/mspm0l1304dgs20"] 301mspm0l1304dgs20 = ["mspm0-metapac/mspm0l1304dgs20"]
276mspm0l1304dgs28 = ["mspm0-metapac/mspm0l1304dgs28"] 302mspm0l1304dgs28 = ["mspm0-metapac/mspm0l1304dgs28"]
277mspm0l1304dyy = ["mspm0-metapac/mspm0l1304dyy"]
278mspm0l1304rge = ["mspm0-metapac/mspm0l1304rge"] 303mspm0l1304rge = ["mspm0-metapac/mspm0l1304rge"]
279mspm0l1304rhb = ["mspm0-metapac/mspm0l1304rhb"]
280mspm0l1304rtr = ["mspm0-metapac/mspm0l1304rtr"] 304mspm0l1304rtr = ["mspm0-metapac/mspm0l1304rtr"]
305mspm0l1304dyy = ["mspm0-metapac/mspm0l1304dyy"]
281mspm0l1305dgs20 = ["mspm0-metapac/mspm0l1305dgs20"] 306mspm0l1305dgs20 = ["mspm0-metapac/mspm0l1305dgs20"]
282mspm0l1305dgs28 = ["mspm0-metapac/mspm0l1305dgs28"] 307mspm0l1305dgs28 = ["mspm0-metapac/mspm0l1305dgs28"]
283mspm0l1305dyy = ["mspm0-metapac/mspm0l1305dyy"]
284mspm0l1305rge = ["mspm0-metapac/mspm0l1305rge"] 308mspm0l1305rge = ["mspm0-metapac/mspm0l1305rge"]
285mspm0l1305rtr = ["mspm0-metapac/mspm0l1305rtr"] 309mspm0l1305rtr = ["mspm0-metapac/mspm0l1305rtr"]
310mspm0l1305dyy = ["mspm0-metapac/mspm0l1305dyy"]
311mspm0l1306rhb = ["mspm0-metapac/mspm0l1306rhb"]
286mspm0l1306dgs20 = ["mspm0-metapac/mspm0l1306dgs20"] 312mspm0l1306dgs20 = ["mspm0-metapac/mspm0l1306dgs20"]
287mspm0l1306dgs28 = ["mspm0-metapac/mspm0l1306dgs28"] 313mspm0l1306dgs28 = ["mspm0-metapac/mspm0l1306dgs28"]
288mspm0l1306dyy = ["mspm0-metapac/mspm0l1306dyy"]
289mspm0l1306rge = ["mspm0-metapac/mspm0l1306rge"] 314mspm0l1306rge = ["mspm0-metapac/mspm0l1306rge"]
290mspm0l1306rhb = ["mspm0-metapac/mspm0l1306rhb"] 315mspm0l1306dyy = ["mspm0-metapac/mspm0l1306dyy"]
291mspm0l1343dgs20 = ["mspm0-metapac/mspm0l1343dgs20"] 316mspm0l1343dgs20 = ["mspm0-metapac/mspm0l1343dgs20"]
292mspm0l1344dgs20 = ["mspm0-metapac/mspm0l1344dgs20"] 317mspm0l1344dgs20 = ["mspm0-metapac/mspm0l1344dgs20"]
293mspm0l1345dgs28 = ["mspm0-metapac/mspm0l1345dgs28"] 318mspm0l1345dgs28 = ["mspm0-metapac/mspm0l1345dgs28"]
294mspm0l1346dgs28 = ["mspm0-metapac/mspm0l1346dgs28"] 319mspm0l1346dgs28 = ["mspm0-metapac/mspm0l1346dgs28"]
320mspm0l2227rgz = ["mspm0-metapac/mspm0l2227rgz"]
321mspm0l2227pt = ["mspm0-metapac/mspm0l2227pt"]
295mspm0l2227pm = ["mspm0-metapac/mspm0l2227pm"] 322mspm0l2227pm = ["mspm0-metapac/mspm0l2227pm"]
296mspm0l2227pn = ["mspm0-metapac/mspm0l2227pn"] 323mspm0l2227pn = ["mspm0-metapac/mspm0l2227pn"]
297mspm0l2227pt = ["mspm0-metapac/mspm0l2227pt"] 324mspm0l2228rgz = ["mspm0-metapac/mspm0l2228rgz"]
298mspm0l2227rgz = ["mspm0-metapac/mspm0l2227rgz"] 325mspm0l2228pt = ["mspm0-metapac/mspm0l2228pt"]
299mspm0l2228pm = ["mspm0-metapac/mspm0l2228pm"] 326mspm0l2228pm = ["mspm0-metapac/mspm0l2228pm"]
300mspm0l2228pn = ["mspm0-metapac/mspm0l2228pn"] 327mspm0l2228pn = ["mspm0-metapac/mspm0l2228pn"]
301mspm0l2228pt = ["mspm0-metapac/mspm0l2228pt"]
302mspm0l2228rgz = ["mspm0-metapac/mspm0l2228rgz"]
303msps003f3pw20 = ["mspm0-metapac/msps003f3pw20"] 328msps003f3pw20 = ["mspm0-metapac/msps003f3pw20"]
304msps003f4pw20 = ["mspm0-metapac/msps003f4pw20"] 329msps003f4pw20 = ["mspm0-metapac/msps003f4pw20"] \ No newline at end of file
diff --git a/embassy-mspm0/build.rs b/embassy-mspm0/build.rs
index 0fe056c4e..ac40adbdf 100644
--- a/embassy-mspm0/build.rs
+++ b/embassy-mspm0/build.rs
@@ -31,7 +31,7 @@ fn generate_code(cfgs: &mut CfgSet) {
31 PathBuf::from(env::var_os("OUT_DIR").unwrap()).display(), 31 PathBuf::from(env::var_os("OUT_DIR").unwrap()).display(),
32 ); 32 );
33 33
34 cfgs.declare_all(&["gpio_pb", "gpio_pc", "int_group1"]); 34 cfgs.declare_all(&["gpio_pb", "gpio_pc", "int_group1", "unicomm"]);
35 35
36 let chip_name = match env::vars() 36 let chip_name = match env::vars()
37 .map(|(a, _)| a) 37 .map(|(a, _)| a)
@@ -116,6 +116,10 @@ fn get_chip_cfgs(chip_name: &str) -> Vec<String> {
116 cfgs.push("mspm0g351x".to_string()); 116 cfgs.push("mspm0g351x".to_string());
117 } 117 }
118 118
119 if chip_name.starts_with("mspm0g518") {
120 cfgs.push("mspm0g518x".to_string());
121 }
122
119 if chip_name.starts_with("mspm0h321") { 123 if chip_name.starts_with("mspm0h321") {
120 cfgs.push("mspm0h321x".to_string()); 124 cfgs.push("mspm0h321x".to_string());
121 } 125 }
@@ -300,6 +304,15 @@ fn get_singletons(cfgs: &mut common::CfgSet) -> Vec<Singleton> {
300 // by the HAL. 304 // by the HAL.
301 "iomux" | "cpuss" => true, 305 "iomux" | "cpuss" => true,
302 306
307 // Unicomm instances get their own singletons, but we need to enable a cfg for unicomm drivers.
308 "unicomm" => {
309 cfgs.enable("unicomm");
310 false
311 }
312
313 // TODO: Remove after TIMB is fixed
314 "tim" if peripheral.name.starts_with("TIMB") => true,
315
303 _ => false, 316 _ => false,
304 }; 317 };
305 318
@@ -423,6 +436,8 @@ fn time_driver(singletons: &mut Vec<Singleton>, cfgs: &mut CfgSet) {
423 // Verify the selected timer is available 436 // Verify the selected timer is available
424 let selected_timer = match time_driver.as_ref().map(|x| x.as_ref()) { 437 let selected_timer = match time_driver.as_ref().map(|x| x.as_ref()) {
425 None => "", 438 None => "",
439 // TODO: Fix TIMB0
440 // Some("timb0") => "TIMB0",
426 Some("timg0") => "TIMG0", 441 Some("timg0") => "TIMG0",
427 Some("timg1") => "TIMG1", 442 Some("timg1") => "TIMG1",
428 Some("timg2") => "TIMG2", 443 Some("timg2") => "TIMG2",
@@ -440,16 +455,17 @@ fn time_driver(singletons: &mut Vec<Singleton>, cfgs: &mut CfgSet) {
440 Some("tima1") => "TIMA1", 455 Some("tima1") => "TIMA1",
441 Some("any") => { 456 Some("any") => {
442 // Order of timer candidates: 457 // Order of timer candidates:
443 // 1. 16-bit, 2 channel 458 // 1. Basic timers
444 // 2. 16-bit, 2 channel with shadow registers 459 // 2. 16-bit, 2 channel
445 // 3. 16-bit, 4 channel 460 // 3. 16-bit, 2 channel with shadow registers
446 // 4. 16-bit with QEI 461 // 4. 16-bit, 4 channel
447 // 5. Advanced timers 462 // 5. 16-bit with QEI
463 // 6. Advanced timers
448 // 464 //
449 // TODO: Select RTC first if available
450 // TODO: 32-bit timers are not considered yet 465 // TODO: 32-bit timers are not considered yet
451 [ 466 [
452 // 16-bit, 2 channel 467 // basic timers. No PWM pins
468 // "TIMB0", // 16-bit, 2 channel
453 "TIMG0", "TIMG1", "TIMG2", "TIMG3", // 16-bit, 2 channel with shadow registers 469 "TIMG0", "TIMG1", "TIMG2", "TIMG3", // 16-bit, 2 channel with shadow registers
454 "TIMG4", "TIMG5", "TIMG6", "TIMG7", // 16-bit, 4 channel 470 "TIMG4", "TIMG5", "TIMG6", "TIMG7", // 16-bit, 4 channel
455 "TIMG14", // 16-bit with QEI 471 "TIMG14", // 16-bit with QEI
@@ -519,6 +535,8 @@ fn generate_timers() -> TokenStream {
519 .peripherals 535 .peripherals
520 .iter() 536 .iter()
521 .filter(|p| p.name.starts_with("TIM")) 537 .filter(|p| p.name.starts_with("TIM"))
538 // TODO: Fix TIMB when used at time driver.
539 .filter(|p| !p.name.starts_with("TIMB"))
522 .map(|peripheral| { 540 .map(|peripheral| {
523 let name = Ident::new(&peripheral.name, Span::call_site()); 541 let name = Ident::new(&peripheral.name, Span::call_site());
524 let timers = &*TIMERS; 542 let timers = &*TIMERS;
@@ -730,6 +748,24 @@ struct TimerDesc {
730const TIMERS: LazyLock<HashMap<String, TimerDesc>> = LazyLock::new(|| { 748const TIMERS: LazyLock<HashMap<String, TimerDesc>> = LazyLock::new(|| {
731 let mut map = HashMap::new(); 749 let mut map = HashMap::new();
732 map.insert( 750 map.insert(
751 "TIMB0".into(),
752 TimerDesc {
753 bits: 16,
754 prescaler: true,
755 repeat_counter: false,
756 ccp_channels_internal: 2,
757 ccp_channels_external: 2,
758 external_pwm_channels: 0,
759 phase_load: false,
760 shadow_load: false,
761 shadow_ccs: false,
762 deadband: false,
763 fault_handler: false,
764 qei_hall: false,
765 },
766 );
767
768 map.insert(
733 "TIMG0".into(), 769 "TIMG0".into(),
734 TimerDesc { 770 TimerDesc {
735 bits: 16, 771 bits: 16,
diff --git a/embassy-mspm0/src/gpio.rs b/embassy-mspm0/src/gpio.rs
index d8eb42dc2..709102c59 100644
--- a/embassy-mspm0/src/gpio.rs
+++ b/embassy-mspm0/src/gpio.rs
@@ -841,6 +841,7 @@ impl<'d> embedded_hal_async::digital::Wait for OutputOpenDrain<'d> {
841 } 841 }
842} 842}
843 843
844#[cfg_attr(mspm0g518x, allow(dead_code))]
844#[derive(Copy, Clone)] 845#[derive(Copy, Clone)]
845pub struct PfType { 846pub struct PfType {
846 pull: Pull, 847 pull: Pull,
@@ -948,6 +949,7 @@ pub(crate) trait SealedPin {
948 }); 949 });
949 } 950 }
950 951
952 #[cfg_attr(mspm0g518x, allow(dead_code))]
951 fn update_pf(&self, ty: PfType) { 953 fn update_pf(&self, ty: PfType) {
952 let pincm = pac::IOMUX.pincm(self._pin_cm() as usize); 954 let pincm = pac::IOMUX.pincm(self._pin_cm() as usize);
953 let pf = pincm.read().pf(); 955 let pf = pincm.read().pf();
@@ -955,6 +957,7 @@ pub(crate) trait SealedPin {
955 set_pf(self._pin_cm() as usize, pf, ty); 957 set_pf(self._pin_cm() as usize, pf, ty);
956 } 958 }
957 959
960 #[cfg_attr(mspm0g518x, allow(dead_code))]
958 fn set_as_pf(&self, pf: u8, ty: PfType) { 961 fn set_as_pf(&self, pf: u8, ty: PfType) {
959 set_pf(self._pin_cm() as usize, pf, ty) 962 set_pf(self._pin_cm() as usize, pf, ty)
960 } 963 }
@@ -967,6 +970,7 @@ pub(crate) trait SealedPin {
967 /// 970 ///
968 /// Note that this also disables the internal weak pull-up and pull-down resistors. 971 /// Note that this also disables the internal weak pull-up and pull-down resistors.
969 #[inline] 972 #[inline]
973 #[cfg_attr(mspm0g518x, allow(dead_code))]
970 fn set_as_disconnected(&self) { 974 fn set_as_disconnected(&self) {
971 self.set_as_analog(); 975 self.set_as_analog();
972 } 976 }
diff --git a/embassy-mspm0/src/i2c_target.rs b/embassy-mspm0/src/i2c_target.rs
index 86be91415..e371fa903 100644
--- a/embassy-mspm0/src/i2c_target.rs
+++ b/embassy-mspm0/src/i2c_target.rs
@@ -12,12 +12,13 @@ use embassy_embedded_hal::SetConfig;
12use mspm0_metapac::i2c::vals::CpuIntIidxStat; 12use mspm0_metapac::i2c::vals::CpuIntIidxStat;
13 13
14use crate::gpio::{AnyPin, SealedPin}; 14use crate::gpio::{AnyPin, SealedPin};
15use crate::interrupt::InterruptExt;
16use crate::mode::{Async, Blocking, Mode};
17use crate::pac::{self, i2c::vals};
18use crate::{i2c, i2c_target, interrupt, Peri};
19// Re-use I2c controller types 15// Re-use I2c controller types
20use crate::i2c::{ClockSel, ConfigError, Info, Instance, InterruptHandler, SclPin, SdaPin, State}; 16use crate::i2c::{ClockSel, ConfigError, Info, Instance, InterruptHandler, SclPin, SdaPin, State};
17use crate::interrupt::InterruptExt;
18use crate::mode::{Async, Blocking, Mode};
19use crate::pac::i2c::vals;
20use crate::pac::{self};
21use crate::{Peri, i2c, i2c_target, interrupt};
21 22
22#[non_exhaustive] 23#[non_exhaustive]
23#[derive(Clone, Copy, PartialEq, Eq, Debug)] 24#[derive(Clone, Copy, PartialEq, Eq, Debug)]
diff --git a/embassy-mspm0/src/lib.rs b/embassy-mspm0/src/lib.rs
index c43c81853..548fb33ca 100644
--- a/embassy-mspm0/src/lib.rs
+++ b/embassy-mspm0/src/lib.rs
@@ -8,20 +8,23 @@
8)] 8)]
9#![doc = include_str!("../README.md")] 9#![doc = include_str!("../README.md")]
10 10
11// This mod MUST go first, so that the others see its macros. 11// These mods MUST go first, so that the others see the macros.
12pub(crate) mod fmt; 12pub(crate) mod fmt;
13
14// This must be declared early as well for
15mod macros; 13mod macros;
16 14
17pub mod adc; 15pub mod adc;
18pub mod dma; 16pub mod dma;
19pub mod gpio; 17pub mod gpio;
18// TODO: I2C unicomm
19#[cfg(not(unicomm))]
20pub mod i2c; 20pub mod i2c;
21#[cfg(not(unicomm))]
21pub mod i2c_target; 22pub mod i2c_target;
22#[cfg(any(mspm0g150x, mspm0g151x, mspm0g350x, mspm0g351x))] 23#[cfg(any(mspm0g150x, mspm0g151x, mspm0g350x, mspm0g351x))]
23pub mod mathacl; 24pub mod mathacl;
24pub mod timer; 25pub mod timer;
26// TODO: UART unicomm
27#[cfg(not(unicomm))]
25pub mod uart; 28pub mod uart;
26pub mod wwdt; 29pub mod wwdt;
27 30
@@ -276,7 +279,7 @@ pub enum ResetCause {
276 /// WWDT0 violation 279 /// WWDT0 violation
277 BootrstWwdt0Violation, 280 BootrstWwdt0Violation,
278 /// WWDT1 violation (G-series only) 281 /// WWDT1 violation (G-series only)
279 #[cfg(any(mspm0g110x, mspm0g150x, mspm0g151x, mspm0g310x, mspm0g350x, mspm0g351x))] 282 #[cfg(any(mspm0g110x, mspm0g150x, mspm0g151x, mspm0g310x, mspm0g350x, mspm0g351x, mspm0g518x))]
280 SysrstWwdt1Violation, 283 SysrstWwdt1Violation,
281 /// BSL exit (if present) 284 /// BSL exit (if present)
282 SysrstBslExit, 285 SysrstBslExit,
@@ -326,7 +329,8 @@ pub fn read_reset_cause() -> Result<ResetCause, u8> {
326 mspm0g151x, 329 mspm0g151x,
327 mspm0g310x, 330 mspm0g310x,
328 mspm0g350x, 331 mspm0g350x,
329 mspm0g351x 332 mspm0g351x,
333 mspm0g518x,
330 )))] 334 )))]
331 Id::BOOTNONPMUPARITY => Ok(BootrstNonPmuParityFault), 335 Id::BOOTNONPMUPARITY => Ok(BootrstNonPmuParityFault),
332 Id::BOOTCLKFAIL => Ok(BootrstClockFault), 336 Id::BOOTCLKFAIL => Ok(BootrstClockFault),
@@ -335,7 +339,7 @@ pub fn read_reset_cause() -> Result<ResetCause, u8> {
335 Id::BOOTWWDT0 => Ok(BootrstWwdt0Violation), 339 Id::BOOTWWDT0 => Ok(BootrstWwdt0Violation),
336 Id::SYSBSLEXIT => Ok(SysrstBslExit), 340 Id::SYSBSLEXIT => Ok(SysrstBslExit),
337 Id::SYSBSLENTRY => Ok(SysrstBslEntry), 341 Id::SYSBSLENTRY => Ok(SysrstBslEntry),
338 #[cfg(any(mspm0g110x, mspm0g150x, mspm0g151x, mspm0g310x, mspm0g350x, mspm0g351x))] 342 #[cfg(any(mspm0g110x, mspm0g150x, mspm0g151x, mspm0g310x, mspm0g350x, mspm0g351x, mspm0g518x))]
339 Id::SYSWWDT1 => Ok(SysrstWwdt1Violation), 343 Id::SYSWWDT1 => Ok(SysrstWwdt1Violation),
340 #[cfg(not(any(mspm0c110x, mspm0c1105_c1106, mspm0g351x, mspm0g151x)))] 344 #[cfg(not(any(mspm0c110x, mspm0c1105_c1106, mspm0g351x, mspm0g151x)))]
341 Id::SYSFLASHECC => Ok(SysrstFlashEccError), 345 Id::SYSFLASHECC => Ok(SysrstFlashEccError),
diff --git a/embassy-mspm0/src/macros.rs b/embassy-mspm0/src/macros.rs
index 5355e7d59..3a12a528a 100644
--- a/embassy-mspm0/src/macros.rs
+++ b/embassy-mspm0/src/macros.rs
@@ -1,5 +1,6 @@
1#![macro_use] 1#![macro_use]
2 2
3#[allow(unused)]
3macro_rules! new_pin { 4macro_rules! new_pin {
4 ($name: ident, $pf_type: expr) => {{ 5 ($name: ident, $pf_type: expr) => {{
5 let pin = $name; 6 let pin = $name;
diff --git a/embassy-mspm0/src/time_driver.rs b/embassy-mspm0/src/time_driver.rs
index 0743c667b..b42ff61c2 100644
--- a/embassy-mspm0/src/time_driver.rs
+++ b/embassy-mspm0/src/time_driver.rs
@@ -16,6 +16,8 @@ use crate::timer::SealedTimer;
16compile_error!("TIMG12 and TIMG13 are not supported by the time driver yet"); 16compile_error!("TIMG12 and TIMG13 are not supported by the time driver yet");
17 17
18// Currently TIMG12 and TIMG13 are excluded because those are 32-bit timers. 18// Currently TIMG12 and TIMG13 are excluded because those are 32-bit timers.
19#[cfg(time_driver_timb0)]
20type T = peripherals::TIMB0;
19#[cfg(time_driver_timg0)] 21#[cfg(time_driver_timg0)]
20type T = peripherals::TIMG0; 22type T = peripherals::TIMG0;
21#[cfg(time_driver_timg1)] 23#[cfg(time_driver_timg1)]
@@ -333,6 +335,8 @@ pub(crate) fn init(cs: CriticalSection) {
333 DRIVER.init(cs); 335 DRIVER.init(cs);
334} 336}
335 337
338// TODO: TIMB0
339
336#[cfg(time_driver_timg0)] 340#[cfg(time_driver_timg0)]
337#[interrupt] 341#[interrupt]
338fn TIMG0() { 342fn TIMG0() {