From 0f3a37bd6f73e08abc6bf0457480896f7300d9d2 Mon Sep 17 00:00:00 2001 From: vit9696 Date: Mon, 10 Feb 2020 11:32:03 +0300 Subject: [PATCH] OcConsoleControlEntryModeLib: Look for ConsoleControl on other handles --- .../OcConsoleControlEntryModeLib.c | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/Library/OcConsoleControlEntryModeLib/OcConsoleControlEntryModeLib.c b/Library/OcConsoleControlEntryModeLib/OcConsoleControlEntryModeLib.c index 2ceede69..16e68960 100644 --- a/Library/OcConsoleControlEntryModeLib/OcConsoleControlEntryModeLib.c +++ b/Library/OcConsoleControlEntryModeLib/OcConsoleControlEntryModeLib.c @@ -27,20 +27,29 @@ OcConsoleControlEntryModeInit ( { EFI_STATUS Status; EFI_CONSOLE_CONTROL_PROTOCOL *ConsoleControl; + // // On several firmwares we need to use legacy console control protocol to // switch to text mode, otherwise a black screen will be shown. // Status = gBS->HandleProtocol ( - gST->ConsoleOutHandle, - &gEfiConsoleControlProtocolGuid, - (VOID **)&ConsoleControl - ); + gST->ConsoleOutHandle, + &gEfiConsoleControlProtocolGuid, + (VOID **) &ConsoleControl + ); + if (EFI_ERROR (Status)) { + Status = gBS->LocateProtocol ( + &gEfiConsoleControlProtocolGuid, + NULL, + (VOID **) &ConsoleControl + ); + } + if (!EFI_ERROR (Status)) { ConsoleControl->SetMode ( - ConsoleControl, - PcdGet8 (PcdConsoleControlEntryMode) - ); + ConsoleControl, + PcdGet8 (PcdConsoleControlEntryMode) + ); } return EFI_SUCCESS;