summaryrefslogtreecommitdiffstats
path: root/EmbeddedPkg
diff options
context:
space:
mode:
Diffstat (limited to 'EmbeddedPkg')
-rw-r--r--EmbeddedPkg/SerialDxe/SerialIo.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/EmbeddedPkg/SerialDxe/SerialIo.c b/EmbeddedPkg/SerialDxe/SerialIo.c
index 59d904c192..ef4e6a1910 100644
--- a/EmbeddedPkg/SerialDxe/SerialIo.c
+++ b/EmbeddedPkg/SerialDxe/SerialIo.c
@@ -167,7 +167,7 @@ SerialWrite (
}
/**
- Writes data to a serial device.
+ Reads data from a serial device.
@param This Protocol instance pointer.
@param BufferSize On input, the size of the Buffer. On output, the amount of
@@ -189,15 +189,16 @@ SerialRead (
)
{
UINTN Count = 0;
-
+
if (SerialPortPoll()) {
Count = SerialPortRead (Buffer, *BufferSize);
+ }
+
+ if (Count != *BufferSize) {
*BufferSize = Count;
- return (Count == 0) ? EFI_DEVICE_ERROR : EFI_SUCCESS;
+ return EFI_TIMEOUT;
}
-
- // No data to return
- *BufferSize = 0;
+
return EFI_SUCCESS;
}