X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EmbeddedPkg%2FSimpleTextInOutSerial%2FSimpleTextInOut.c;h=bdc67fbda03241b4bc00dd0e8ceb26b180ee064a;hp=f491de6e9523312f486ad51dd71f2ebb88a6c349;hb=026e30c4bb80a73ac7c5c286711ae07b1c51108b;hpb=2ef2b01e07c02db339f34004445734a2dbdd80e1 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;