From 026e30c4bb80a73ac7c5c286711ae07b1c51108b Mon Sep 17 00:00:00 2001 From: andrewfish Date: Mon, 15 Feb 2010 20:40:51 +0000 Subject: 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 --- .../SimpleTextInOutSerial/SimpleTextInOut.c | 34 ++++++++++++++++++++-- .../SimpleTextInOutSerial.inf | 7 +++++ 2 files changed, 39 insertions(+), 2 deletions(-) (limited to 'EmbeddedPkg/SimpleTextInOutSerial') 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 #include #include +#include #include #include #include +#include #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 -- cgit v1.2.3