To be compliant with the UEFI specification it is required to update SERIAL_IO_MODE with the values set. This prototype change allows to get the value used inside SerialPortSetAttributes(). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <Olivier.martin@arm.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14365 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			104 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Serial I/O Port library functions with no library constructor/destructor
 | 
						|
 | 
						|
  Copyright (c) 2012-2013, ARM Ltd. All rights reserved.<BR>
 | 
						|
  
 | 
						|
  This program and the accompanying materials
 | 
						|
  are licensed and made available under the terms and conditions of the BSD License
 | 
						|
  which accompanies this distribution.  The full text of the license may be found at
 | 
						|
  http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include <Base.h>
 | 
						|
 | 
						|
#include <Library/IoLib.h>
 | 
						|
#include <Library/PcdLib.h>
 | 
						|
#include <Library/SerialPortExtLib.h>
 | 
						|
 | 
						|
#include <Drivers/PL011Uart.h>
 | 
						|
 | 
						|
/**
 | 
						|
  Set new attributes to PL011.
 | 
						|
 | 
						|
  @param  BaudRate                The baud rate of the serial device. If the baud rate is not supported,
 | 
						|
                                  the speed will be reduced down to the nearest supported one and the
 | 
						|
                                  variable's value will be updated accordingly.
 | 
						|
  @param  ReceiveFifoDepth        The number of characters the device will buffer on input. If the specified
 | 
						|
                                  value is not supported, the variable's value will be reduced down to the
 | 
						|
                                  nearest supported one.
 | 
						|
  @param  Timeout                 If applicable, the number of microseconds the device will wait
 | 
						|
                                  before timing out a Read or a Write operation.
 | 
						|
  @param  Parity                  If applicable, this is the EFI_PARITY_TYPE that is computed or checked
 | 
						|
                                  as each character is transmitted or received. If the device does not
 | 
						|
                                  support parity, the value is the default parity value.
 | 
						|
  @param  DataBits                The number of data bits in each character
 | 
						|
  @param  StopBits                If applicable, the EFI_STOP_BITS_TYPE number of stop bits per character.
 | 
						|
                                  If the device does not support stop bits, the value is the default stop
 | 
						|
                                  bit value.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             All attributes were set correctly on the serial device.
 | 
						|
  @retval EFI_INVALID_PARAMETERS  One or more of the attributes has an unsupported value.
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerialPortSetAttributes (
 | 
						|
  IN OUT UINT64              *BaudRate,
 | 
						|
  IN OUT UINT32              *ReceiveFifoDepth,
 | 
						|
  IN OUT UINT32              *Timeout,
 | 
						|
  IN OUT EFI_PARITY_TYPE     *Parity,
 | 
						|
  IN OUT UINT8               *DataBits,
 | 
						|
  IN OUT EFI_STOP_BITS_TYPE  *StopBits
 | 
						|
  )
 | 
						|
{
 | 
						|
  return PL011UartInitializePort (
 | 
						|
        (UINTN)PcdGet64 (PcdSerialRegisterBase),
 | 
						|
        BaudRate,
 | 
						|
        ReceiveFifoDepth,
 | 
						|
        Parity,
 | 
						|
        DataBits,
 | 
						|
        StopBits);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Set the serial device control bits.
 | 
						|
 | 
						|
  @param  Control                 Control bits which are to be set on the serial device.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The new control bits were set on the serial device.
 | 
						|
  @retval EFI_UNSUPPORTED         The serial device does not support this operation.
 | 
						|
  @retval EFI_DEVICE_ERROR        The serial device is not functioning correctly.
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerialPortSetControl (
 | 
						|
  IN UINT32                  Control
 | 
						|
  )
 | 
						|
{
 | 
						|
  return PL011UartSetControl ((UINTN)PcdGet64 (PcdSerialRegisterBase), Control);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Get the serial device control bits.
 | 
						|
 | 
						|
  @param  Control                 Control signals read from the serial device.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The control bits were read from the serial device.
 | 
						|
  @retval EFI_DEVICE_ERROR        The serial device is not functioning correctly.
 | 
						|
 | 
						|
**/
 | 
						|
RETURN_STATUS
 | 
						|
EFIAPI
 | 
						|
SerialPortGetControl (
 | 
						|
  OUT UINT32                  *Control
 | 
						|
  )
 | 
						|
{
 | 
						|
  return PL011UartGetControl ((UINTN)PcdGet64 (PcdSerialRegisterBase), Control);
 | 
						|
}
 | 
						|
 |