shared_irq: move IOAPIC interrupt trigger flags into driver
Move the common #define for IOAPIC interrupt trigger flags out of
platform board.h and into the driver.
Change-Id: Ie7262b69226ebffa7e1b9e35725fda24b3fe089f
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
diff --git a/drivers/shared_irq/shared_irq.c b/drivers/shared_irq/shared_irq.c
index 9c0c8a3..e89dbb4 100644
--- a/drivers/shared_irq/shared_irq.c
+++ b/drivers/shared_irq/shared_irq.c
@@ -21,6 +21,10 @@
#include <board.h>
#include <sys_io.h>
+#ifdef CONFIG_IOAPIC
+#include <drivers/ioapic.h>
+#endif
+
/**
* @brief Register a device ISR
* @param dev Pointer to device structure for SHARED_IRQ driver instance.
@@ -145,6 +149,22 @@
SYS_DEFINE_DEVICE(shared_irq_0, &shared_irq_0_runtime, SECONDARY,
CONFIG_SHARED_IRQ_INIT_PRIORITY);
+#if defined(CONFIG_IOAPIC)
+#if defined(CONFIG_SHARED_IRQ_0)
+ #if defined(CONFIG_SHARED_IRQ_0_FALLING_EDGE)
+ #define SHARED_IRQ_0_FLAGS (IOAPIC_EDGE | IOAPIC_LOW)
+ #elif defined(CONFIG_SHARED_IRQ_0_RISING_EDGE)
+ #define SHARED_IRQ_0_FLAGS (IOAPIC_EDGE | IOAPIC_HIGH)
+ #elif defined(CONFIG_SHARED_IRQ_0_LEVEL_HIGH)
+ #define SHARED_IRQ_0_FLAGS (IOAPIC_LEVEL | IOAPIC_HIGH)
+ #elif defined(CONFIG_SHARED_IRQ_0_LEVEL_LOW)
+ #define SHARED_IRQ_0_FLAGS (IOAPIC_LEVEL | IOAPIC_LOW)
+ #endif
+#endif /* CONFIG_SHARED_IRQ_0 */
+#else
+ #define SHARED_IRQ_0_FLAGS 0
+#endif /* CONFIG_IOAPIC */
+
IRQ_CONNECT_STATIC(shared_irq_0, CONFIG_SHARED_IRQ_0_IRQ,
CONFIG_SHARED_IRQ_0_PRI, shared_irq_isr_0, 0,
SHARED_IRQ_0_FLAGS);
@@ -179,6 +199,22 @@
SYS_DEFINE_DEVICE(shared_irq_1, &shared_irq_1_runtime, SECONDARY,
CONFIG_SHARED_IRQ_INIT_PRIORITY);
+#if defined(CONFIG_IOAPIC)
+#if defined(CONFIG_SHARED_IRQ_1)
+ #if defined(CONFIG_SHARED_IRQ_1_FALLING_EDGE)
+ #define SHARED_IRQ_1_FLAGS (IOAPIC_EDGE | IOAPIC_LOW)
+ #elif defined(CONFIG_SHARED_IRQ_1_RISING_EDGE)
+ #define SHARED_IRQ_1_FLAGS (IOAPIC_EDGE | IOAPIC_HIGH)
+ #elif defined(CONFIG_SHARED_IRQ_1_LEVEL_HIGH)
+ #define SHARED_IRQ_1_FLAGS (IOAPIC_LEVEL | IOAPIC_HIGH)
+ #elif defined(CONFIG_SHARED_IRQ_1_LEVEL_LOW)
+ #define SHARED_IRQ_1_FLAGS (IOAPIC_LEVEL | IOAPIC_LOW)
+ #endif
+#endif /* CONFIG_SHARED_IRQ_1 */
+#else
+ #define SHARED_IRQ_1_FLAGS 0
+#endif /* CONFIG_IOAPIC */
+
IRQ_CONNECT_STATIC(shared_irq_1, CONFIG_SHARED_IRQ_1_IRQ,
CONFIG_SHARED_IRQ_1_PRI, shared_irq_isr_1, 0,
SHARED_IRQ_1_FLAGS);