]> git.proxmox.com Git - mirror_edk2.git/commitdiff
DynamicTablesPkg: DynamicPlatRepoLib: Adding more token fixers
authorKun Qin <kuqin12@gmail.com>
Fri, 1 Jul 2022 01:00:17 +0000 (18:00 -0700)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Thu, 1 Sep 2022 10:27:02 +0000 (10:27 +0000)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3996

This change added more token fixers for other node types, including
NamedComponentNode, RootComplexNode, and SmmuV3Node.

The corresponding entries for tokenFixer functions table is also updated.

Cc: Sami Mujawar <Sami.Mujawar@arm.com>
Cc: Alexei Fedorov <Alexei.Fedorov@arm.com>
Co-authored-by: Joe Lopez <joelopez@microsoft.com>
Signed-off-by: Kun Qin <kuqin12@gmail.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
Reviewed-by: Pierre Gondois <pierre.gondois@arm.com>
Tested-by: Sami Mujawar <sami.mujawar@arm.com>
DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/CmObjectTokenFixer.c

index 84e4bb7e3bc87f86f64e8e3f389a64eef7c7d501..345acab53f744e4947a26c7546db11f16f9f66c9 100644 (file)
@@ -64,6 +64,78 @@ TokenFixerItsGroup (
   return EFI_SUCCESS;\r
 }\r
 \r
+/** EArmObjNamedComponent token fixer.\r
+\r
+  CmObjectToken fixer function that updates the Tokens in the CmObjects.\r
+\r
+  @param [in]  CmObject    Pointer to the Configuration Manager Object.\r
+  @param [in]  Token       Token to be updated in the CmObject.\r
+\r
+  @retval EFI_SUCCESS           Success.\r
+  @retval EFI_INVALID_PARAMETER A parameter is invalid.\r
+  @retval EFI_UNSUPPORTED       Not supported.\r
+**/\r
+STATIC\r
+EFI_STATUS\r
+EFIAPI\r
+TokenFixerNamedComponentNode (\r
+  IN  CM_OBJ_DESCRIPTOR  *CmObject,\r
+  IN  CM_OBJECT_TOKEN    Token\r
+  )\r
+{\r
+  ASSERT (CmObject != NULL);\r
+  ((CM_ARM_NAMED_COMPONENT_NODE *)CmObject->Data)->Token = Token;\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+/** EArmObjRootComplex token fixer.\r
+\r
+  CmObjectToken fixer function that updates the Tokens in the CmObjects.\r
+\r
+  @param [in]  CmObject    Pointer to the Configuration Manager Object.\r
+  @param [in]  Token       Token to be updated in the CmObject.\r
+\r
+  @retval EFI_SUCCESS           Success.\r
+  @retval EFI_INVALID_PARAMETER A parameter is invalid.\r
+  @retval EFI_UNSUPPORTED       Not supported.\r
+**/\r
+STATIC\r
+EFI_STATUS\r
+EFIAPI\r
+TokenFixerRootComplexNode (\r
+  IN  CM_OBJ_DESCRIPTOR  *CmObject,\r
+  IN  CM_OBJECT_TOKEN    Token\r
+  )\r
+{\r
+  ASSERT (CmObject != NULL);\r
+  ((CM_ARM_ROOT_COMPLEX_NODE *)CmObject->Data)->Token = Token;\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+/** EArmObjSmmuV3 token fixer.\r
+\r
+  CmObjectToken fixer function that updates the Tokens in the CmObjects.\r
+\r
+  @param [in]  CmObject    Pointer to the Configuration Manager Object.\r
+  @param [in]  Token       Token to be updated in the CmObject.\r
+\r
+  @retval EFI_SUCCESS           Success.\r
+  @retval EFI_INVALID_PARAMETER A parameter is invalid.\r
+  @retval EFI_UNSUPPORTED       Not supported.\r
+**/\r
+STATIC\r
+EFI_STATUS\r
+EFIAPI\r
+TokenFixerSmmuV3Node (\r
+  IN  CM_OBJ_DESCRIPTOR  *CmObject,\r
+  IN  CM_OBJECT_TOKEN    Token\r
+  )\r
+{\r
+  ASSERT (CmObject != NULL);\r
+  ((CM_ARM_SMMUV3_NODE *)CmObject->Data)->Token = Token;\r
+  return EFI_SUCCESS;\r
+}\r
+\r
 /** TokenFixer functions table.\r
 \r
   A CmObj having a CM_OBJECT_TOKEN field might need to have its\r
@@ -90,10 +162,10 @@ CM_OBJECT_TOKEN_FIXER  TokenFixer[EArmObjMax] = {
   NULL,                             ///< 16 - Hypervisor Vendor Id\r
   NULL,                             ///< 17 - Fixed feature flags for FADT\r
   TokenFixerItsGroup,               ///< 18 - ITS Group\r
-  TokenFixerNotImplemented,         ///< 19 - Named Component\r
-  TokenFixerNotImplemented,         ///< 20 - Root Complex\r
+  TokenFixerNamedComponentNode,     ///< 19 - Named Component\r
+  TokenFixerRootComplexNode,        ///< 20 - Root Complex\r
   TokenFixerNotImplemented,         ///< 21 - SMMUv1 or SMMUv2\r
-  TokenFixerNotImplemented,         ///< 22 - SMMUv3\r
+  TokenFixerSmmuV3Node,             ///< 22 - SMMUv3\r
   TokenFixerNotImplemented,         ///< 23 - PMCG\r
   NULL,                             ///< 24 - GIC ITS Identifier Array\r
   NULL,                             ///< 25 - ID Mapping Array\r