diff options
-rw-r--r-- | ArmPkg/Include/IndustryStandard/ArmFfaPartInfo.h | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/ArmPkg/Include/IndustryStandard/ArmFfaPartInfo.h b/ArmPkg/Include/IndustryStandard/ArmFfaPartInfo.h new file mode 100644 index 0000000000..fcee5575ac --- /dev/null +++ b/ArmPkg/Include/IndustryStandard/ArmFfaPartInfo.h @@ -0,0 +1,99 @@ +/** @file
+ Partition information description as specfied in the FF-A v1.2 specification.
+
+ Copyright (c) 2024, Arm Limited. All rights reserved.
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ @par Glossary:
+ - FF-A - Firmware Framework for Arm A-profile
+ - ST - Start idx and Tag
+ - IM - Information Metadata
+ - PART - Partition
+ - PROP - Property
+ - PE - Processing Element
+ - INDEP - Independent
+ - AUX - Auxiliary
+
+
+ @par Reference(s):
+ - FF-A Version 1.2 [https://developer.arm.com/documentation/den0077/latest]
+
+**/
+
+#ifndef ARM_FFA_PART_INFO_H_
+#define ARM_FFA_PART_INFO_H_
+
+/** Partition info flags used in FFA_PARTITION_INFO_GET
+ * See FF-A spec chapter 13.8 FFA_PARTITION_INFO_GET
+ */
+#define FFA_PART_INFO_FLAG_TYPE_SHIFT 0
+#define FFA_PART_INFO_FLAG_TYPE_MASK 1
+#define FFA_PART_INFO_FLAG_TYPE_COUNT 1
+#define FFA_PART_INFO_FLAG_TYPE_DESC 0
+
+#define FFA_PART_INFO_IDX_MASK 0xffff
+#define FFA_PART_INFO_START_TAG_MASK 0xffff
+
+/** macro used in FFA_PARTITION_INFO_GET_REGS request
+ * See FF-A spec chapter 13.9 FFA_PARTITION_INFO_GET_REGS
+ */
+#define FFA_PART_INFO_START_IDX_SHIFT 0
+#define FFA_PART_INFO_START_TAG_SHIFT 16
+
+/** macro used in FFA_PARTITION_INFO_GET_REGS response
+ * See FF-A spec chapter 13.9 FFA_PARTITION_INFO_GET_REGS
+ */
+#define FFA_PART_INFO_METADATA_LAST_IDX_SHIFT 0
+#define FFA_PART_INFO_METADATA_CURRENT_IDX_SHIFT 16
+#define FFA_PART_INFO_METADATA_TAG_SHIFT 32
+
+/** Partition properties values in EFI_FFA_PART_INFO_DESC->PartitionProps
+ * See FF-A spec chapter 6.2 partition discovery.
+ */
+#define FFA_PART_PROP_RECV_DIRECT_REQ (1 << 0)
+#define FFA_PART_PROP_SEND_DIRECT_REQ (1 << 1)
+#define FFA_PART_PROP_SEND_INDIRECT_REQ (1 << 2)
+#define FFA_PART_PROP_RECV_INDIRECT_REQ (1 << 3)
+
+#define FFA_PART_PROP_ID_TYPE_SHIFT 4
+#define FFA_PART_PROP_ID_TYPE_MASK 0x3
+#define FFA_PART_PROP_ID_PE_EP 0x00
+#define FFA_PART_PROP_ID_STREAM_EP_INDEPENDENT 0x01
+#define FFA_PART_PROP_ID_STREAM_EP_DEPENDENT 0x02
+#define FFA_PART_PROP_ID_AUX 0x03
+
+#define FFA_PART_PROP_VM_STATUS_CREATED (1 << 6)
+#define FFA_PART_PROP_VM_STATUS_DESTROYED (1 << 7)
+
+#define FFA_PART_PROP_EXECUTE_STATE (1 << 8)
+
+#define FFA_PART_PROP_RECV_DIRECT_REQ2 (1 << 9)
+#define FFA_PART_PROP_SEND_DIRECT_REQ2 (1 << 10)
+
+typedef union {
+ /// Number of Execution context
+ UINT16 ExecContextCount;
+
+ /// ID of proxy endpoint for a dependent peripheral device
+ UINT16 ProxyPartitionId;
+} EXEC_CONTEXT;
+
+/** Partition information Descriptor in the FF-A v1.2 spec.
+ * See FF-A spec chapter 6.2 partition discovery.
+ */
+typedef struct {
+ /// Partition id
+ UINT16 PartitionId;
+
+ /// Execution context count or Proxy partition id
+ EXEC_CONTEXT ExecContextCountOrProxyPartitionId;
+
+ /// Flags to determine partition properties
+ UINT32 PartitionProps;
+
+ /// UUID of partition
+ UINT32 PartitionUuid[4];
+} EFI_FFA_PART_INFO_DESC;
+
+#endif
|