diff options
| author | i509VCB <[email protected]> | 2025-06-23 23:15:09 -0500 |
|---|---|---|
| committer | i509VCB <[email protected]> | 2025-07-06 17:40:10 -0500 |
| commit | e57dffafa5723931dd529afe8e22cba0c9ea09f0 (patch) | |
| tree | ecfad1783ad50f72520d770c6c5fb114d8981932 /embassy-mspm0/build.rs | |
| parent | 8b65f9cf0f4095080297bf5c3e09334296da8076 (diff) | |
mspm0: add dma driver
Diffstat (limited to 'embassy-mspm0/build.rs')
| -rw-r--r-- | embassy-mspm0/build.rs | 21 |
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 | ||
| 213 | fn 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)] |
| 213 | struct Singleton { | 220 | struct 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 | } |
