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