From 3602377251150299257886442d81f17ff2a57d6b Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Mon, 10 Apr 2023 16:00:21 +0200 Subject: [PATCH] gpdma: fix channel count for h5. --- stm32-data-gen/src/dma.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/stm32-data-gen/src/dma.rs b/stm32-data-gen/src/dma.rs index 3360c78..083eaf5 100644 --- a/stm32-data-gen/src/dma.rs +++ b/stm32-data-gen/src/dma.rs @@ -294,17 +294,18 @@ impl DmaChannels { // GPDMA - for (file, gpdmax, instance) in [ - ("data/dmamux/H5_GPDMA.yaml", "GPDMA1", "STM32H5_dma3_Cube"), - ("data/dmamux/H5_GPDMA.yaml", "GPDMA2", "Instance2_STM32H5_dma3_Cube"), - ("data/dmamux/U5_GPDMA1.yaml", "GPDMA1", "STM32U5_dma3_Cube"), + for (file, gpdmax, instance, count, count_2d) in [ + ("H5_GPDMA.yaml", "GPDMA1", "STM32H5_dma3_Cube", 8, 2), + ("H5_GPDMA.yaml", "GPDMA2", "Instance2_STM32H5_dma3_Cube", 8, 2), + ("U5_GPDMA1.yaml", "GPDMA1", "STM32U5_dma3_Cube", 16, 4), ] { let mut chip_dma = ChipDma { peripherals: HashMap::new(), channels: Vec::new(), }; - let parsed: HashMap = serde_yaml::from_str(&std::fs::read_to_string(file)?)?; + let parsed: HashMap = + serde_yaml::from_str(&std::fs::read_to_string(format!("data/dmamux/{file}"))?)?; for (request_name, request_num) in parsed { let parts: Vec<_> = request_name.split('_').collect(); @@ -329,14 +330,14 @@ impl DmaChannels { }); } - for i in 0..16 { + for i in 0..count { chip_dma.channels.push(stm32_data_serde::chip::core::DmaChannels { name: format!("{gpdmax}_CH{i}"), dma: gpdmax.to_string(), channel: i, dmamux: None, dmamux_channel: None, - supports_2d: Some(i >= 12), + supports_2d: Some(i >= count - count_2d), }); }