From 6ad1b899ed93f8bc110cdec7a722c8740f9f8d66 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Mon, 31 Jul 2023 22:24:29 +0300 Subject: start working on irqs --- include/arch/irq.h | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) (limited to 'include/arch/irq.h') diff --git a/include/arch/irq.h b/include/arch/irq.h index 72b998e..85a7360 100644 --- a/include/arch/irq.h +++ b/include/arch/irq.h @@ -1,8 +1,11 @@ /* SPDX-License-Identifier: copyleft-next-0.3.1 */ /* Copyright 2021 - 2022, Kim Kuparinen < kimi.h.kuparinen@gmail.com > */ -#ifndef KMI_IRQ_H -#define KMI_IRQ_H +#ifndef KMI_ARCH_IRQ_H +#define KMI_ARCH_IRQ_H + +/** Type for IRQ id. */ +typedef uint_fast32_t irq_t; /** * @file irq.h @@ -19,16 +22,42 @@ #endif /** - * Initialize IRQ subsystem. + * Initialize arch-specific IRQ stuff. * * @param fdt Global FDT pointer. */ -void init_irq(void *fdt); +void setup_irq(void *fdt); + +/** + * Activate IRQ for \p id. + * Assumes there's one interrupt controller for the whole system, which might be + * an oversimplification. + * + * @param id IRQ id to deactivate. + * @return OK on success, non-zero otherwise. + */ +stat_t activate_irq(irq_t id); + +/** + * Deactivates IRQ for \p id. + * + * @param id IRQ id to deactivate. + * @return OK on success, non-zero otherwise. + */ +stat_t deactivate_irq(irq_t id); /** Enable IRQs. */ -void enable_irq(); +void enable_irqs(); /** Disable IRQs. */ -void disable_irq(); +void disable_irqs(); + +/** Get IRQ to handle. + * + * @return ID of IRQ to handle. + * + * @todo what about illegal IRQs due to bug or something? + */ +irq_t get_irq(); -#endif /* KMI_IRQ_H */ +#endif /* KMI_ARCH_IRQ_H */ -- cgit v1.3