REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the ShellPkg 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: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			148 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  SPCR table parser
 | 
						|
 | 
						|
  Copyright (c) 2016 - 2019, ARM Limited. All rights reserved.
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
  @par Reference(s):
 | 
						|
    - Microsoft Serial Port Console Redirection Table
 | 
						|
      Specification - Version 1.03 - August 10, 2015.
 | 
						|
**/
 | 
						|
 | 
						|
#include <IndustryStandard/Acpi.h>
 | 
						|
#include <IndustryStandard/SerialPortConsoleRedirectionTable.h>
 | 
						|
#include <Library/UefiLib.h>
 | 
						|
#include "AcpiParser.h"
 | 
						|
#include "AcpiTableParser.h"
 | 
						|
 | 
						|
// Local variables
 | 
						|
STATIC ACPI_DESCRIPTION_HEADER_INFO  AcpiHdrInfo;
 | 
						|
 | 
						|
/**
 | 
						|
  This function validates the Interrupt Type.
 | 
						|
 | 
						|
  @param [in] Ptr     Pointer to the start of the field data.
 | 
						|
  @param [in] Context Pointer to context specific information e.g. this
 | 
						|
                      could be a pointer to the ACPI table header.
 | 
						|
**/
 | 
						|
STATIC
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
ValidateInterruptType (
 | 
						|
  IN UINT8  *Ptr,
 | 
						|
  IN VOID   *Context
 | 
						|
  )
 | 
						|
{
 | 
						|
 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
						|
  UINT8  InterruptType;
 | 
						|
 | 
						|
  InterruptType = *Ptr;
 | 
						|
 | 
						|
  if (InterruptType !=
 | 
						|
      EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_INTERRUPT_TYPE_GIC)
 | 
						|
  {
 | 
						|
    IncrementErrorCount ();
 | 
						|
    Print (
 | 
						|
      L"\nERROR: InterruptType = %d. This must be 8 on ARM Platforms",
 | 
						|
      InterruptType
 | 
						|
      );
 | 
						|
  }
 | 
						|
 | 
						|
 #endif
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  This function validates the Irq.
 | 
						|
 | 
						|
  @param [in] Ptr     Pointer to the start of the field data.
 | 
						|
  @param [in] Context Pointer to context specific information e.g. this
 | 
						|
                      could be a pointer to the ACPI table header.
 | 
						|
**/
 | 
						|
STATIC
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
ValidateIrq (
 | 
						|
  IN UINT8  *Ptr,
 | 
						|
  IN VOID   *Context
 | 
						|
  )
 | 
						|
{
 | 
						|
 #if defined (MDE_CPU_ARM) || defined (MDE_CPU_AARCH64)
 | 
						|
  UINT8  Irq;
 | 
						|
 | 
						|
  Irq = *Ptr;
 | 
						|
 | 
						|
  if (Irq != 0) {
 | 
						|
    IncrementErrorCount ();
 | 
						|
    Print (
 | 
						|
      L"\nERROR: Irq = %d. This must be zero on ARM Platforms\n",
 | 
						|
      Irq
 | 
						|
      );
 | 
						|
  }
 | 
						|
 | 
						|
 #endif
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  An ACPI_PARSER array describing the ACPI SPCR Table.
 | 
						|
**/
 | 
						|
STATIC CONST ACPI_PARSER  SpcrParser[] = {
 | 
						|
  PARSE_ACPI_HEADER (&AcpiHdrInfo),
 | 
						|
  { L"Interface Type",             1,   36, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"Reserved",                   3,   37, L"%x %x %x", Dump3Chars, NULL, NULL,                  NULL },
 | 
						|
  { L"Base Address",               12,  40, NULL,        DumpGas,    NULL, NULL,                  NULL },
 | 
						|
  { L"Interrupt Type",             1,   52, L"%d",       NULL,       NULL, ValidateInterruptType, NULL },
 | 
						|
  { L"IRQ",                        1,   53, L"%d",       NULL,       NULL, ValidateIrq,           NULL },
 | 
						|
  { L"Global System Interrupt",    4,   54, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"Baud Rate",                  1,   58, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"Parity",                     1,   59, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"Stop Bits",                  1,   60, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"Flow Control",               1,   61, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"Terminal Type",              1,   62, L"%d",       NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"Reserved",                   1,   63, L"%x",       NULL,       NULL, NULL,                  NULL },
 | 
						|
 | 
						|
  { L"PCI Device ID",              2,   64, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"PCI Vendor ID",              2,   66, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"PCI Bus Number",             1,   68, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"PCI Device Number",          1,   69, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"PCI Function Number",        1,   70, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"PCI Flags",                  4,   71, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"PCI Segment",                1,   75, L"0x%x",     NULL,       NULL, NULL,                  NULL },
 | 
						|
  { L"Reserved",                   4,   76, L"%x",       NULL,       NULL, NULL,                  NULL }
 | 
						|
};
 | 
						|
 | 
						|
/**
 | 
						|
  This function parses the ACPI SPCR table.
 | 
						|
  When trace is enabled this function parses the SPCR table and
 | 
						|
  traces the ACPI table fields.
 | 
						|
 | 
						|
  This function also performs validations of the ACPI table fields.
 | 
						|
 | 
						|
  @param [in] Trace              If TRUE, trace the ACPI fields.
 | 
						|
  @param [in] Ptr                Pointer to the start of the buffer.
 | 
						|
  @param [in] AcpiTableLength    Length of the ACPI table.
 | 
						|
  @param [in] AcpiTableRevision  Revision of the ACPI table.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
ParseAcpiSpcr (
 | 
						|
  IN BOOLEAN  Trace,
 | 
						|
  IN UINT8    *Ptr,
 | 
						|
  IN UINT32   AcpiTableLength,
 | 
						|
  IN UINT8    AcpiTableRevision
 | 
						|
  )
 | 
						|
{
 | 
						|
  if (!Trace) {
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  // Dump the SPCR
 | 
						|
  ParseAcpi (
 | 
						|
    TRUE,
 | 
						|
    0,
 | 
						|
    "SPCR",
 | 
						|
    Ptr,
 | 
						|
    AcpiTableLength,
 | 
						|
    PARSER_PARAMS (SpcrParser)
 | 
						|
    );
 | 
						|
}
 |