From 2af6adc745d310bdd0e3bb271a1b3ef0e08e2b55 Mon Sep 17 00:00:00 2001 From: Anuj Pathak Date: Wed, 11 Jun 2025 17:35:37 +0530 Subject: [PATCH] drivers: dma: max32: check if bit other than status is set we iterate over all the channels, and if more than one channel is active at a time. interrupt on any one of active channel was triggering callback for other active channel, because flags value is 1 (enabled). this is commit handle this behaviour and only trigger callback if bits other than status is set Signed-off-by: Anuj Pathak --- drivers/dma/dma_max32.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/dma/dma_max32.c b/drivers/dma/dma_max32.c index ffbe70c1f55..11d3dd0c07d 100644 --- a/drivers/dma/dma_max32.c +++ b/drivers/dma/dma_max32.c @@ -258,6 +258,11 @@ static void max32_dma_isr(const struct device *dev) continue; } + /* check if only enabled bit is set (interrupt is not there) and skip it */ + if (flags == ADI_MAX32_DMA_STATUS_ST) { + continue; + } + /* Check for error interrupts */ if (flags & (ADI_MAX32_DMA_STATUS_BUS_ERR | ADI_MAX32_DMA_STATUS_TO_IF)) { status = -EIO;