From 9762b00c1338c8b61edfc55979f7a65f14544c2c Mon Sep 17 00:00:00 2001 From: Graham Sanderson Date: Thu, 21 Nov 2024 16:52:04 -0600 Subject: [PATCH] disable all IRQs in dma_chanel_cleanup - fixes for RP2350 (#2060) --- src/rp2_common/hardware_dma/dma.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/rp2_common/hardware_dma/dma.c b/src/rp2_common/hardware_dma/dma.c index 5c405959..9c0dab71 100644 --- a/src/rp2_common/hardware_dma/dma.c +++ b/src/rp2_common/hardware_dma/dma.c @@ -75,8 +75,9 @@ void dma_channel_cleanup(uint channel) { // Disable CHAIN_TO, and disable channel, so that it ignores any further triggers hw_write_masked( &dma_hw->ch[channel].al1_ctrl, (channel << DMA_CH0_CTRL_TRIG_CHAIN_TO_LSB) | (0u << DMA_CH0_CTRL_TRIG_EN_LSB), DMA_CH0_CTRL_TRIG_CHAIN_TO_BITS | DMA_CH0_CTRL_TRIG_EN_BITS ); // disable IRQs first as abort can cause spurious IRQs - dma_channel_set_irq0_enabled(channel, false); - dma_channel_set_irq1_enabled(channel, false); + for(uint i=0; i < NUM_DMA_IRQS; i++) { + dma_irqn_set_channel_enabled(i, channel, false); + } dma_channel_abort(channel); // finally clear the IRQ status, which may have been set during abort dma_hw->intr = 1u << channel;