ArmPkg: Add FF-A partition information header
Partition descriptor is used to get partition information via FFA_PARTITION_INFO_GET or FFA_PARTITION_INFO_GET_REGS FF-A ABI. Adds defines for partition descriptor and some macros used to call above ABIs. Signed-off-by: Levi Yun <yeoreum.yun@arm.com>
This commit is contained in:
parent
d1d690f363
commit
79875fdde0
|
@ -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
|
Loading…
Reference in New Issue