Skip to content

Commit bc8eb83

Browse files
Alain Volmatcfriedt
authored andcommitted
drivers: dma: stm32: avoid clear flags if hal_override on unexpected irq
In case of using HAL_OVERRIDE, avoid clearing the FIFO ERROR flag before calling the HAL DMA IrqHandler so that the HAL DMA code handling can be used. Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
1 parent 110c61b commit bc8eb83

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

drivers/dma/dma_stm32.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,12 @@ static void dma_stm32_irq_handler(const struct device *dev, uint32_t id)
129129
}
130130
stream->dma_callback(dev, stream->user_data, callback_arg, DMA_STATUS_COMPLETE);
131131
} else if (stm32_dma_is_unexpected_irq_happened(dma, id)) {
132-
LOG_ERR("Unexpected irq happened.");
132+
/* Let HAL DMA handle flags on its own */
133+
if (!stream->hal_override) {
134+
LOG_ERR("Unexpected irq happened.");
135+
stm32_dma_dump_stream_irq(dma, id);
136+
stm32_dma_clear_stream_irq(dma, id);
137+
}
133138
stream->dma_callback(dev, stream->user_data,
134139
callback_arg, -EIO);
135140
} else {

drivers/dma/dma_stm32_v1.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -306,9 +306,6 @@ bool stm32_dma_is_unexpected_irq_happened(DMA_TypeDef *dma, uint32_t id)
306306
if (LL_DMA_IsEnabledIT_FE(dma, dma_stm32_id_to_stream(id)) &&
307307
dma_stm32_is_fe_active(dma, id)) {
308308
LOG_ERR("FiFo error.");
309-
stm32_dma_dump_stream_irq(dma, id);
310-
stm32_dma_clear_stream_irq(dma, id);
311-
312309
return true;
313310
}
314311

0 commit comments

Comments
 (0)