From e17b3fd884c8090ae2a1e56d4c999103800254da Mon Sep 17 00:00:00 2001 From: Marcin Szymczyk Date: Thu, 23 May 2024 17:02:23 +0200 Subject: [PATCH] arch: riscv: implement `arch_irq_disconnect_dynamic` For SoC with `CONFIG_RISCV_RESERVED_IRQ_ISR_TABLES_OFFSET`, it should be taken into consideration when disconnecting IRQ. Signed-off-by: Marcin Szymczyk --- arch/riscv/core/irq_manage.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arch/riscv/core/irq_manage.c b/arch/riscv/core/irq_manage.c index b60deceefab..358b07534be 100644 --- a/arch/riscv/core/irq_manage.c +++ b/arch/riscv/core/irq_manage.c @@ -9,6 +9,7 @@ #include #include #include +#include #ifdef CONFIG_RISCV_HAS_PLIC #include @@ -53,4 +54,17 @@ int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority, #endif return irq; } + +#ifdef CONFIG_SHARED_INTERRUPTS +int arch_irq_disconnect_dynamic(unsigned int irq, unsigned int priority, + void (*routine)(const void *parameter), const void *parameter, + uint32_t flags) +{ + ARG_UNUSED(priority); + ARG_UNUSED(flags); + + return z_isr_uninstall(irq + CONFIG_RISCV_RESERVED_IRQ_ISR_TABLES_OFFSET, routine, + parameter); +} +#endif /* CONFIG_SHARED_INTERRUPTS */ #endif /* CONFIG_DYNAMIC_INTERRUPTS */