REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the DynamicTablesPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
		
			
				
	
	
		
			143 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   AML Utility.
 | |
| 
 | |
|   Copyright (c) 2019 - 2021, Arm Limited. All rights reserved.<BR>
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| **/
 | |
| 
 | |
| #ifndef AML_UTILITY_H_
 | |
| #define AML_UTILITY_H_
 | |
| 
 | |
| #include <AmlNodeDefines.h>
 | |
| 
 | |
| /** 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
 | |
|   );
 | |
| 
 | |
| /** Get the value contained in an integer node.
 | |
| 
 | |
|   @param  [in]  Node    Pointer to an integer node.
 | |
|                         Must be an object node.
 | |
|   @param  [out] Value   Value contained in the integer node.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The function completed successfully.
 | |
|   @retval EFI_INVALID_PARAMETER   Invalid parameter.
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| AmlNodeGetIntegerValue (
 | |
|   IN  AML_OBJECT_NODE  *Node,
 | |
|   OUT UINT64           *Value
 | |
|   );
 | |
| 
 | |
| /** 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
 | |
|   );
 | |
| 
 | |
| /** Find and set the EndTag's Checksum of a list of Resource Data elements.
 | |
| 
 | |
|   Lists of Resource Data elements end with an EndTag (most of the time). This
 | |
|   function finds the EndTag (if present) in a list of Resource Data elements
 | |
|   and sets the checksum.
 | |
| 
 | |
|   ACPI 6.4, s6.4.2.9 "End Tag":
 | |
|   "This checksum is generated such that adding it to the sum of all the data
 | |
|   bytes will produce a zero sum."
 | |
|   "If the checksum field is zero, the resource data is treated as if the
 | |
|   checksum operation succeeded. Configuration proceeds normally."
 | |
| 
 | |
|   To avoid re-computing checksums, if a new resource data elements is
 | |
|   added/removed/modified in a list of resource data elements, the AmlLib
 | |
|   resets the checksum to 0.
 | |
| 
 | |
|   @param [in]  BufferOpNode   Node having a list of Resource Data elements.
 | |
|   @param [in]  CheckSum       CheckSum to store in the EndTag.
 | |
|                               To ignore/avoid computing the checksum,
 | |
|                               give 0.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The function completed successfully.
 | |
|   @retval EFI_INVALID_PARAMETER   Invalid parameter.
 | |
|   @retval EFI_NOT_FOUND           No EndTag found.
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| AmlSetRdListCheckSum (
 | |
|   IN  AML_OBJECT_NODE  *BufferOpNode,
 | |
|   IN  UINT8            CheckSum
 | |
|   );
 | |
| 
 | |
| #endif // AML_UTILITY_H_
 |