blob: 62094ef0dc817d5063fb91862fa729ed8afdf88f [file]
/** @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()