cavs: disable all interrupts when configuring interrupt controllers
Some interrupts can be enabled by the ROM, e.g. the timer interrupt.
When then in Zephyr the interrupt controller is enabled, before
individual interrupts are configured, interrupts can arrive and lead
to the spurious interrupt handler being invoked. Fix thid by
disabling all child interrupts when configuring cAVS interrupt
controllers.
Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
diff --git a/drivers/interrupt_controller/intc_cavs.c b/drivers/interrupt_controller/intc_cavs.c
index c7b5205..38331e4 100644
--- a/drivers/interrupt_controller/intc_cavs.c
+++ b/drivers/interrupt_controller/intc_cavs.c
@@ -132,6 +132,11 @@
#define CAVS_ICTL_INIT(n) \
static int cavs_ictl_##n##_initialize(const struct device *port) \
{ \
+ struct cavs_ictl_runtime *context = port->data; \
+ volatile struct cavs_registers * const regs = \
+ (struct cavs_registers *)context->base_addr; \
+ regs->disable_il = ~0; \
+ \
return 0; \
} \
\