diff options
Diffstat (limited to 'ArmPlatformPkg/Library')
-rw-r--r-- | ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c | 57 | ||||
-rw-r--r-- | ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf | 10 |
2 files changed, 21 insertions, 46 deletions
diff --git a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c index 54ea28a769..842bbe005b 100644 --- a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c +++ b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.c @@ -15,9 +15,13 @@ **/ #include <Include/Uefi.h> -#include <Library/SerialPortLib.h> + #include <Library/IoLib.h> +#include <Library/PcdLib.h> +#include <Library/SerialPortLib.h> + #include <Drivers/PL011Uart.h> + #include <ArmPlatform.h> /* @@ -33,32 +37,11 @@ SerialPortInitialize ( VOID ) { - if (PL011_CONSOLE_UART_SPEED == 115200) { - // Initialize baud rate generator - MmioWrite32 (PL011_CONSOLE_UART_BASE + UARTIBRD, UART_115200_IDIV); - MmioWrite32 (PL011_CONSOLE_UART_BASE + UARTFBRD, UART_115200_FDIV); - } else if (PL011_CONSOLE_UART_SPEED == 38400) { - // Initialize baud rate generator - MmioWrite32 (PL011_CONSOLE_UART_BASE + UARTIBRD, UART_38400_IDIV); - MmioWrite32 (PL011_CONSOLE_UART_BASE + UARTFBRD, UART_38400_FDIV); - } else if (PL011_CONSOLE_UART_SPEED == 19200) { - // Initialize baud rate generator - MmioWrite32 (PL011_CONSOLE_UART_BASE + UARTIBRD, UART_19200_IDIV); - MmioWrite32 (PL011_CONSOLE_UART_BASE + UARTFBRD, UART_19200_FDIV); - } else { - return EFI_INVALID_PARAMETER; - } - // No parity, 1 stop, no fifo, 8 data bits - MmioWrite32 (PL011_CONSOLE_UART_BASE + UARTLCR_H, 0x60); - - // Clear any pending errors - MmioWrite32 (PL011_CONSOLE_UART_BASE + UARTECR, 0); - - // enable tx, rx, and uart overall - MmioWrite32 (PL011_CONSOLE_UART_BASE + UARTCR, 0x301); - - return EFI_SUCCESS; + return PL011UartInitialize ( + (UINTN)PcdGet64 (PcdSerialRegisterBase), + (UINTN)PcdGet64 (PcdUartDefaultBaudRate), + PL011_UARTLCR_H_WLEN_8); } /** @@ -76,16 +59,9 @@ EFIAPI SerialPortWrite ( IN UINT8 *Buffer, IN UINTN NumberOfBytes -) + ) { - UINTN Count; - - for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) { - while ((MmioRead32 (PL011_CONSOLE_UART_BASE + UARTFR) & UART_TX_EMPTY_FLAG_MASK) == 0); - MmioWrite8 (PL011_CONSOLE_UART_BASE + UARTDR, *Buffer); - } - - return NumberOfBytes; + return PL011UartWrite ((UINTN)PcdGet64 (PcdSerialRegisterBase), Buffer, NumberOfBytes); } /** @@ -105,14 +81,7 @@ SerialPortRead ( IN UINTN NumberOfBytes ) { - UINTN Count; - - for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) { - while ((MmioRead32 (PL011_CONSOLE_UART_BASE + UARTFR) & UART_RX_EMPTY_FLAG_MASK) != 0); - *Buffer = MmioRead8 (PL011_CONSOLE_UART_BASE + UARTDR); - } - - return NumberOfBytes; + return PL011UartRead ((UINTN)PcdGet64 (PcdSerialRegisterBase), Buffer, NumberOfBytes); } /** @@ -129,5 +98,5 @@ SerialPortPoll ( VOID ) { - return ((MmioRead32 (PL011_CONSOLE_UART_BASE + UARTFR) & UART_RX_EMPTY_FLAG_MASK) == 0); + return PL011UartPoll ((UINTN)PcdGet64 (PcdSerialRegisterBase)); } diff --git a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf index b9d86946c4..94222fee8c 100644 --- a/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf +++ b/ArmPlatformPkg/Library/PL011SerialPortLib/PL011SerialPortLib.inf @@ -2,7 +2,7 @@ # # Component discription file for NorFlashDxe module # -# Copyright (c) 2010, ARM Ltd. All rights reserved.<BR> +# Copyright (c) 2011, 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 @@ -25,8 +25,14 @@ PL011SerialPortLib.c [LibraryClasses] - IoLib + PL011UartLib + PcdLib [Packages] MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec ArmPlatformPkg/ArmPlatformPkg.dec + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdSerialRegisterBase + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate |