mirror of https://github.com/acidanthera/audk.git
100 lines
3.1 KiB
C
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
|