From b732336f2f3ff9f7ec27d1d75a3e78cc1a0ad054 Mon Sep 17 00:00:00 2001 From: Albin Hedman Date: Wed, 3 Dec 2025 18:04:48 +0100 Subject: GPDMA suspend channel before reset if already enabled --- embassy-stm32/src/dma/gpdma/mod.rs | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'embassy-stm32/src') diff --git a/embassy-stm32/src/dma/gpdma/mod.rs b/embassy-stm32/src/dma/gpdma/mod.rs index bfd0570f8..51c107cb4 100644 --- a/embassy-stm32/src/dma/gpdma/mod.rs +++ b/embassy-stm32/src/dma/gpdma/mod.rs @@ -238,6 +238,11 @@ impl AnyChannel { // "Preceding reads and writes cannot be moved past subsequent writes." fence(Ordering::SeqCst); + if ch.cr().read().en() { + ch.cr().modify(|w| w.set_susp(true)); + while !ch.sr().read().suspf() {} + } + ch.cr().write(|w| w.set_reset(true)); ch.fcr().write(|w| { // Clear all irqs -- cgit