It is also to integrate PL011SerialPortExtLib to PL011SerialPortLib.

Cc: Michael D Kinney <michael.d.kin...@intel.com>
Cc: Liming Gao <liming....@intel.com>
Cc: Leif Lindholm <leif.lindh...@linaro.org>
Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.z...@intel.com>
Reviewed-by: Ard Biesheuvel <ard.biesheu...@linaro.org>
---
 ArmPlatformPkg/ArmJunoPkg/ArmJuno.dsc              |   3 +-
 ArmPlatformPkg/ArmJunoPkg/ArmJuno.fdf              |   3 +-
 .../ArmVExpressPkg/ArmVExpress-CTA15-A7.dsc        |   3 +-
 .../ArmVExpressPkg/ArmVExpress-CTA15-A7.fdf        |   3 +-
 .../ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc     |   3 +-
 .../ArmVExpressPkg/ArmVExpress-FVP-AArch64.fdf     |   3 +-
 .../ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.dsc |   3 +-
 .../ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.fdf |   3 +-
 ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc  |   1 -
 .../PL011SerialPortLib/PL011SerialPortExtLib.c     | 137 ---------------------
 .../PL011SerialPortLib/PL011SerialPortExtLib.inf   |  43 -------
 .../PL011SerialPortLib/PL011SerialPortLib.c        | 117 +++++++++++++++++-
 12 files changed, 131 insertions(+), 191 deletions(-)
 delete mode 100644 
ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c
 delete mode 100644 
ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.inf

diff --git a/ArmPlatformPkg/ArmJunoPkg/ArmJuno.dsc 
b/ArmPlatformPkg/ArmJunoPkg/ArmJuno.dsc
index f5af426..ba838c7 100644
--- a/ArmPlatformPkg/ArmJunoPkg/ArmJuno.dsc
+++ b/ArmPlatformPkg/ArmJunoPkg/ArmJuno.dsc
@@ -1,5 +1,6 @@
 #
 #  Copyright (c) 2013-2015, ARM Limited. All rights reserved.
+#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD 
License
@@ -218,7 +219,7 @@ [Components.common]
   MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
   MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
   MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-  EmbeddedPkg/SerialDxe/SerialDxe.inf
+  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf {
     <LibraryClasses>
diff --git a/ArmPlatformPkg/ArmJunoPkg/ArmJuno.fdf 
b/ArmPlatformPkg/ArmJunoPkg/ArmJuno.fdf
index c8f5831..51b1180 100644
--- a/ArmPlatformPkg/ArmJunoPkg/ArmJuno.fdf
+++ b/ArmPlatformPkg/ArmJunoPkg/ArmJuno.fdf
@@ -1,5 +1,6 @@
 #
 #  Copyright (c) 2013-2015, ARM Limited. All rights reserved.
+#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD 
License
@@ -123,7 +124,7 @@ [FV.FvMain]
   INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
   INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
   INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-  INF EmbeddedPkg/SerialDxe/SerialDxe.inf
+  INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
   INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf
diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA15-A7.dsc 
b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA15-A7.dsc
index c76d729..5503bbc 100644
--- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA15-A7.dsc
+++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA15-A7.dsc
@@ -1,5 +1,6 @@
 #
 #  Copyright (c) 2012-2015, ARM Limited. All rights reserved.
+#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD 
License
@@ -247,7 +248,7 @@ [Components.common]
   MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
   MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
   MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-  EmbeddedPkg/SerialDxe/SerialDxe.inf
+  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
 
diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA15-A7.fdf 
b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA15-A7.fdf
index 576b340..5f4f5aa 100644
--- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA15-A7.fdf
+++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-CTA15-A7.fdf
@@ -1,5 +1,6 @@
 #
 #  Copyright (c) 2012-2015, ARM Limited. All rights reserved.
+#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD 
License
@@ -91,7 +92,7 @@ [FV.FvMain]
   INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
   INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
   INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-  INF EmbeddedPkg/SerialDxe/SerialDxe.inf
+  INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
   INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf
diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc 
b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc
index ec29e65..74fac16 100644
--- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc
+++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.dsc
@@ -1,5 +1,6 @@
 #
 #  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
+#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD 
License
@@ -275,7 +276,7 @@ [Components.common]
   MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
   MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
   MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-  EmbeddedPkg/SerialDxe/SerialDxe.inf
+  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
 
diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.fdf 
b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.fdf
index 9b54e39..53837d4 100644
--- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.fdf
+++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-FVP-AArch64.fdf
@@ -1,5 +1,6 @@
 #
 #  Copyright (c) 2011 - 2015, ARM Limited. All rights reserved.
+#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD 
License
@@ -158,7 +159,7 @@ [FV.FvMain]
   INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
   INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
   INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-  INF EmbeddedPkg/SerialDxe/SerialDxe.inf
+  INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
   INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf
diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.dsc 
b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.dsc
index 72103e2..a8e3269 100644
--- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.dsc
+++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.dsc
@@ -1,5 +1,6 @@
 #
 #  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
+#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD 
License
@@ -259,7 +260,7 @@ [Components.common]
   MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
   MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
   MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-  EmbeddedPkg/SerialDxe/SerialDxe.inf
+  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
 
diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.fdf 
b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.fdf
index b65dd9d..ee50af2 100644
--- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.fdf
+++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress-RTSM-A15_MPCore.fdf
@@ -1,5 +1,6 @@
 #
 #  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
+#  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD 
License
@@ -156,7 +157,7 @@ [FV.FvMain]
   INF MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf
   INF MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.inf
   INF MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-  INF EmbeddedPkg/SerialDxe/SerialDxe.inf
+  INF MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
   INF ArmPkg/Drivers/TimerDxe/TimerDxe.inf
diff --git a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc 
b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
index 4fce05b..ced1985 100644
--- a/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
+++ b/ArmPlatformPkg/ArmVExpressPkg/ArmVExpress.dsc.inc
@@ -95,7 +95,6 @@ [LibraryClasses.common]
   # ARM PL011 UART Driver
   PL011UartLib|ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf
   
SerialPortLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf
-  
SerialPortExtLib|ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.inf
   # ARM SP804 Dual Timer Driver
   TimerLib|ArmPlatformPkg/Library/SP804TimerLib/SP804TimerLib.inf
 
diff --git a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c 
b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c
deleted file mode 100644
index 44fe78f..0000000
--- a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/** @file
-  Serial I/O Port library functions with no library constructor/destructor
-
-  Copyright (c) 2012-2014, 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);
-}
-
-/**
-
-  Assert or deassert the control signals on a serial port.
-  The following control signals are set according their bit settings :
-  . Request to Send
-  . Data Terminal Ready
-
-  @param[in]  Control  The following bits are taken into account :
-                       . EFI_SERIAL_REQUEST_TO_SEND : assert/deassert the
-                         "Request To Send" control signal if this bit is
-                         equal to one/zero.
-                       . EFI_SERIAL_DATA_TERMINAL_READY : assert/deassert
-                         the "Data Terminal Ready" control signal if this
-                         bit is equal to one/zero.
-                       . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : enable/disable
-                         the hardware loopback if this bit is equal to
-                         one/zero.
-                       . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : not supported.
-                       . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : enable/
-                         disable the hardware flow control based on CTS (Clear
-                         To Send) and RTS (Ready To Send) control signals.
-
-  @retval  RETURN_SUCCESS      The new control bits were set on the serial 
device.
-  @retval  RETURN_UNSUPPORTED  The serial device does not support this 
operation.
-
-**/
-RETURN_STATUS
-EFIAPI
-SerialPortSetControl (
-  IN UINT32  Control
-  )
-{
-  return PL011UartSetControl ((UINTN)PcdGet64 (PcdSerialRegisterBase), 
Control);
-}
-
-/**
-
-  Retrieve the status of the control bits on a serial device.
-
-  @param[out]  Control  Status of the control bits on a serial device :
-
-                        . EFI_SERIAL_DATA_CLEAR_TO_SEND, 
EFI_SERIAL_DATA_SET_READY,
-                          EFI_SERIAL_RING_INDICATE, EFI_SERIAL_CARRIER_DETECT,
-                          EFI_SERIAL_REQUEST_TO_SEND, 
EFI_SERIAL_DATA_TERMINAL_READY
-                          are all related to the DTE (Data Terminal Equipment) 
and
-                          DCE (Data Communication Equipment) modes of 
operation of
-                          the serial device.
-                        . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if the 
receive
-                          buffer is empty, 0 otherwise.
-                        . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if the 
transmit
-                          buffer is empty, 0 otherwise.
-                        . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to one 
if the
-                          hardware loopback is enabled (the ouput feeds the 
receive
-                          buffer), 0 otherwise.
-                        . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to one 
if a
-                          loopback is accomplished by software, 0 otherwise.
-                        . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal to 
one if the
-                          hardware flow control based on CTS (Clear To Send) 
and RTS
-                          (Ready To Send) control signals is enabled, 0 
otherwise.
-
-  @retval RETURN_SUCCESS  The control bits were read from the serial device.
-
-**/
-RETURN_STATUS
-EFIAPI
-SerialPortGetControl (
-  OUT UINT32  *Control
-  )
-{
-  return PL011UartGetControl ((UINTN)PcdGet64 (PcdSerialRegisterBase), 
Control);
-}
diff --git 
a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.inf 
b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.inf
deleted file mode 100644
index 723cc97..0000000
--- a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.inf
+++ /dev/null
@@ -1,43 +0,0 @@
-#/** @file
-#
-#  Component description file for PL011SerialPortLib module
-#
-#  Copyright (c) 2011-2012, 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.
-#
-#**/
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = PL011SerialPortExtLib
-  FILE_GUID                      = 2be281f1-c506-4558-bd98-d6930e6de9d6
-  MODULE_TYPE                    = BASE
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = SerialPortExtLib
-
-[Sources.common]
-  PL011SerialPortExtLib.c
-
-[LibraryClasses]
-  PL011UartLib
-  PcdLib
-
-[Packages]
-  EmbeddedPkg/EmbeddedPkg.dec
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  ArmPlatformPkg/ArmPlatformPkg.dec
-
-[Pcd]
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase
-  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
-  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits
-  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
-  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
diff --git a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c 
b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c
index d4f7fc9..7497b5e 100644
--- a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c
+++ b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c
@@ -2,7 +2,8 @@
   Serial I/O Port library functions with no library constructor/destructor
 
   Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
-  Copyright (c) 2012 - 2013, ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2012 - 2014, ARM Ltd. All rights reserved.<BR>
+  Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
 
   This program and the accompanying materials
   are licensed and made available under the terms and conditions of the BSD 
License
@@ -19,7 +20,6 @@
 #include <Library/IoLib.h>
 #include <Library/PcdLib.h>
 #include <Library/SerialPortLib.h>
-#include <Library/SerialPortExtLib.h>
 
 #include <Drivers/PL011Uart.h>
 
@@ -110,4 +110,117 @@ SerialPortPoll (
 {
   return PL011UartPoll ((UINTN)PcdGet64 (PcdSerialRegisterBase));
 }
+/**
+  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);
+}
+
+/**
+
+  Assert or deassert the control signals on a serial port.
+  The following control signals are set according their bit settings :
+  . Request to Send
+  . Data Terminal Ready
+
+  @param[in]  Control  The following bits are taken into account :
+                       . EFI_SERIAL_REQUEST_TO_SEND : assert/deassert the
+                         "Request To Send" control signal if this bit is
+                         equal to one/zero.
+                       . EFI_SERIAL_DATA_TERMINAL_READY : assert/deassert
+                         the "Data Terminal Ready" control signal if this
+                         bit is equal to one/zero.
+                       . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : enable/disable
+                         the hardware loopback if this bit is equal to
+                         one/zero.
+                       . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : not supported.
+                       . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : enable/
+                         disable the hardware flow control based on CTS (Clear
+                         To Send) and RTS (Ready To Send) control signals.
+
+  @retval  RETURN_SUCCESS      The new control bits were set on the serial 
device.
+  @retval  RETURN_UNSUPPORTED  The serial device does not support this 
operation.
+
+**/
+RETURN_STATUS
+EFIAPI
+SerialPortSetControl (
+  IN UINT32  Control
+  )
+{
+  return PL011UartSetControl ((UINTN)PcdGet64 (PcdSerialRegisterBase), 
Control);
+}
+
+/**
 
+  Retrieve the status of the control bits on a serial device.
+
+  @param[out]  Control  Status of the control bits on a serial device :
+
+                        . EFI_SERIAL_DATA_CLEAR_TO_SEND, 
EFI_SERIAL_DATA_SET_READY,
+                          EFI_SERIAL_RING_INDICATE, EFI_SERIAL_CARRIER_DETECT,
+                          EFI_SERIAL_REQUEST_TO_SEND, 
EFI_SERIAL_DATA_TERMINAL_READY
+                          are all related to the DTE (Data Terminal Equipment) 
and
+                          DCE (Data Communication Equipment) modes of 
operation of
+                          the serial device.
+                        . EFI_SERIAL_INPUT_BUFFER_EMPTY : equal to one if the 
receive
+                          buffer is empty, 0 otherwise.
+                        . EFI_SERIAL_OUTPUT_BUFFER_EMPTY : equal to one if the 
transmit
+                          buffer is empty, 0 otherwise.
+                        . EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE : equal to one 
if the
+                          hardware loopback is enabled (the output feeds the 
receive
+                          buffer), 0 otherwise.
+                        . EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE : equal to one 
if a
+                          loopback is accomplished by software, 0 otherwise.
+                        . EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE : equal to 
one if the
+                          hardware flow control based on CTS (Clear To Send) 
and RTS
+                          (Ready To Send) control signals is enabled, 0 
otherwise.
+
+  @retval RETURN_SUCCESS  The control bits were read from the serial device.
+
+**/
+RETURN_STATUS
+EFIAPI
+SerialPortGetControl (
+  OUT UINT32  *Control
+  )
+{
+  return PL011UartGetControl ((UINTN)PcdGet64 (PcdSerialRegisterBase), 
Control);
+}
-- 
1.9.5.msysgit.0

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to