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>
		
			
				
	
	
		
			151 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  AML Resource Data Code Generation.
 | 
						|
 | 
						|
  Copyright (c) 2019 - 2021, Arm Limited. All rights reserved.<BR>
 | 
						|
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef AML_RESOURCE_DATA_CODE_GEN_H_
 | 
						|
#define AML_RESOURCE_DATA_CODE_GEN_H_
 | 
						|
 | 
						|
/** Code generation for the "Interrupt ()" ASL function.
 | 
						|
 | 
						|
  The Resource Data effectively created is an Extended Interrupt Resource
 | 
						|
  Data. Cf ACPI 6.4:
 | 
						|
   - s6.4.3.6 "Extended Interrupt Descriptor"
 | 
						|
   - s19.6.64 "Interrupt (Interrupt Resource Descriptor Macro)"
 | 
						|
 | 
						|
  The created resource data node can be:
 | 
						|
   - appended to the list of resource data elements of the NameOpNode.
 | 
						|
     In such case NameOpNode must be defined by a the "Name ()" ASL statement
 | 
						|
     and initially contain a "ResourceTemplate ()".
 | 
						|
   - returned through the NewRdNode parameter.
 | 
						|
 | 
						|
  @param  [in]  ResourceConsumer The device consumes the specified interrupt
 | 
						|
                                 or produces it for use by a child device.
 | 
						|
  @param  [in]  EdgeTriggered    The interrupt is edge triggered or
 | 
						|
                                 level triggered.
 | 
						|
  @param  [in]  ActiveLow        The interrupt is active-high or active-low.
 | 
						|
  @param  [in]  Shared           The interrupt can be shared with other
 | 
						|
                                 devices or not (Exclusive).
 | 
						|
  @param  [in]  IrqList          Interrupt list. Must be non-NULL.
 | 
						|
  @param  [in]  IrqCount         Interrupt count. Must be non-zero.
 | 
						|
  @param  [in]  NameOpNode       NameOp object node defining a named object.
 | 
						|
                                 If provided, append the new resource data node
 | 
						|
                                 to the list of resource data elements of this
 | 
						|
                                 node.
 | 
						|
  @param  [out] NewRdNode        If provided and success,
 | 
						|
                                 contain the created node.
 | 
						|
 | 
						|
  @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
 | 
						|
AmlCodeGenRdInterrupt (
 | 
						|
  IN  BOOLEAN                 ResourceConsumer,
 | 
						|
  IN  BOOLEAN                 EdgeTriggered,
 | 
						|
  IN  BOOLEAN                 ActiveLow,
 | 
						|
  IN  BOOLEAN                 Shared,
 | 
						|
  IN  UINT32                  *IrqList,
 | 
						|
  IN  UINT8                   IrqCount,
 | 
						|
  IN  AML_OBJECT_NODE_HANDLE  NameOpNode  OPTIONAL,
 | 
						|
  OUT AML_DATA_NODE_HANDLE    *NewRdNode  OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/** Code generation for the "Register ()" ASL function.
 | 
						|
 | 
						|
  The Resource Data effectively created is a Generic Register Descriptor.
 | 
						|
  Data. Cf ACPI 6.4:
 | 
						|
   - s6.4.3.7 "Generic Register Descriptor".
 | 
						|
   - s19.6.114 "Register".
 | 
						|
 | 
						|
  The created resource data node can be:
 | 
						|
   - appended to the list of resource data elements of the NameOpNode.
 | 
						|
     In such case NameOpNode must be defined by a the "Name ()" ASL statement
 | 
						|
     and initially contain a "ResourceTemplate ()".
 | 
						|
   - returned through the NewRdNode parameter.
 | 
						|
 | 
						|
  @param [in]  AddressSpace    Address space where the register exists.
 | 
						|
                               Can be one of I/O space, System Memory, etc.
 | 
						|
  @param [in]  BitWidth        Number of bits in the register.
 | 
						|
  @param [in]  BitOffset       Offset in bits from the start of the register
 | 
						|
                               indicated by the Address.
 | 
						|
  @param [in]  Address         Register address.
 | 
						|
  @param [in]  AccessSize      Size of data values used when accessing the
 | 
						|
                               address space. Can be one of:
 | 
						|
                                 0 - Undefined, legacy (EFI_ACPI_6_4_UNDEFINED)
 | 
						|
                                 1 - Byte access (EFI_ACPI_6_4_BYTE)
 | 
						|
                                 2 - Word access (EFI_ACPI_6_4_WORD)
 | 
						|
                                 3 - DWord access (EFI_ACPI_6_4_DWORD)
 | 
						|
                                 4 - QWord access (EFI_ACPI_6_4_QWORD)
 | 
						|
  @param  [in]  NameOpNode       NameOp object node defining a named object.
 | 
						|
                                 If provided, append the new resource data node
 | 
						|
                                 to the list of resource data elements of this
 | 
						|
                                 node.
 | 
						|
  @param  [out] NewRdNode        If provided and success,
 | 
						|
                                 contain the created node.
 | 
						|
 | 
						|
  @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
 | 
						|
AmlCodeGenRdRegister (
 | 
						|
  IN  UINT8                   AddressSpace,
 | 
						|
  IN  UINT8                   BitWidth,
 | 
						|
  IN  UINT8                   BitOffset,
 | 
						|
  IN  UINT64                  Address,
 | 
						|
  IN  UINT8                   AccessSize,
 | 
						|
  IN  AML_OBJECT_NODE_HANDLE  NameOpNode  OPTIONAL,
 | 
						|
  OUT AML_DATA_NODE_HANDLE    *NewRdNode  OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
/** Code generation for the EndTag resource data.
 | 
						|
 | 
						|
  The EndTag resource data is automatically generated by the ASL compiler
 | 
						|
  at the end of a list of resource data elements. Thus, it doesn't have
 | 
						|
  a corresponding ASL function.
 | 
						|
 | 
						|
  This function allocates memory to create a data node. It is the caller's
 | 
						|
  responsibility to either:
 | 
						|
   - attach this node to an AML tree;
 | 
						|
   - delete this node.
 | 
						|
 | 
						|
  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]  CheckSum        CheckSum to store in the EndTag.
 | 
						|
                               To ignore/avoid computing the checksum,
 | 
						|
                               give 0.
 | 
						|
  @param [in]  ParentNode      If not NULL, add the generated node
 | 
						|
                               to the end of the variable list of
 | 
						|
                               argument of the ParentNode.
 | 
						|
                               The ParentNode must not initially contain
 | 
						|
                               an EndTag resource data element.
 | 
						|
  @param  [out] NewRdNode      If success, contains the generated node.
 | 
						|
 | 
						|
  @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
 | 
						|
AmlCodeGenEndTag (
 | 
						|
  IN  UINT8            CheckSum    OPTIONAL,
 | 
						|
  IN  AML_OBJECT_NODE  *ParentNode  OPTIONAL,
 | 
						|
  OUT AML_DATA_NODE    **NewRdNode   OPTIONAL
 | 
						|
  );
 | 
						|
 | 
						|
#endif // AML_RESOURCE_DATA_CODE_GEN_H_
 |