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>
		
			
				
	
	
		
			182 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   AML Defines.
 | |
| 
 | |
|   Copyright (c) 2020 - 2021, Arm Limited. All rights reserved.<BR>
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| **/
 | |
| 
 | |
| #ifndef AML_DEFINES_H_
 | |
| #define AML_DEFINES_H_
 | |
| 
 | |
| /**
 | |
|   @defgroup TreeStructures Tree structures
 | |
|   @ingroup AMLLib
 | |
|   @{
 | |
|     The AML tree created by the AMLLib relies on enum/define values and
 | |
|     structures defined here.
 | |
|   @}
 | |
| */
 | |
| 
 | |
| /** AML tree node types.
 | |
| 
 | |
|   Data nodes are tagged with the data type they contain.
 | |
|   Some data types cannot be used for data nodes (None, Object).
 | |
|   EAmlUIntX types are converted to the EAML_NODE_DATA_TYPE enum type.
 | |
|   These types are accessible externally.
 | |
| 
 | |
|   @ingroup TreeStructures
 | |
| */
 | |
| typedef enum EAmlNodeDataType {
 | |
|   EAmlNodeDataTypeNone = 0,         ///< EAmlNone,   not accessible.
 | |
|   EAmlNodeDataTypeReserved1,        ///< EAmlUInt8,  converted to the UInt type.
 | |
|   EAmlNodeDataTypeReserved2,        ///< EAmlUInt16, converted to the UInt type.
 | |
|   EAmlNodeDataTypeReserved3,        ///< EAmlUInt32, converted to the UInt type.
 | |
|   EAmlNodeDataTypeReserved4,        ///< EAmlUInt64, converted to the UInt type.
 | |
|   EAmlNodeDataTypeReserved5,        ///< EAmlObject, not accessible.
 | |
|   EAmlNodeDataTypeNameString,       ///< EAmlName, name corresponding to the
 | |
|                                     ///  NameString keyword in the ACPI
 | |
|                                     ///  specification. E.g.: "\_SB_.DEV0"
 | |
|   EAmlNodeDataTypeString,           ///< EAmlString, NULL terminated string.
 | |
|   EAmlNodeDataTypeUInt,             ///< Integer data of any length, EAmlUIntX
 | |
|                                     ///  are converted to this type.
 | |
|   EAmlNodeDataTypeRaw,              ///< Raw bytes contained in a buffer.
 | |
|   EAmlNodeDataTypeResourceData,     ///< Resource data element.
 | |
|   EAmlNodeDataTypeFieldPkgLen,      ///< FieldPkgLen data element.
 | |
|                                     ///  PkgLen are usually stored as
 | |
|                                     ///  part of object node structures.
 | |
|                                     ///  However, they can be found
 | |
|                                     ///  standalone in a FieldList.
 | |
|   EAmlNodeDataTypeMax               ///< Max enum.
 | |
| } EAML_NODE_DATA_TYPE;
 | |
| 
 | |
| /** Indexes of fixed arguments.
 | |
| 
 | |
|   AML objects defined the ACPI 6.3 specification,
 | |
|   s20.3 "AML Byte Stream Byte Values" can have at most 6 fixed arguments.
 | |
| 
 | |
|   Method and functions can have at most 7 arguments, cf
 | |
|   s19.6.83 "Method (Declare Control Method)". The enum goes to 8 to store the
 | |
|   name of the method invocation.
 | |
| 
 | |
|   @ingroup TreeStructures
 | |
| */
 | |
| typedef enum EAmlParseIndex {
 | |
|   EAmlParseIndexTerm0 = 0,      ///< First fixed argument index.
 | |
|   EAmlParseIndexTerm1,          ///< Second fixed argument index.
 | |
|   EAmlParseIndexTerm2,          ///< Third fixed argument index.
 | |
|   EAmlParseIndexTerm3,          ///< Fourth fixed argument index.
 | |
|   EAmlParseIndexTerm4,          ///< Fifth fixed argument index.
 | |
|   EAmlParseIndexTerm5,          ///< Sixth fixed argument index.
 | |
|   EAmlParseIndexMax             ///< Maximum fixed argument index (=6).
 | |
| } EAML_PARSE_INDEX;
 | |
| 
 | |
| /** Maximum size of an AML NameString.
 | |
| 
 | |
|  An AML NameString can be at most (255 * 4) + 255 + 2 = 1277 bytes long.
 | |
|  Indeed, according to ACPI 6.3 specification, s20.2.2,
 | |
|  an AML NameString can be resolved as a MultiNamePath.
 | |
| 
 | |
|  The encoding of this MultiNamePath can be made of at most:
 | |
|   - 255 carets ('^'), one for each level in the namespace;
 | |
|   - 255 NameSeg of 4 bytes;
 | |
|   - 2 bytes for the MultiNamePrefix and SegCount.
 | |
| 
 | |
|   @ingroup TreeStructures
 | |
| */
 | |
| #define MAX_AML_NAMESTRING_SIZE  1277U
 | |
| 
 | |
| /** Maximum size of an ASL NameString.
 | |
| 
 | |
|  An ASL NameString can be at most (255 * 4) + 255 + 254 = 1529 bytes long.
 | |
|  Cf the ASL grammar available in ACPI 6.3 specification, 19.2.2.
 | |
| 
 | |
|  The encoding of an ASL NameString can be made of at most:
 | |
|   - 255 carets ('^'), one for each level in the namespace;
 | |
|   - 255 NameSeg of 4 bytes;
 | |
|   - 254 NameSeg separators ('.').
 | |
| 
 | |
|   @ingroup TreeStructures
 | |
| */
 | |
| #define MAX_ASL_NAMESTRING_SIZE  1529U
 | |
| 
 | |
| /** Pseudo OpCode for method invocations.
 | |
| 
 | |
|   The AML grammar does not attribute an OpCode/SubOpCode couple for
 | |
|   method invocations. This library is representing method invocations
 | |
|   as if they had one.
 | |
| 
 | |
|   The AML encoding for method invocations in the ACPI specification 6.3 is:
 | |
|     MethodInvocation := NameString TermArgList
 | |
|   In this library, it is:
 | |
|     MethodInvocation := MethodInvocationOp NameString ArgumentCount TermArgList
 | |
|     ArgumentCount    := ByteData
 | |
| 
 | |
|   When computing the size of a tree or serializing it, the additional data is
 | |
|   not taken into account (i.e. the MethodInvocationOp and the ArgumentCount).
 | |
| 
 | |
|   @ingroup TreeStructures
 | |
| */
 | |
| #define AML_METHOD_INVOC_OP  0xD0
 | |
| 
 | |
| /** Pseudo OpCode for NamedField field elements.
 | |
| 
 | |
|   The AML grammar does not attribute an OpCode/SubOpCode couple for
 | |
|   the NamedField field element. This library is representing NamedField field
 | |
|   elements as if they had one.
 | |
| 
 | |
|   The AML encoding for NamedField field elements in the ACPI specification 6.3
 | |
|   is:
 | |
|     NamedField      := NameSeg PkgLength
 | |
|   In this library, it is:
 | |
|     NamedField      := NamedFieldOp NameSeg PkgLength
 | |
| 
 | |
|   When computing the size of a tree or serializing it, the additional data is
 | |
|   not taken into account (i.e. the NamedFieldOp).
 | |
| 
 | |
|   @ingroup TreeStructures
 | |
| */
 | |
| #define AML_FIELD_NAMED_OP  0x04
 | |
| 
 | |
| /** AML object types.
 | |
| 
 | |
|   The ACPI specification defines several object types. They are listed
 | |
|   with the definition of ObjectTypeKeyword.
 | |
| 
 | |
|   @ingroup TreeStructures
 | |
| */
 | |
| typedef enum EAmlObjType {
 | |
|   EAmlObjTypeUnknown = 0x0,
 | |
|   EAmlObjTypeInt,
 | |
|   EAmlObjTypeStrObj,
 | |
|   EAmlObjTypeBuffObj,
 | |
|   EAmlObjTypePkgObj,
 | |
|   EAmlObjTypeFieldUnitObj,
 | |
|   EAmlObjTypeDeviceObj,
 | |
|   EAmlObjTypeEventObj,
 | |
|   EAmlObjTypeMethodObj,
 | |
|   EAmlObjTypeMutexObj,
 | |
|   EAmlObjTypeOpRegionObj,
 | |
|   EAmlObjTypePowerResObj,
 | |
|   EAmlObjTypeProcessorObj,
 | |
|   EAmlObjTypeThermalZoneObj,
 | |
|   EAmlObjTypeBuffFieldObj,
 | |
|   EAmlObjTypeDDBHandleObj,
 | |
| } EAML_OBJ_TYPE;
 | |
| 
 | |
| /** Node types.
 | |
| 
 | |
|   @ingroup TreeStructures
 | |
| */
 | |
| typedef enum EAmlNodeType {
 | |
|   EAmlNodeUnknown,  ///< Unknown/Invalid AML Node Type.
 | |
|   EAmlNodeRoot,     ///< AML Root Node, typically represents a DefinitionBlock.
 | |
|   EAmlNodeObject,   ///< AML Object Node, typically represents an ASL statement
 | |
|                     ///  or its arguments.
 | |
|   EAmlNodeData,     ///< AML Data Node, typically represents arguments for an
 | |
|                     ///  ASL statement.
 | |
|   EAmlNodeMax       ///< Max enum.
 | |
| } EAML_NODE_TYPE;
 | |
| 
 | |
| #endif // AML_DEFINES_H_
 |