/** @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 #include #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()