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