summaryrefslogtreecommitdiff
path: root/EmbeddedPkg/SimpleTextInOutSerial
diff options
context:
space:
mode:
authorandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-02-15 20:40:51 +0000
committerandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-02-15 20:40:51 +0000
commit026e30c4bb80a73ac7c5c286711ae07b1c51108b (patch)
tree84fbc585ed86e924d54382baebef00ac7870e891 /EmbeddedPkg/SimpleTextInOutSerial
parent95572bd1b8b55fff0b714b3e3a5f923f38eae460 (diff)
downloadedk2-platforms-026e30c4bb80a73ac7c5c286711ae07b1c51108b.tar.xz
Cleanup SerailIO drivers to have a device path and use PCD settings for various stuff. Also clean up a few coding convention items.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10009 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EmbeddedPkg/SimpleTextInOutSerial')
-rw-r--r--EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOut.c34
-rw-r--r--EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOutSerial.inf7
2 files changed, 39 insertions, 2 deletions
diff --git a/EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOut.c b/EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOut.c
index f491de6e95..bdc67fbda0 100644
--- a/EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOut.c
+++ b/EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOut.c
@@ -64,10 +64,12 @@
#include <Library/MemoryAllocationLib.h>
#include <Library/DebugLib.h>
#include <Library/SerialPortLib.h>
+#include <Library/PcdLib.h>
#include <Protocol/SerialIo.h>
#include <Protocol/SimpleTextIn.h>
#include <Protocol/SimpleTextOut.h>
+#include <Protocol/DevicePath.h>
#define MODE0_COLUMN_COUNT 80
@@ -198,7 +200,30 @@ EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL mSimpleTextOut = {
&mSimpleTextOutMode
};
- EFI_HANDLE mInstallHandle = NULL;
+EFI_HANDLE mInstallHandle = NULL;
+
+typedef struct {
+ VENDOR_DEVICE_PATH Guid;
+ UART_DEVICE_PATH Uart;
+ EFI_DEVICE_PATH_PROTOCOL End;
+} SIMPLE_TEXT_OUT_DEVICE_PATH;
+
+SIMPLE_TEXT_OUT_DEVICE_PATH mDevicePath = {
+ {
+ { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, sizeof (VENDOR_DEVICE_PATH), 0},
+ EFI_CALLER_ID_GUID
+ },
+ {
+ { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, sizeof (UART_DEVICE_PATH), 0},
+ 0, // Reserved
+ FixedPcdGet64 (PcdUartDefaultBaudRate), // BaudRate
+ FixedPcdGet8 (PcdUartDefaultDataBits), // DataBits
+ FixedPcdGet8 (PcdUartDefaultParity), // Parity (N)
+ FixedPcdGet8 (PcdUartDefaultStopBits) // StopBits
+ },
+ { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, sizeof (EFI_DEVICE_PATH_PROTOCOL), 0}
+};
+
@@ -271,6 +296,10 @@ ReadKeyStroke (
{
CHAR8 Char;
+ if (!SerialPortPoll ()) {
+ return EFI_NOT_READY;
+ }
+
SerialPortRead ((UINT8 *)&Char, 1);
//
@@ -660,7 +689,8 @@ SimpleTextInOutEntryPoint (
&mInstallHandle,
&gEfiSimpleTextInProtocolGuid, &mSimpleTextIn,
&gEfiSimpleTextOutProtocolGuid, &mSimpleTextOut,
- NULL
+ &gEfiDevicePathProtocolGuid, &mDevicePath,
+ NULL
);
if (!EFI_ERROR (Status)) {
gST->ConOut = &mSimpleTextOut;
diff --git a/EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOutSerial.inf b/EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOutSerial.inf
index 9799d550c3..e06a83d4e7 100644
--- a/EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOutSerial.inf
+++ b/EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOutSerial.inf
@@ -51,5 +51,12 @@
gEfiSerialIoProtocolGuid
gEfiDevicePathProtocolGuid
+[FixedPcd]
+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits
+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
+ gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
+
+
[depex]
TRUE