Revision: 14365
          http://edk2.svn.sourceforge.net/edk2/?rev=14365&view=rev
Author:   oliviermartin
Date:     2013-05-15 08:44:59 +0000 (Wed, 15 May 2013)
Log Message:
-----------
EmbeddedPkg/SerialPortExtLib.h: Changed SerialPortSetAttributes() prototype to 
return the set value(s)

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 <[email protected]>

Modified Paths:
--------------
    trunk/edk2/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c
    trunk/edk2/ArmPlatformPkg/Include/Drivers/PL011Uart.h
    trunk/edk2/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c
    trunk/edk2/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c
    trunk/edk2/EmbeddedPkg/Include/Library/SerialPortExtLib.h
    
trunk/edk2/EmbeddedPkg/Library/TemplateSerialPortExtLib/TemplateSerialPortExtLib.c
    trunk/edk2/EmbeddedPkg/SerialDxe/SerialIo.c

Modified: trunk/edk2/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c     2013-05-15 
08:09:29 UTC (rev 14364)
+++ trunk/edk2/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c     2013-05-15 
08:44:59 UTC (rev 14365)
@@ -31,12 +31,12 @@
 RETURN_STATUS
 EFIAPI
 PL011UartInitializePort (
-  IN UINTN               UartBase,
-  IN UINT64              BaudRate,
-  IN UINT32              ReceiveFifoDepth,
-  IN EFI_PARITY_TYPE     Parity,
-  IN UINT8               DataBits,
-  IN EFI_STOP_BITS_TYPE  StopBits
+  IN OUT UINTN               UartBase,
+  IN OUT UINT64              *BaudRate,
+  IN OUT UINT32              *ReceiveFifoDepth,
+  IN OUT EFI_PARITY_TYPE     *Parity,
+  IN OUT UINT8               *DataBits,
+  IN OUT EFI_STOP_BITS_TYPE  *StopBits
   )
 {
   UINT32      LineControl;
@@ -47,19 +47,21 @@
   // The PL011 supports a buffer of either 1 or 32 chars. Therefore we can 
accept
   // 1 char buffer as the minimum fifo size. Because everything can be rounded 
down,
   // there is no maximum fifo size.
-  if (ReceiveFifoDepth == 0) {
+  if ((*ReceiveFifoDepth == 0) || (*ReceiveFifoDepth >= 32)) {
     LineControl |= PL011_UARTLCR_H_FEN;
-  } else if (ReceiveFifoDepth < 32) {
+    *ReceiveFifoDepth = 32;
+  } else {
+    ASSERT (*ReceiveFifoDepth < 32);
     // Nothing else to do. 1 byte fifo is default.
-  } else if (ReceiveFifoDepth >= 32) {
-    LineControl |= PL011_UARTLCR_H_FEN;
+    *ReceiveFifoDepth = 1;
   }
 
   //
   // Parity
   //
-  switch (Parity) {
+  switch (*Parity) {
   case DefaultParity:
+    *Parity = NoParity;
   case NoParity:
     // Nothing to do. Parity is disabled by default.
     break;
@@ -82,8 +84,9 @@
   //
   // Data Bits
   //
-  switch (DataBits) {
+  switch (*DataBits) {
   case 0:
+    *DataBits = 8;
   case 8:
     LineControl |= PL011_UARTLCR_H_WLEN_8;
     break;
@@ -103,8 +106,9 @@
   //
   // Stop Bits
   //
-  switch (StopBits) {
+  switch (*StopBits) {
   case DefaultStopBits:
+    *StopBits = OneStopBit;
   case OneStopBit:
     // Nothing to do. One stop bit is enabled by default.
     break;
@@ -132,14 +136,14 @@
       MmioWrite32 (UartBase + UARTIBRD, PcdGet32 (PL011UartInteger));
       MmioWrite32 (UartBase + UARTFBRD, PcdGet32 (PL011UartFractional));
     } else {
-      BaudRate = PcdGet32 (PcdSerialBaudRate);
-      ASSERT (BaudRate != 0);
+      *BaudRate = PcdGet32 (PcdSerialBaudRate);
+      ASSERT (*BaudRate != 0);
     }
   }
 
   // If BaudRate != 0 then we must calculate the divisor from the value
-  if (BaudRate != 0) {
-    Divisor = (PcdGet32 (PL011UartClkInHz) * 4) / BaudRate;
+  if (*BaudRate != 0) {
+    Divisor = (PcdGet32 (PL011UartClkInHz) * 4) / *BaudRate;
     MmioWrite32 (UartBase + UARTIBRD, Divisor >> 6);
     MmioWrite32 (UartBase + UARTFBRD, Divisor & 0x3F);
   }

Modified: trunk/edk2/ArmPlatformPkg/Include/Drivers/PL011Uart.h
===================================================================
--- trunk/edk2/ArmPlatformPkg/Include/Drivers/PL011Uart.h       2013-05-15 
08:09:29 UTC (rev 14364)
+++ trunk/edk2/ArmPlatformPkg/Include/Drivers/PL011Uart.h       2013-05-15 
08:44:59 UTC (rev 14365)
@@ -91,12 +91,12 @@
 RETURN_STATUS
 EFIAPI
 PL011UartInitializePort (
-  IN UINTN               UartBase,
-  IN UINT64              BaudRate,
-  IN UINT32              ReceiveFifoDepth,
-  IN EFI_PARITY_TYPE     Parity,
-  IN UINT8               DataBits,
-  IN EFI_STOP_BITS_TYPE  StopBits
+  IN OUT UINTN               UartBase,
+  IN OUT UINT64              *BaudRate,
+  IN OUT UINT32              *ReceiveFifoDepth,
+  IN OUT EFI_PARITY_TYPE     *Parity,
+  IN OUT UINT8               *DataBits,
+  IN OUT EFI_STOP_BITS_TYPE  *StopBits
   );
 
 /**

Modified: 
trunk/edk2/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c
===================================================================
--- 
trunk/edk2/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c    
    2013-05-15 08:09:29 UTC (rev 14364)
+++ 
trunk/edk2/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortExtLib.c    
    2013-05-15 08:44:59 UTC (rev 14365)
@@ -1,7 +1,7 @@
 /** @file
   Serial I/O Port library functions with no library constructor/destructor
 
-  Copyright (c) 2012, ARM Ltd. All rights reserved.<BR>
+  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
@@ -47,12 +47,12 @@
 RETURN_STATUS
 EFIAPI
 SerialPortSetAttributes (
-  IN UINT64              BaudRate,
-  IN UINT32              ReceiveFifoDepth,
-  IN UINT32              Timeout,
-  IN EFI_PARITY_TYPE     Parity,
-  IN UINT8               DataBits,
-  IN EFI_STOP_BITS_TYPE  StopBits
+  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 (

Modified: 
trunk/edk2/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c
===================================================================
--- trunk/edk2/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c   
2013-05-15 08:09:29 UTC (rev 14364)
+++ trunk/edk2/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c   
2013-05-15 08:44:59 UTC (rev 14365)
@@ -2,7 +2,7 @@
   Serial I/O Port library functions with no library constructor/destructor
 
   Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
-  Copyright (c) 2012, ARM Ltd. All rights reserved.<BR>
+  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
@@ -37,13 +37,21 @@
   VOID
   )
 {
+  UINT64              BaudRate;
+  UINT32              ReceiveFifoDepth;
+  EFI_PARITY_TYPE     Parity;
+  UINT8               DataBits;
+  EFI_STOP_BITS_TYPE  StopBits;
+
+  BaudRate = (UINTN)PcdGet64 (PcdUartDefaultBaudRate);
+  ReceiveFifoDepth = 0; // Use the default value for Fifo depth
+  Parity = (EFI_PARITY_TYPE)PcdGet8 (PcdUartDefaultParity);
+  DataBits = PcdGet8 (PcdUartDefaultDataBits);
+  StopBits = (EFI_STOP_BITS_TYPE) PcdGet8 (PcdUartDefaultStopBits);
+
   return PL011UartInitializePort (
       (UINTN)PcdGet64 (PcdSerialRegisterBase),
-      (UINTN)PcdGet64 (PcdUartDefaultBaudRate),
-      0, // Use the default value for Fifo depth
-      (EFI_PARITY_TYPE)PcdGet8 (PcdUartDefaultParity),
-      PcdGet8 (PcdUartDefaultDataBits),
-      (EFI_STOP_BITS_TYPE) PcdGet8 (PcdUartDefaultStopBits));
+      &BaudRate, &ReceiveFifoDepth, &Parity, &DataBits, &StopBits);
 }
 
 /**

Modified: trunk/edk2/EmbeddedPkg/Include/Library/SerialPortExtLib.h
===================================================================
--- trunk/edk2/EmbeddedPkg/Include/Library/SerialPortExtLib.h   2013-05-15 
08:09:29 UTC (rev 14364)
+++ trunk/edk2/EmbeddedPkg/Include/Library/SerialPortExtLib.h   2013-05-15 
08:44:59 UTC (rev 14365)
@@ -54,12 +54,12 @@
 RETURN_STATUS
 EFIAPI
 SerialPortSetAttributes (
-  IN UINT64              BaudRate,
-  IN UINT32              ReceiveFifoDepth,
-  IN UINT32              Timeout,
-  IN EFI_PARITY_TYPE     Parity,
-  IN UINT8               DataBits,
-  IN EFI_STOP_BITS_TYPE  StopBits
+  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
   );
 
 #endif

Modified: 
trunk/edk2/EmbeddedPkg/Library/TemplateSerialPortExtLib/TemplateSerialPortExtLib.c
===================================================================
--- 
trunk/edk2/EmbeddedPkg/Library/TemplateSerialPortExtLib/TemplateSerialPortExtLib.c
  2013-05-15 08:09:29 UTC (rev 14364)
+++ 
trunk/edk2/EmbeddedPkg/Library/TemplateSerialPortExtLib/TemplateSerialPortExtLib.c
  2013-05-15 08:44:59 UTC (rev 14365)
@@ -66,12 +66,12 @@
 RETURN_STATUS
 EFIAPI
 SerialPortSetAttributes (
-  IN UINT64              BaudRate,
-  IN UINT32              ReceiveFifoDepth,
-  IN UINT32              Timeout,
-  IN EFI_PARITY_TYPE     Parity,
-  IN UINT8               DataBits,
-  IN EFI_STOP_BITS_TYPE  StopBits
+  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;

Modified: trunk/edk2/EmbeddedPkg/SerialDxe/SerialIo.c
===================================================================
--- trunk/edk2/EmbeddedPkg/SerialDxe/SerialIo.c 2013-05-15 08:09:29 UTC (rev 
14364)
+++ trunk/edk2/EmbeddedPkg/SerialDxe/SerialIo.c 2013-05-15 08:44:59 UTC (rev 
14365)
@@ -7,6 +7,7 @@
   
 
   Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
+  Copyright (c) 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
@@ -165,7 +166,7 @@
   EFI_STATUS  Status;
   EFI_TPL     Tpl;
 
-  Status = SerialPortSetAttributes (BaudRate, ReceiveFifoDepth, Timeout, 
Parity, DataBits, StopBits);
+  Status = SerialPortSetAttributes (&BaudRate, &ReceiveFifoDepth, &Timeout, 
&Parity, &DataBits, &StopBits);
   if (EFI_ERROR(Status)) {
     return Status;
   }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to