It is also to add GetControl/SetControl/SetAttributes implementation
for EarlyFdtPL011SerialPortLib and FdtPL011SerialPortLib.

Cc: Michael D Kinney <michael.d.kin...@intel.com>
Cc: Liming Gao <liming....@intel.com>
Cc: Laszlo Ersek <ler...@redhat.com>
Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.z...@intel.com>
---
 ArmVirtPkg/ArmVirt.dsc.inc                         |  1 -
 ArmVirtPkg/ArmVirtQemu.dsc                         |  2 +-
 ArmVirtPkg/ArmVirtQemu.fdf                         |  2 +-
 ArmVirtPkg/ArmVirtXen.dsc                          |  3 +-
 ArmVirtPkg/ArmVirtXen.fdf                          |  3 +-
 .../EarlyFdtPL011SerialPortLib.c                   | 82 +++++++++++++++++-
 .../FdtPL011SerialPortLib/FdtPL011SerialPortLib.c  | 99 ++++++++++++++++++++++
 7 files changed, 186 insertions(+), 6 deletions(-)

diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc
index 8626919..b5821a8 100644
--- a/ArmVirtPkg/ArmVirt.dsc.inc
+++ b/ArmVirtPkg/ArmVirt.dsc.inc
@@ -101,7 +101,6 @@ [LibraryClasses.common]
   # ARM PL011 UART Driver
   PL011UartLib|ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf
   
SerialPortLib|ArmVirtPkg/Library/FdtPL011SerialPortLib/FdtPL011SerialPortLib.inf
-  
SerialPortExtLib|EmbeddedPkg/Library/SerialPortExtLibNull/SerialPortExtLibNull.inf
 
   #
   # Uncomment (and comment out the next line) For RealView Debugger. The 
Standard IO window
diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
index 995be89..32c82c7 100644
--- a/ArmVirtPkg/ArmVirtQemu.dsc
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
@@ -284,7 +284,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/ArmVirtPkg/ArmVirtQemu.fdf b/ArmVirtPkg/ArmVirtQemu.fdf
index 89a4015..738e3db 100644
--- a/ArmVirtPkg/ArmVirtQemu.fdf
+++ b/ArmVirtPkg/ArmVirtQemu.fdf
@@ -134,7 +134,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/ArmVirtPkg/ArmVirtXen.dsc b/ArmVirtPkg/ArmVirtXen.dsc
index ac37cd2..32e0afc 100644
--- a/ArmVirtPkg/ArmVirtXen.dsc
+++ b/ArmVirtPkg/ArmVirtXen.dsc
@@ -1,6 +1,7 @@
 #
 #  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
 #  Copyright (c) 2014, Linaro 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
@@ -198,7 +199,7 @@ [Components.common]
 
   MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf
   MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf
-  EmbeddedPkg/SerialDxe/SerialDxe.inf
+  MdeModulePkg/Universal/SerialDxe/SerialDxe.inf
 
   MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe.inf
 
diff --git a/ArmVirtPkg/ArmVirtXen.fdf b/ArmVirtPkg/ArmVirtXen.fdf
index 97cab4b..7290147 100644
--- a/ArmVirtPkg/ArmVirtXen.fdf
+++ b/ArmVirtPkg/ArmVirtXen.fdf
@@ -1,6 +1,7 @@
 #
 #  Copyright (c) 2011-2015, ARM Limited. All rights reserved.
 #  Copyright (c) 2014, Linaro 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
@@ -134,7 +135,7 @@ [FV.FvMain]
   #
   INF MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.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/ArmVirtPkg/Library/FdtPL011SerialPortLib/EarlyFdtPL011SerialPortLib.c 
b/ArmVirtPkg/Library/FdtPL011SerialPortLib/EarlyFdtPL011SerialPortLib.c
index ba6d277..c02579a 100644
--- a/ArmVirtPkg/Library/FdtPL011SerialPortLib/EarlyFdtPL011SerialPortLib.c
+++ b/ArmVirtPkg/Library/FdtPL011SerialPortLib/EarlyFdtPL011SerialPortLib.c
@@ -4,6 +4,7 @@
   Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
   Copyright (c) 2012 - 2013, ARM Ltd. All rights reserved.<BR>
   Copyright (c) 2014, Linaro 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/PcdLib.h>
 #include <Library/SerialPortLib.h>
-#include <Library/SerialPortExtLib.h>
 #include <libfdt.h>
 
 #include <Drivers/PL011Uart.h>
@@ -183,3 +183,83 @@ SerialPortPoll (
 {
   return FALSE;
 }
+
+/**
+  Sets the control bits on a serial device.
+
+  @param[in] Control            Sets the bits of Control that are settable.
+
+  @retval RETURN_SUCCESS        The new control bits were set on the serial 
device.
+  @retval RETURN_UNSUPPORTED    The serial device does not support this 
operation.
+  @retval RETURN_DEVICE_ERROR   The serial device is not functioning correctly.
+
+**/
+RETURN_STATUS
+EFIAPI
+SerialPortSetControl (
+  IN UINT32 Control
+  )
+{
+  return RETURN_UNSUPPORTED;
+}
+
+/**
+  Retrieve the status of the control bits on a serial device.
+
+  @param[out] Control           A pointer to return the current control 
signals from the serial device.
+
+  @retval RETURN_SUCCESS        The control bits were read from the serial 
device.
+  @retval RETURN_UNSUPPORTED    The serial device does not support this 
operation.
+  @retval RETURN_DEVICE_ERROR   The serial device is not functioning correctly.
+
+**/
+RETURN_STATUS
+EFIAPI
+SerialPortGetControl (
+  OUT UINT32 *Control
+  )
+{
+  return RETURN_UNSUPPORTED;
+}
+
+/**
+  Sets the baud rate, receive FIFO depth, transmit/receice time out, parity,
+  data buts, and stop bits on a serial device.
+
+  @param BaudRate           The requested baud rate. A BaudRate value of 0 
will use the
+                            device's default interface speed.
+  @param ReveiveFifoDepth   The requested depth of the FIFO on the receive 
side of the
+                            serial interface. A ReceiveFifoDepth value of 0 
will use
+                            the device's default FIFO depth.
+  @param Timeout            The requested time out for a single character in 
microseconds.
+                            This timeout applies to both the transmit and 
receive side of the
+                            interface. A Timeout value of 0 will use the 
device's default time
+                            out value.
+  @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
+                            vaule 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 RETURN_SUCCESS            The new attributes were set on the serial 
device.
+  @retval RETURN_UNSUPPORTED        The serial device does not support this 
operation.
+  @retval RETURN_INVALID_PARAMETER  One or more of the attributes has an 
unsupported value.
+  @retval RETURN_DEVICE_ERROR       The serial device is not functioning 
correctly.
+
+**/
+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 RETURN_UNSUPPORTED;
+}
+
diff --git a/ArmVirtPkg/Library/FdtPL011SerialPortLib/FdtPL011SerialPortLib.c 
b/ArmVirtPkg/Library/FdtPL011SerialPortLib/FdtPL011SerialPortLib.c
index aced666..2d065fe 100644
--- a/ArmVirtPkg/Library/FdtPL011SerialPortLib/FdtPL011SerialPortLib.c
+++ b/ArmVirtPkg/Library/FdtPL011SerialPortLib/FdtPL011SerialPortLib.c
@@ -5,6 +5,7 @@
   Copyright (c) 2012 - 2013, ARM Ltd. All rights reserved.<BR>
   Copyright (c) 2014, Linaro Ltd. All rights reserved.<BR>
   Copyright (c) 2014, Red Hat, Inc.<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
@@ -148,3 +149,101 @@ SerialPortPoll (
   }
   return FALSE;
 }
+
+/**
+  Sets the baud rate, receive FIFO depth, transmit/receice time out, parity,
+  data buts, and stop bits on a serial device.
+
+  @param BaudRate           The requested baud rate. A BaudRate value of 0 
will use the
+                            device's default interface speed.
+  @param ReveiveFifoDepth   The requested depth of the FIFO on the receive 
side of the
+                            serial interface. A ReceiveFifoDepth value of 0 
will use
+                            the device's default FIFO depth.
+  @param Timeout            The requested time out for a single character in 
microseconds.
+                            This timeout applies to both the transmit and 
receive side of the
+                            interface. A Timeout value of 0 will use the 
device's default time
+                            out value.
+  @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
+                            vaule 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 RETURN_SUCCESS            The new attributes were set on the serial 
device.
+  @retval RETURN_UNSUPPORTED        The serial device does not support this 
operation.
+  @retval RETURN_INVALID_PARAMETER  One or more of the attributes has an 
unsupported value.
+  @retval RETURN_DEVICE_ERROR       The serial device is not functioning 
correctly.
+
+**/
+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
+  )
+{
+  if (mSerialBaseAddress != 0) {
+    return PL011UartInitializePort (
+          mSerialBaseAddress,
+          BaudRate,
+          ReceiveFifoDepth,
+          Parity,
+          DataBits,
+          StopBits);
+  } else {
+    return RETURN_UNSUPPORTED;
+  }
+}
+
+/**
+  Sets the control bits on a serial device.
+
+  @param Control                Sets the bits of Control that are settable.
+
+  @retval RETURN_SUCCESS        The new control bits were set on the serial 
device.
+  @retval RETURN_UNSUPPORTED    The serial device does not support this 
operation.
+  @retval RETURN_DEVICE_ERROR   The serial device is not functioning correctly.
+
+**/
+RETURN_STATUS
+EFIAPI
+SerialPortSetControl (
+  IN UINT32 Control
+  )
+{
+  if (mSerialBaseAddress != 0) {
+    return PL011UartSetControl (mSerialBaseAddress, Control);
+  } else {
+    return RETURN_UNSUPPORTED;
+  }
+}
+
+/**
+  Retrieve the status of the control bits on a serial device.
+
+  @param Control                A pointer to return the current control 
signals from the serial device.
+
+  @retval RETURN_SUCCESS        The control bits were read from the serial 
device.
+  @retval RETURN_UNSUPPORTED    The serial device does not support this 
operation.
+  @retval RETURN_DEVICE_ERROR   The serial device is not functioning correctly.
+
+**/
+RETURN_STATUS
+EFIAPI
+SerialPortGetControl (
+  OUT UINT32 *Control
+  )
+{
+  if (mSerialBaseAddress != 0) {
+    return PL011UartGetControl (mSerialBaseAddress, Control);
+  } else {
+    return RETURN_UNSUPPORTED;
+  }
+}
+
-- 
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