feat(interrupts): new interrupt controller ABIs

This patch introduces additional platform interrupt controller ABIs
and implements these ABIs for a dummy platform interrupt controller
and a fake platform.

Change-Id: I08c140f43edc7a72958fc3638b33b4365a88b40a
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
diff --git a/src/arch/aarch64/plat/interrupts/absent.c b/src/arch/aarch64/plat/interrupts/absent.c
index 241dc7a..a803e09 100644
--- a/src/arch/aarch64/plat/interrupts/absent.c
+++ b/src/arch/aarch64/plat/interrupts/absent.c
@@ -6,9 +6,80 @@
  * https://opensource.org/licenses/BSD-3-Clause.
  */
 
+#include "hf/plat/interrupts.h"
 #include "hf/types.h"
 
+bool plat_interrupts_controller_driver_init(
+	const struct fdt *fdt, struct mm_stage1_locked stage1_locked,
+	struct mpool *ppool)
+{
+	(void)fdt;
+	(void)stage1_locked;
+	(void)ppool;
+	return true;
+}
+
+void plat_interrupts_controller_hw_init(struct cpu *c)
+{
+	(void)c;
+}
+
 void plat_interrupts_set_priority_mask(uint8_t min_priority)
 {
 	(void)min_priority;
 }
+
+uint8_t plat_interrupts_get_priority_mask(void)
+{
+	return 0;
+}
+
+void plat_interrupts_set_priority(uint32_t id, uint32_t core_pos,
+				  uint32_t priority)
+{
+	(void)id;
+	(void)core_pos;
+	(void)priority;
+}
+
+void plat_interrupts_disable(uint32_t id, uint32_t core_pos)
+{
+	(void)id;
+	(void)core_pos;
+}
+
+void plat_interrupts_set_type(uint32_t id, uint32_t type)
+{
+	(void)id;
+	(void)type;
+}
+
+uint32_t plat_interrupts_get_type(uint32_t id)
+{
+	(void)id;
+	return 0;
+}
+
+uint32_t plat_interrupts_get_pending_interrupt_id(void)
+{
+	return 0;
+}
+
+void plat_interrupts_end_of_interrupt(uint32_t id)
+{
+	(void)id;
+}
+
+void plat_interrupts_configure_interrupt(struct interrupt_descriptor int_desc)
+{
+	(void)int_desc;
+}
+
+void plat_interrupts_send_sgi(uint32_t id, bool send_to_all,
+			      uint32_t target_list, bool to_this_security_state)
+{
+	(void)id;
+	(void)send_to_all;
+	(void)target_list;
+	(void)to_this_security_state;
+}
diff --git a/src/arch/fake/hypervisor/BUILD.gn b/src/arch/fake/hypervisor/BUILD.gn
index a845532..89c75a7 100644
--- a/src/arch/fake/hypervisor/BUILD.gn
+++ b/src/arch/fake/hypervisor/BUILD.gn
@@ -8,6 +8,7 @@
   sources = [
     "cpu.c",
     "ffa.c",
+    "interrupts.c",
   ]
   deps = [
     "//src/arch/fake:arch",
diff --git a/src/arch/fake/hypervisor/cpu.c b/src/arch/fake/hypervisor/cpu.c
index 2ef9f32..8f3a5ad 100644
--- a/src/arch/fake/hypervisor/cpu.c
+++ b/src/arch/fake/hypervisor/cpu.c
@@ -10,6 +10,7 @@
 
 #include "hf/cpu.h"
 #include "hf/ffa.h"
+#include "hf/plat/interrupts.h"
 
 void arch_irq_disable(void)
 {
@@ -21,11 +22,6 @@
 	/* TODO */
 }
 
-void plat_interrupts_set_priority_mask(uint8_t min_priority)
-{
-	(void)min_priority;
-}
-
 void arch_regs_reset(struct vcpu *vcpu)
 {
 	/* TODO */
diff --git a/src/arch/fake/hypervisor/interrupts.c b/src/arch/fake/hypervisor/interrupts.c
new file mode 100644
index 0000000..4d2585b
--- /dev/null
+++ b/src/arch/fake/hypervisor/interrupts.c
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2021 The Hafnium Authors.
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://opensource.org/licenses/BSD-3-Clause.
+ */
+
+#include "hf/plat/interrupts.h"
+
+#include "hf/cpu.h"
+#include "hf/ffa.h"
+
+void plat_interrupts_set_priority_mask(uint8_t min_priority)
+{
+	(void)min_priority;
+}
+
+void plat_interrupts_controller_hw_init(struct cpu *c)
+{
+	(void)c;
+}