| /** @file | |
| Copyright (c) 2026, Arm Limited. All rights reserved. | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| @par Glossary: | |
| - Cm or CM - Configuration Manager | |
| - Obj or OBJ - Object | |
| - Std or STD - Standard | |
| **/ | |
| #pragma once | |
| #include <AcpiTableGenerator.h> | |
| #include <SmbiosTableGenerator.h> | |
| #pragma pack(1) | |
| /** The EABSTRACT_TOKEN_ID enum describes the defined namespaces | |
| for Abstract Tokens. | |
| */ | |
| typedef enum AbstractTokenID { | |
| ETokenNameSpaceUnknown = 0, | |
| ETokenNameSpaceSmbios, | |
| ETokenNameSpaceFdtHwInfo, | |
| ETokenNameSpaceGenerated, | |
| ETokenNameSpaceMax | |
| } EABSTRACT_TOKEN_ID; | |
| /** The EFDT_HW_INFO_OBJECT_ID enum describes the defined object | |
| types for the ETokenNameSpaceFdtHwInfo namespace. | |
| */ | |
| typedef enum FdtHwInfoObjectID { | |
| EFdtHwInfoIortObject = 0, | |
| EFdtHwInfoGicCObject, | |
| EFdtHwInfoProcHierarchyObject, | |
| EFdtHwInfoCacheObject, | |
| } EFDT_HW_INFO_OBJECT_ID; | |
| /** Abstract token generated by table generators | |
| Description of abstract token format | |
| ______________________________________________________________________________ | |
| |31 |30 |29 |28 || 27 | 26 | 25 | 24 || 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16| | |
| ------------------------------------------------------------------------------ | |
| | 1 0 1 0 || Name Space ID || Object ID | | |
| ______________________________________________________________________________ | |
| Bits: [31:28] - Must be 1010 (0xa) for abstract token | |
| Bits: [27:24] - Name Space ID | |
| 0000 - Unknown | |
| 0001 - SMBIOS | |
| 0002 - Fdt | |
| Bits: [23:16] - Object ID | |
| _______________________________________________________________________________ | |
| |15 |14 |13 |12 || 11 | 10 | 9 | 8 || 7 | 6 | 5 | 4 || 3 | 2 | 1 | 0| | |
| ------------------------------------------------------------------------------- | |
| | ID | 1 | | |
| _______________________________________________________________________________ | |
| Bits: [15:1] - Token ID | |
| Token ID is arbitrary and is defined by the generator | |
| Bit [0] - Must be 1 for abstract token | |
| Object ID's in the SMBIOS Namespace: | |
| See ESTD_SMBIOS_TABLE_ID. | |
| */ | |
| #define CM_ABSTRACT_TOKEN_ID_MASK (0x7FFF) | |
| #define CM_ABSTRACT_TOKEN_MAKE(ns, obj_id, id) ((CM_OBJECT_TOKEN)((0xa << 28) | ((ns) << 24) | ((obj_id) << 16) | ((id) << 1) | 1)) | |
| #pragma pack() |