**/
#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>
/*
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);
}
/**
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);
}
/**
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);
}
/**
VOID
)
{
- return ((MmioRead32 (PL011_CONSOLE_UART_BASE + UARTFR) & UART_RX_EMPTY_FLAG_MASK) == 0);
+ return PL011UartPoll ((UINTN)PcdGet64 (PcdSerialRegisterBase));
}