/** @file | |
Configuration manager Object Descriptor Utility. | |
Copyright (c) 2021, ARM Limited. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef CM_OBJECT_DESC_UTILITY_H_ | |
#define CM_OBJECT_DESC_UTILITY_H_ | |
#include <ConfigurationManagerObject.h> | |
#include "FdtHwInfoParser.h" | |
/** Create a CM_OBJ_DESCRIPTOR. | |
@param [in] ObjectId CM_OBJECT_ID of the node. | |
@param [in] Count Number of CmObj stored in the | |
data field. | |
@param [in] Data Pointer to one or more CmObj objects. | |
The content of this Data buffer is copied. | |
@param [in] Size Size of the Data buffer. | |
@param [out] NewCmObjDesc The created CM_OBJ_DESCRIPTOR. | |
@retval EFI_SUCCESS The function completed successfully. | |
@retval EFI_INVALID_PARAMETER Invalid parameter. | |
@retval EFI_OUT_OF_RESOURCES An allocation has failed. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
CreateCmObjDesc ( | |
IN CM_OBJECT_ID ObjectId, | |
IN UINT32 Count, | |
IN VOID *Data, | |
IN UINT32 Size, | |
OUT CM_OBJ_DESCRIPTOR **NewCmObjDesc | |
); | |
/** Free resources allocated for the CM_OBJ_DESCRIPTOR. | |
@param [in] CmObjDesc Pointer to the CM_OBJ_DESCRIPTOR. | |
@retval EFI_SUCCESS The function completed successfully. | |
@retval EFI_INVALID_PARAMETER Invalid parameter. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
FreeCmObjDesc ( | |
IN CM_OBJ_DESCRIPTOR *CmObjDesc | |
); | |
/** Add a single CmObj to the Configuration Manager. | |
@param [in] FdtParserHandle A handle to the parser instance. | |
@param [in] ObjectId CmObj ObjectId. | |
@param [in] Data CmObj Data. | |
@param [in] Size CmObj Size. | |
@param [out] Token If provided and success, | |
token generated for this CmObj. | |
@retval EFI_SUCCESS The function completed successfully. | |
@retval EFI_INVALID_PARAMETER Invalid parameter. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
AddSingleCmObj ( | |
IN CONST FDT_HW_INFO_PARSER_HANDLE FdtParserHandle, | |
IN CM_OBJECT_ID ObjectId, | |
IN VOID *Data, | |
IN UINT32 Size, | |
OUT CM_OBJECT_TOKEN *Token OPTIONAL | |
); | |
/** Add multiple CmObj to the Configuration Manager. | |
@param [in] FdtParserHandle A handle to the parser instance. | |
@param [in] CmObjDesc CmObjDesc containing multiple CmObj | |
to add. | |
@param [in] TokenCount If provided, count of entries in the | |
TokenTable. | |
@param [out] TokenTable If provided and success, | |
token generated for these CmObj. | |
Address of an array of CM_OBJECT_TOKEN | |
with the same number of elements as the | |
CmObjDesc. | |
@retval EFI_SUCCESS The function completed successfully. | |
@retval EFI_INVALID_PARAMETER Invalid parameter. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
AddMultipleCmObj ( | |
IN CONST FDT_HW_INFO_PARSER_HANDLE FdtParserHandle, | |
IN CONST CM_OBJ_DESCRIPTOR *CmObjDesc, | |
IN UINT32 TokenCount, OPTIONAL | |
OUT CM_OBJECT_TOKEN *TokenTable OPTIONAL | |
); | |
/** Add multiple CmObj to the Configuration Manager. | |
Get one token referencing a EArmObjCmRef CmObj itself referencing | |
the input CmObj. In the table below, RefToken is returned. | |
Token referencing an Array of tokens Array of CmObj | |
array of EArmObjCmRef referencing each from the input: | |
CmObj: CmObj from the input: | |
RefToken ---> CmObjToken[0] ---> CmObj[0] | |
CmObjToken[1] ---> CmObj[1] | |
CmObjToken[2] ---> CmObj[2] | |
@param [in] FdtParserHandle A handle to the parser instance. | |
@param [in] CmObjDesc CmObjDesc containing multiple CmObj | |
to add. | |
@param [out] Token If success, token referencing an array | |
of EArmObjCmRef CmObj, themselves | |
referencing the input CmObjs. | |
@retval EFI_SUCCESS The function completed successfully. | |
@retval EFI_INVALID_PARAMETER Invalid parameter. | |
@retval EFI_OUT_OF_RESOURCES An allocation has failed. | |
**/ | |
EFI_STATUS | |
EFIAPI | |
AddMultipleCmObjWithCmObjRef ( | |
IN CONST FDT_HW_INFO_PARSER_HANDLE FdtParserHandle, | |
IN CM_OBJ_DESCRIPTOR *CmObjDesc, | |
OUT CM_OBJECT_TOKEN *Token | |
); | |
#endif // CM_OBJECT_DESC_UTILITY_H_ |