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_
 |