diff options
Diffstat (limited to 'ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c')
-rw-r--r-- | ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c b/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c index d728121b29..1f33bd1ef0 100644 --- a/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c +++ b/ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.c @@ -304,10 +304,12 @@ PL011UartWrite ( IN UINTN NumberOfBytes
)
{
- UINTN Count;
+ UINT8* CONST Final = &Buffer[NumberOfBytes];
- for (Count = 0; Count < NumberOfBytes; Count++, Buffer++) {
- while ((MmioRead32 (UartBase + UARTFR) & UART_TX_EMPTY_FLAG_MASK) == 0);
+ while (Buffer < Final) {
+ // Wait until UART able to accept another char
+ while ((MmioRead32 (UartBase + UARTFR) & UART_TX_FULL_FLAG_MASK));
+
MmioWrite8 (UartBase + UARTDR, *Buffer);
}
|