1d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm/** @file 2d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm Serial I/O Port library functions with no library constructor/destructor 3d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 4d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 5d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> 61f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm Copyright (c) 2015, Intel Corporation. All rights reserved.<BR> 7d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 8d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm This program and the accompanying materials 9d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm are licensed and made available under the terms and conditions of the BSD License 10d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm which accompanies this distribution. The full text of the license may be found at 11d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm http://opensource.org/licenses/bsd-license.php 12d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 13d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 14d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 15d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 16d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm**/ 17d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 18d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm#include <Base.h> 19d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm#include <Library/DebugLib.h> 20d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm#include <Library/SerialPortLib.h> 21d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm#include <Library/PcdLib.h> 22d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm#include <Library/IoLib.h> 23d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm#include <Library/OmapLib.h> 24d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm#include <Omap3530/Omap3530.h> 25d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 26d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm/* 27d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 28d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm Programmed hardware of Serial port. 29d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 30d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @return Always return EFI_UNSUPPORTED. 31d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 32d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm**/ 33d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmRETURN_STATUS 34d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmEFIAPI 35d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmSerialPortInitialize ( 36d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm VOID 37d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm ) 38d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm{ 39d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm // assume assembly code at reset vector has setup UART 40d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm return RETURN_SUCCESS; 41d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm} 42d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 43d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm/** 44d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm Write data to serial device. 45d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 46d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @param Buffer Point of data buffer which need to be writed. 47d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @param NumberOfBytes Number of output bytes which are cached in Buffer. 48d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 49d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @retval 0 Write data failed. 50d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @retval !0 Actual number of bytes writed to serial device. 51d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 52d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm**/ 53d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmUINTN 54d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmEFIAPI 55d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmSerialPortWrite ( 56d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm IN UINT8 *Buffer, 57d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm IN UINTN NumberOfBytes 58d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm) 59d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm{ 60d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm UINT32 LSR = UartBase(PcdGet32(PcdOmap35xxConsoleUart)) + UART_LSR_REG; 61d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm UINT32 THR = UartBase(PcdGet32(PcdOmap35xxConsoleUart)) + UART_THR_REG; 62d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm UINTN Count; 63d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 64d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) { 65d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm while ((MmioRead8(LSR) & UART_LSR_TX_FIFO_E_MASK) == UART_LSR_TX_FIFO_E_NOT_EMPTY); 66d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm MmioWrite8(THR, *Buffer); 67d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm } 68d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 69d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm return NumberOfBytes; 70d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm} 71d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 72d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 73d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm/** 74d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm Read data from serial device and save the datas in buffer. 75d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 76d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @param Buffer Point of data buffer which need to be writed. 77d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @param NumberOfBytes Number of output bytes which are cached in Buffer. 78d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 79d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @retval 0 Read data failed. 80d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @retval !0 Aactual number of bytes read from serial device. 81d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 82d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm**/ 83d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmUINTN 84d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmEFIAPI 85d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmSerialPortRead ( 86d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm OUT UINT8 *Buffer, 87d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm IN UINTN NumberOfBytes 88d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm) 89d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm{ 90d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm UINT32 LSR = UartBase(PcdGet32(PcdOmap35xxConsoleUart)) + UART_LSR_REG; 91d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm UINT32 RBR = UartBase(PcdGet32(PcdOmap35xxConsoleUart)) + UART_RBR_REG; 92d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm UINTN Count; 93d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 94d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) { 95d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm while ((MmioRead8(LSR) & UART_LSR_RX_FIFO_E_MASK) == UART_LSR_RX_FIFO_E_EMPTY); 96d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm *Buffer = MmioRead8(RBR); 97d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm } 98d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 99d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm return NumberOfBytes; 100d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm} 101d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 102d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 103d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm/** 104d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm Check to see if any data is avaiable to be read from the debug device. 105d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 106d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @retval EFI_SUCCESS At least one byte of data is avaiable to be read 107d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @retval EFI_NOT_READY No data is avaiable to be read 108d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm @retval EFI_DEVICE_ERROR The serial device is not functioning properly 109d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 110d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm**/ 111d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmBOOLEAN 112d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmEFIAPI 113d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif LindholmSerialPortPoll ( 114d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm VOID 115d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm ) 116d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm{ 117d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm UINT32 LSR = UartBase(PcdGet32(PcdOmap35xxConsoleUart)) + UART_LSR_REG; 118d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 119d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm if ((MmioRead8(LSR) & UART_LSR_RX_FIFO_E_MASK) == UART_LSR_RX_FIFO_E_NOT_EMPTY) { 120d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm return TRUE; 121d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm } else { 122d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm return FALSE; 123d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm } 124d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm} 125d6d2a59a443ba5ba5ba75fbbd176ed9a051d2db0Leif Lindholm 1261f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm/** 1271f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm Sets the control bits on a serial device. 1281f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1291f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @param[in] Control Sets the bits of Control that are settable. 1301f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1311f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_SUCCESS The new control bits were set on the serial device. 1321f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_UNSUPPORTED The serial device does not support this operation. 1331f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_DEVICE_ERROR The serial device is not functioning correctly. 1341f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1351f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm**/ 1361f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif LindholmRETURN_STATUS 1371f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif LindholmEFIAPI 1381f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif LindholmSerialPortSetControl ( 1391f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm IN UINT32 Control 1401f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm ) 1411f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm{ 1421f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm return RETURN_UNSUPPORTED; 1431f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm} 1441f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1451f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm/** 1461f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm Retrieve the status of the control bits on a serial device. 1471f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1481f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @param[out] Control A pointer to return the current control signals from the serial device. 1491f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1501f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_SUCCESS The control bits were read from the serial device. 1511f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_UNSUPPORTED The serial device does not support this operation. 1521f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_DEVICE_ERROR The serial device is not functioning correctly. 1531f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1541f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm**/ 1551f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif LindholmRETURN_STATUS 1561f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif LindholmEFIAPI 1571f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif LindholmSerialPortGetControl ( 1581f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm OUT UINT32 *Control 1591f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm ) 1601f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm{ 1611f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm *Control = 0; 1621f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm if (!SerialPortPoll ()) { 1631f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm *Control = EFI_SERIAL_INPUT_BUFFER_EMPTY; 1641f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm } 1651f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm return RETURN_SUCCESS; 1661f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm} 1671f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1681f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm/** 1691f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm Sets the baud rate, receive FIFO depth, transmit/receice time out, parity, 1701f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm data bits, and stop bits on a serial device. 1711f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1721f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @param BaudRate The requested baud rate. A BaudRate value of 0 will use the 1731f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm device's default interface speed. 1741f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm On output, the value actually set. 1751f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @param ReveiveFifoDepth The requested depth of the FIFO on the receive side of the 1761f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm serial interface. A ReceiveFifoDepth value of 0 will use 1771f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm the device's default FIFO depth. 1781f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm On output, the value actually set. 1791f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @param Timeout The requested time out for a single character in microseconds. 1801f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm This timeout applies to both the transmit and receive side of the 1811f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm interface. A Timeout value of 0 will use the device's default time 1821f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm out value. 1831f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm On output, the value actually set. 1841f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @param Parity The type of parity to use on this serial device. A Parity value of 1851f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm DefaultParity will use the device's default parity value. 1861f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm On output, the value actually set. 1871f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @param DataBits The number of data bits to use on the serial device. A DataBits 1881f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm vaule of 0 will use the device's default data bit setting. 1891f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm On output, the value actually set. 1901f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @param StopBits The number of stop bits to use on this serial device. A StopBits 1911f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm value of DefaultStopBits will use the device's default number of 1921f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm stop bits. 1931f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm On output, the value actually set. 1941f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 1951f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_SUCCESS The new attributes were set on the serial device. 1961f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_UNSUPPORTED The serial device does not support this operation. 1971f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_INVALID_PARAMETER One or more of the attributes has an unsupported value. 1981f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm @retval RETURN_DEVICE_ERROR The serial device is not functioning correctly. 1991f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 2001f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm**/ 2011f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif LindholmRETURN_STATUS 2021f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif LindholmEFIAPI 2031f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif LindholmSerialPortSetAttributes ( 2041f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm IN OUT UINT64 *BaudRate, 2051f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm IN OUT UINT32 *ReceiveFifoDepth, 2061f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm IN OUT UINT32 *Timeout, 2071f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm IN OUT EFI_PARITY_TYPE *Parity, 2081f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm IN OUT UINT8 *DataBits, 2091f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm IN OUT EFI_STOP_BITS_TYPE *StopBits 2101f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm ) 2111f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm{ 2121f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm return RETURN_UNSUPPORTED; 2131f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm} 2141f9d2f7a9ad3b5df6ade81aa2a3d25b19d2fefa7Leif Lindholm 215