summaryrefslogtreecommitdiffstats
path: root/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h
diff options
context:
space:
mode:
Diffstat (limited to 'DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h')
-rw-r--r--DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h
new file mode 100644
index 0000000000..eaee5d4ce9
--- /dev/null
+++ b/DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/DynamicPlatRepoInternal.h
@@ -0,0 +1,78 @@
+/** @file
+ Dynamic Platform Info Repository Internal
+
+ Copyright (c) 2021, Arm Limited. All rights reserved.<BR>
+
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ @par Glossary:
+ - Cm or CM - Configuration Manager
+ - Obj or OBJ - Object
+**/
+
+#ifndef DYNAMIC_PLAT_REPO_INTERNAL_H_
+#define DYNAMIC_PLAT_REPO_INTERNAL_H_
+
+#include "TokenMapper.h"
+
+#pragma pack(1)
+
+/** CmObj node.
+
+ This is a node wrapper around the CM_OBJ_DESCRIPTOR structure.
+ It also allows to bind a token to the CM_OBJ_DESCRIPTOR.
+*/
+typedef struct CmObjectNode {
+ /// This must be the first field in this structure.
+ LIST_ENTRY Link;
+
+ /// Token associated with the CmObjDesc.
+ CM_OBJECT_TOKEN Token;
+
+ /// CmObjDesc wrapped.
+ /// Note: the CM_OBJ_DESCRIPTOR.Data field is allocated and copied.
+ CM_OBJ_DESCRIPTOR CmObjDesc;
+} CM_OBJ_NODE;
+
+/** Dynamic repository states.
+
+ The states must progress as:
+ UnInitialised -> Transient -> Finalized
+*/
+typedef enum DynRepoState {
+ DynRepoUnInitialised, ///< Un-Initialised state
+ DynRepoTransient, ///< Transient state - CmObjects can be added.
+ DynRepoFinalized, ///< Repo Locked - No further CmObjects can be added.
+ ///< Getting objects is now possible.
+ DynRepoMax ///< Max value.
+} EDYNAMIC_REPO_STATE;
+
+/** A structure describing the platform configuration
+ manager repository information
+*/
+typedef struct DynamicPlatformRepositoryInfo {
+ /// Repo state machine.
+ EDYNAMIC_REPO_STATE RepoState;
+
+ /// Count of all the objects added to the Dynamic Platform Repo
+ /// during the Transient state.
+ UINTN ObjectCount;
+
+ /// Link lists of CmObj from the ArmNameSpace
+ /// that are added in the Transient state.
+ LIST_ENTRY ArmCmObjList[EArmObjMax];
+
+ /// Structure Members used in Finalized state.
+ /// An array of CmObj Descriptors from the ArmNameSpace
+ /// This array is populated when the Repo is finalized.
+ CM_OBJ_DESCRIPTOR ArmCmObjArray[EArmObjMax];
+
+ /// A token mapper for the objects in the ArmNamespaceObjectArray
+ /// The Token mapper is populated when the Repo is finalized in
+ /// a call to DynamicPlatRepoFinalise ().
+ TOKEN_MAPPER TokenMapper;
+} DYNAMIC_PLATFORM_REPOSITORY_INFO;
+
+#pragma pack()
+
+#endif // DYNAMIC_PLAT_REPO_INTERNAL_H_