/** @file AML Utility. Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef AML_UTILITY_H_ #define AML_UTILITY_H_ #include /** This function computes and updates the ACPI table checksum. @param [in] AcpiTable Pointer to an Acpi table. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. **/ EFI_STATUS EFIAPI AcpiPlatformChecksum ( IN EFI_ACPI_DESCRIPTION_HEADER * AcpiTable ); /** Compute the size of a tree/sub-tree. @param [in] Node Node to compute the size. @param [in, out] Size Pointer holding the computed size. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. **/ EFI_STATUS EFIAPI AmlComputeSize ( IN CONST AML_NODE_HEADER * Node, IN OUT UINT32 * Size ); /** Set the value contained in an integer node. The OpCode is updated accordingly to the new value (e.g.: If the original value was a UINT8 value, then the OpCode would be AML_BYTE_PREFIX. If it the new value is a UINT16 value then the OpCode will be updated to AML_WORD_PREFIX). @param [in] Node Pointer to an integer node. Must be an object node. @param [in] NewValue New value to write in the integer node. @param [out] ValueWidthDiff Difference in number of bytes used to store the new value. Can be negative. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. @retval EFI_OUT_OF_RESOURCES Could not allocate memory. **/ EFI_STATUS EFIAPI AmlNodeSetIntegerValue ( IN AML_OBJECT_NODE * Node, IN UINT64 NewValue, OUT INT8 * ValueWidthDiff ); /** Propagate information up the tree. The information can be a new size, a new number of arguments. @param [in] Node Pointer to a node. Must be a root node or an object node. @param [in] IsIncrement Choose the operation to do: - TRUE: Increment the Node's size and the Node's count; - FALSE: Decrement the Node's size and the Node's count. @param [in] Diff Value to add/subtract to the Node's size. @param [in] NodeCount Number of nodes added/removed. @retval EFI_SUCCESS The function completed successfully. @retval EFI_INVALID_PARAMETER Invalid parameter. **/ EFI_STATUS EFIAPI AmlPropagateInformation ( IN AML_NODE_HEADER * Node, IN BOOLEAN IsIncrement, IN UINT32 Diff, IN UINT8 NodeCount ); #endif // AML_UTILITY_H_