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