aboutsummaryrefslogtreecommitdiff
path: root/embassy-mspm0/build.rs
diff options
context:
space:
mode:
authori509VCB <[email protected]>2025-06-23 23:15:09 -0500
committeri509VCB <[email protected]>2025-07-06 17:40:10 -0500
commite57dffafa5723931dd529afe8e22cba0c9ea09f0 (patch)
treeecfad1783ad50f72520d770c6c5fb114d8981932 /embassy-mspm0/build.rs
parent8b65f9cf0f4095080297bf5c3e09334296da8076 (diff)
mspm0: add dma driver
Diffstat (limited to 'embassy-mspm0/build.rs')
-rw-r--r--embassy-mspm0/build.rs21
1 files changed, 19 insertions, 2 deletions
diff --git a/embassy-mspm0/build.rs b/embassy-mspm0/build.rs
index 6cd62895b..b9ba3aecf 100644
--- a/embassy-mspm0/build.rs
+++ b/embassy-mspm0/build.rs
@@ -67,6 +67,7 @@ fn generate_code() {
67 g.extend(generate_peripheral_instances()); 67 g.extend(generate_peripheral_instances());
68 g.extend(generate_pin_trait_impls()); 68 g.extend(generate_pin_trait_impls());
69 g.extend(generate_groups()); 69 g.extend(generate_groups());
70 g.extend(generate_dma_channel_count());
70 71
71 let out_dir = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); 72 let out_dir = &PathBuf::from(env::var_os("OUT_DIR").unwrap());
72 let out_file = out_dir.join("_generated.rs").to_string_lossy().to_string(); 73 let out_file = out_dir.join("_generated.rs").to_string_lossy().to_string();
@@ -209,6 +210,12 @@ fn generate_groups() -> TokenStream {
209 } 210 }
210} 211}
211 212
213fn generate_dma_channel_count() -> TokenStream {
214 let count = METADATA.dma_channels.len();
215
216 quote! { pub const DMA_CHANNELS: usize = #count; }
217}
218
212#[derive(Debug, Clone)] 219#[derive(Debug, Clone)]
213struct Singleton { 220struct Singleton {
214 name: String, 221 name: String,
@@ -543,8 +550,6 @@ fn generate_peripheral_instances() -> TokenStream {
543 for peripheral in METADATA.peripherals { 550 for peripheral in METADATA.peripherals {
544 let peri = format_ident!("{}", peripheral.name); 551 let peri = format_ident!("{}", peripheral.name);
545 552
546 // Will be filled in when uart implementation is finished
547 let _ = peri;
548 let tokens = match peripheral.kind { 553 let tokens = match peripheral.kind {
549 "uart" => Some(quote! { impl_uart_instance!(#peri); }), 554 "uart" => Some(quote! { impl_uart_instance!(#peri); }),
550 _ => None, 555 _ => None,
@@ -555,6 +560,18 @@ fn generate_peripheral_instances() -> TokenStream {
555 } 560 }
556 } 561 }
557 562
563 // DMA channels
564 for dma_channel in METADATA.dma_channels.iter() {
565 let peri = format_ident!("DMA_CH{}", dma_channel.number);
566 let num = dma_channel.number;
567
568 if dma_channel.full {
569 impls.push(quote! { impl_full_dma_channel!(#peri, #num); });
570 } else {
571 impls.push(quote! { impl_dma_channel!(#peri, #num); });
572 }
573 }
574
558 quote! { 575 quote! {
559 #(#impls)* 576 #(#impls)*
560 } 577 }