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>
		
			
				
	
	
		
			78 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  AML Field List.
 | 
						|
 | 
						|
  Copyright (c) 2019 - 2020, Arm Limited. All rights reserved.<BR>
 | 
						|
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef AML_FIELD_LIST_PARSER_H_
 | 
						|
#define AML_FIELD_LIST_PARSER_H_
 | 
						|
 | 
						|
#include <AmlNodeDefines.h>
 | 
						|
#include <Stream/AmlStream.h>
 | 
						|
 | 
						|
/** Parse the FieldList contained in the stream.
 | 
						|
 | 
						|
  Create an object node for each field element parsed in the field list
 | 
						|
  available in the Stream, and add them to the variable list of arguments
 | 
						|
  of the FieldNode.
 | 
						|
 | 
						|
  Nodes that can have a field list are referred as field nodes. They have the
 | 
						|
  AML_HAS_FIELD_LIST attribute.
 | 
						|
 | 
						|
  According to the ACPI 6.3 specification, s20.2.5.2 "Named Objects Encoding",
 | 
						|
  field elements can be:
 | 
						|
   - NamedField           := NameSeg PkgLength;
 | 
						|
   - ReservedField        := 0x00 PkgLength;
 | 
						|
   - AccessField          := 0x01 AccessType AccessAttrib;
 | 
						|
   - ConnectField         := <0x02 NameString> | <0x02 BufferData>;
 | 
						|
   - ExtendedAccessField  := 0x03 AccessType ExtendedAccessAttrib AccessLength.
 | 
						|
 | 
						|
  A small set of opcodes describes the field elements. They are referred as
 | 
						|
  field opcodes. An AML_BYTE_ENCODING table has been created for field OpCodes.
 | 
						|
  Field elements:
 | 
						|
   - don't have a SubOpCode;
 | 
						|
   - have at most 3 fixed arguments (as opposed to 6 for standard AML objects);
 | 
						|
   - don't have a variable list of arguments;
 | 
						|
   - only the NamedField field element is part of the AML namespace.
 | 
						|
 | 
						|
  ConnectField's BufferData is a buffer node containing a single
 | 
						|
  resource data element.
 | 
						|
  NamedField field elements don't have an AML OpCode. NameSeg starts with a
 | 
						|
  Char type and can thus be differentiated from the Opcodes for other fields.
 | 
						|
  A pseudo OpCode has been created to simplify the parser.
 | 
						|
 | 
						|
  The branch created from parsing a field node is as:
 | 
						|
  (FieldNode)
 | 
						|
      \
 | 
						|
       |- [FixedArg[0]][FixedArg[1]]                      # Fixed Arguments
 | 
						|
       |- {(FieldElement[0])->(FieldElement[1])->...)}    # Variable Arguments
 | 
						|
 | 
						|
  With FieldElement[n] being one of NamedField, ReservedField, AccessField,
 | 
						|
  ConnectField, ExtendedAccessField.
 | 
						|
 | 
						|
  @param  [in]  FieldNode         Field node.
 | 
						|
                                  Must have the AML_HAS_FIELD_LIST
 | 
						|
                                  attribute.
 | 
						|
  @param  [in]  FStream           Forward stream pointing to a field list.
 | 
						|
                                  The stream must not be at its end.
 | 
						|
  @param  [in]  NameSpaceRefList  List of namespace reference nodes,
 | 
						|
                                  allowing to associate an absolute
 | 
						|
                                  path to a node in the tree.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The function completed successfully.
 | 
						|
  @retval EFI_BUFFER_TOO_SMALL    No space left in the buffer.
 | 
						|
  @retval EFI_INVALID_PARAMETER   Invalid parameter.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES    Could not allocate memory.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
AmlParseFieldList (
 | 
						|
  IN  AML_OBJECT_NODE  *FieldNode,
 | 
						|
  IN  AML_STREAM       *FStream,
 | 
						|
  IN  LIST_ENTRY       *NameSpaceRefList
 | 
						|
  );
 | 
						|
 | 
						|
#endif // AML_FIELD_LIST_PARSER_H_
 |