summaryrefslogtreecommitdiff
path: root/DynamicTablesPkg/Include/AbstractToken.h
blob: 62094ef0dc817d5063fb91862fa729ed8afdf88f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/** @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()