1 /* ioapic.h - public IOAPIC APIs */ 2 3 /* 4 * Copyright (c) 2012-2015 Wind River Systems, Inc. 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 */ 8 9 #ifndef ZEPHYR_INCLUDE_DRIVERS_IOAPIC_H_ 10 #define ZEPHYR_INCLUDE_DRIVERS_IOAPIC_H_ 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 /* 17 * Redirection table entry bits: lower 32 bit 18 * Used as flags argument in ioapic_irq_set 19 */ 20 21 #define IOAPIC_INT_MASK 0x00010000 22 #define IOAPIC_TRIGGER_MASK 0x00008000 23 #define IOAPIC_LEVEL 0x00008000 24 #define IOAPIC_EDGE 0x00000000 25 #define IOAPIC_REMOTE 0x00004000 26 #define IOAPIC_POLARITY_MASK 0x00002000 27 #define IOAPIC_LOW 0x00002000 28 #define IOAPIC_HIGH 0x00000000 29 #define IOAPIC_LOGICAL 0x00000800 30 #define IOAPIC_PHYSICAL 0x00000000 31 #define IOAPIC_DELIVERY_MODE_MASK 0x00000700 32 #define IOAPIC_FIXED 0x00000000 33 #define IOAPIC_LOWEST 0x00000100 34 #define IOAPIC_SMI 0x00000200 35 #define IOAPIC_NMI 0x00000400 36 #define IOAPIC_INIT 0x00000500 37 #define IOAPIC_EXTINT 0x00000700 38 39 #ifndef _ASMLANGUAGE 40 uint32_t z_ioapic_num_rtes(void); 41 void z_ioapic_irq_enable(unsigned int irq); 42 void z_ioapic_irq_disable(unsigned int irq); 43 void z_ioapic_int_vec_set(unsigned int irq, unsigned int vector); 44 void z_ioapic_irq_set(unsigned int irq, unsigned int vector, uint32_t flags); 45 #endif /* _ASMLANGUAGE */ 46 47 #ifdef __cplusplus 48 } 49 #endif 50 51 #endif /* ZEPHYR_INCLUDE_DRIVERS_IOAPIC_H_ */ 52