audk/ArmPkg/Include/IndustryStandard/ArmFfaPartInfo.h

100 lines
3.1 KiB
C

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