1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2013-07-06 Bernard first version 9 */ 10 11 #ifndef __INTERRUPT_H__ 12 #define __INTERRUPT_H__ 13 14 #include <rthw.h> 15 #include <board.h> 16 17 #define INT_IRQ 0x00 18 #define INT_FIQ 0x01 19 20 #define IRQ_MODE_TRIG_LEVEL (0x00) /* Trigger: level triggered interrupt */ 21 #define IRQ_MODE_TRIG_EDGE (0x01) /* Trigger: edge triggered interrupt */ 22 #define IRQ_MODE_MASK (0x01) 23 24 void rt_hw_vector_init(void); 25 26 void rt_hw_interrupt_init(void); 27 void rt_hw_interrupt_mask(int vector); 28 void rt_hw_interrupt_umask(int vector); 29 30 int rt_hw_interrupt_get_irq(void); 31 void rt_hw_interrupt_ack(int vector); 32 33 void rt_hw_interrupt_set_target_cpus(int vector, unsigned int cpu_mask); 34 unsigned int rt_hw_interrupt_get_target_cpus(int vector); 35 36 void rt_hw_interrupt_set_triger_mode(int vector, unsigned int mode); 37 unsigned int rt_hw_interrupt_get_triger_mode(int vector); 38 39 void rt_hw_interrupt_set_pending(int vector); 40 unsigned int rt_hw_interrupt_get_pending(int vector); 41 void rt_hw_interrupt_clear_pending(int vector); 42 43 void rt_hw_interrupt_set_priority(int vector, unsigned int priority); 44 unsigned int rt_hw_interrupt_get_priority(int vector); 45 46 void rt_hw_interrupt_set_priority_mask(unsigned int priority); 47 unsigned int rt_hw_interrupt_get_priority_mask(void); 48 49 int rt_hw_interrupt_set_prior_group_bits(unsigned int bits); 50 unsigned int rt_hw_interrupt_get_prior_group_bits(void); 51 52 rt_isr_handler_t rt_hw_interrupt_install(int vector, rt_isr_handler_t handler, 53 void *param, const char *name); 54 55 #ifdef RT_USING_SMP 56 void rt_hw_ipi_send(int ipi_vector, unsigned int cpu_mask); 57 void rt_hw_ipi_handler_install(int ipi_vector, rt_isr_handler_t ipi_isr_handler); 58 #endif 59 60 #endif 61 62