Fix various typos in EmbeddedPkg. Signed-off-by: Coeur <coeur@gmx.fr> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
		
			
				
	
	
		
			182 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Basic serial IO abstraction for GDB
 | 
						|
 | 
						|
  Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
 | 
						|
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include <Uefi.h>
 | 
						|
#include <Library/GdbSerialLib.h>
 | 
						|
#include <Library/PcdLib.h>
 | 
						|
#include <Library/IoLib.h>
 | 
						|
#include <Library/DebugLib.h>
 | 
						|
#include <Library/UefiBootServicesTableLib.h>
 | 
						|
 | 
						|
#include <Protocol/DebugPort.h>
 | 
						|
 | 
						|
 | 
						|
EFI_DEBUGPORT_PROTOCOL  *gDebugPort = NULL;
 | 
						|
UINTN                   gTimeOut = 0;
 | 
						|
 | 
						|
/**
 | 
						|
  The constructor function initializes the UART.
 | 
						|
 | 
						|
  @param  ImageHandle   The firmware allocated handle for the EFI image.
 | 
						|
  @param  SystemTable   A pointer to the EFI System Table.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
GdbSerialLibDebugPortConstructor (
 | 
						|
  IN EFI_HANDLE        ImageHandle,
 | 
						|
  IN EFI_SYSTEM_TABLE  *SystemTable
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_STATUS    Status;
 | 
						|
 | 
						|
  Status = gBS->LocateProtocol (&gEfiDebugPortProtocolGuid, NULL, (VOID **)&gDebugPort);
 | 
						|
  if (!EFI_ERROR (Status)) {
 | 
						|
    gTimeOut = PcdGet32 (PcdGdbMaxPacketRetryCount);
 | 
						|
    gDebugPort->Reset (gDebugPort);
 | 
						|
  }
 | 
						|
 | 
						|
  return Status;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Sets the baud rate, receive FIFO depth, transmit/receive time out, parity,
 | 
						|
  data buts, and stop bits on a serial device. This call is optional as the serial
 | 
						|
  port will be set up with defaults base on PCD values.
 | 
						|
 | 
						|
  @param  BaudRate         The requested baud rate. A BaudRate value of 0 will use the the
 | 
						|
                           device's default interface speed.
 | 
						|
  @param  Parity           The type of parity to use on this serial device. A Parity value of
 | 
						|
                           DefaultParity will use the device's default parity value.
 | 
						|
  @param  DataBits         The number of data bits to use on the serial device. A DataBits
 | 
						|
                           value of 0 will use the device's default data bit setting.
 | 
						|
  @param  StopBits         The number of stop bits to use on this serial device. A StopBits
 | 
						|
                           value of DefaultStopBits will use the device's default number of
 | 
						|
                           stop bits.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS      The device was configured.
 | 
						|
  @retval EFI_DEVICE_ERROR The serial device could not be configured.
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
GdbSerialInit (
 | 
						|
  IN UINT64     BaudRate,
 | 
						|
  IN UINT8      Parity,
 | 
						|
  IN UINT8      DataBits,
 | 
						|
  IN UINT8      StopBits
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_STATUS  Status;
 | 
						|
 | 
						|
  Status = gDebugPort->Reset (gDebugPort);
 | 
						|
  return Status;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Check to see if a character is available from GDB. Do not read the character as that is
 | 
						|
  done via GdbGetChar().
 | 
						|
 | 
						|
  @return TRUE  - Character available
 | 
						|
  @return FALSE - Character not available
 | 
						|
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
EFIAPI
 | 
						|
GdbIsCharAvailable (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_STATUS  Status;
 | 
						|
 | 
						|
  Status = gDebugPort->Poll (gDebugPort);
 | 
						|
 | 
						|
  return (Status == EFI_SUCCESS ? TRUE : FALSE);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Get a character from GDB. This function must be able to run in interrupt context.
 | 
						|
 | 
						|
  @return A character from GDB
 | 
						|
 | 
						|
**/
 | 
						|
CHAR8
 | 
						|
EFIAPI
 | 
						|
GdbGetChar (
 | 
						|
  VOID
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_STATUS  Status;
 | 
						|
  CHAR8       Char;
 | 
						|
  UINTN       BufferSize;
 | 
						|
 | 
						|
  do {
 | 
						|
    BufferSize = sizeof (Char);
 | 
						|
    Status = gDebugPort->Read (gDebugPort, gTimeOut, &BufferSize, &Char);
 | 
						|
  } while (EFI_ERROR (Status) || BufferSize != sizeof (Char));
 | 
						|
 | 
						|
  return Char;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Send a character to GDB. This function must be able to run in interrupt context.
 | 
						|
 | 
						|
 | 
						|
  @param  Char    Send a character to GDB
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
GdbPutChar (
 | 
						|
  IN  CHAR8   Char
 | 
						|
  )
 | 
						|
{
 | 
						|
  EFI_STATUS  Status;
 | 
						|
  UINTN       BufferSize;
 | 
						|
 | 
						|
  do {
 | 
						|
    BufferSize = sizeof (Char);
 | 
						|
    Status = gDebugPort->Write (gDebugPort, gTimeOut, &BufferSize, &Char);
 | 
						|
  } while (EFI_ERROR (Status) || BufferSize != sizeof (Char));
 | 
						|
 | 
						|
  return;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Send an ASCII string to GDB. This function must be able to run in interrupt context.
 | 
						|
 | 
						|
 | 
						|
  @param  String    Send a string to GDB
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
VOID
 | 
						|
GdbPutString (
 | 
						|
  IN CHAR8  *String
 | 
						|
  )
 | 
						|
{
 | 
						|
 // We could performance enhance this function by calling gDebugPort->Write ()
 | 
						|
  while (*String != '\0') {
 | 
						|
    GdbPutChar (*String);
 | 
						|
    String++;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |