test(notifications): retrieve interrupt IDs
FFA_FEATURES can be used to query about certain features, namely to
retrieve interrupt ID of:
- Notification Pending Interrupt.
- Scheduler Receiver Interrupt.
- Managed Exit Interrupt.
As those are all needed in the scope of the notifications feature,
added test to validate they can be retrieved and have expected values.
Signed-off-by: J-Alves <joao.alves@arm.com>
Change-Id: I808170780118cff0dc89008e135897af7009ab37
diff --git a/include/runtime_services/ffa_helpers.h b/include/runtime_services/ffa_helpers.h
index 1774848..6d9c61d 100644
--- a/include/runtime_services/ffa_helpers.h
+++ b/include/runtime_services/ffa_helpers.h
@@ -30,6 +30,21 @@
#include <cassert.h>
#include <stdint.h>
+/**
+ * FF-A Feature ID, to be used with interface FFA_FEATURES.
+ * As defined in the FF-A v1.1 Beta specification, table 13.10, in section
+ * 13.2.
+ */
+
+/** Query interrupt ID of Notification Pending Interrupt. */
+#define FFA_FEATURE_NPI 0x1U
+
+/** Query interrupt ID of Schedule Receiver Interrupt. */
+#define FFA_FEATURE_SRI 0x2U
+
+/** Query interrupt ID of the Managed Exit Interrupt. */
+#define FFA_FEATURE_MEI 0x3U
+
/** Partition property: partition supports receipt of direct requests. */
#define FFA_PARTITION_DIRECT_REQ_RECV 0x1
@@ -62,6 +77,11 @@
return (ffa_id_t) val.ret2 & 0xffff;
}
+static inline uint32_t ffa_feature_intid(smc_ret_values val)
+{
+ return (uint32_t)val.ret2;
+}
+
typedef uint64_t ffa_notification_bitmap_t;
#define FFA_NOTIFICATION(ID) (UINT64_C(1) << ID)
diff --git a/include/runtime_services/spm_common.h b/include/runtime_services/spm_common.h
index 91a3b8c..58569d5 100644
--- a/include/runtime_services/spm_common.h
+++ b/include/runtime_services/spm_common.h
@@ -25,6 +25,9 @@
/* INTID for the managed exit virtual interrupt. */
#define MANAGED_EXIT_INTERRUPT_ID U(4)
+/* INTID for the notification pending interrupt. */
+#define NOTIFICATION_PENDING_INTERRUPT_INTID 5
+
/** IRQ/FIQ pin used for signaling a virtual interrupt. */
enum interrupt_pin {
INTERRUPT_TYPE_IRQ,