/** @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