]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c
UefiPayloadPkg: Get platform specific logic via protocol for BDS
[mirror_edk2.git] / UefiPayloadPkg / Library / PlatformBootManagerLib / PlatformBootManager.c
index 7fa3a048b74184a00e05b033581931208d641765..fce48d26a1a5b55e0fdbdbf1626d0c3f8fa39c63 100644 (file)
@@ -2,13 +2,16 @@
   This file include all platform action which can be customized\r
   by IBV/OEM.\r
 \r
-Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include "PlatformBootManager.h"\r
 #include "PlatformConsole.h"\r
+#include <Protocol/PlatformBootManagerOverride.h>\r
+\r
+UNIVERSAL_PAYLOAD_PLATFORM_BOOT_MANAGER_OVERRIDE_PROTOCOL  *mUniversalPayloadPlatformBootManagerOverrideInstance = NULL;\r
 \r
 VOID\r
 InstallReadyToLock (\r
@@ -156,6 +159,16 @@ PlatformBootManagerBeforeConsole (
   EFI_INPUT_KEY                F2;\r
   EFI_INPUT_KEY                Down;\r
   EFI_BOOT_MANAGER_LOAD_OPTION BootOption;\r
+  EFI_STATUS                   Status;\r
+\r
+  Status = gBS->LocateProtocol (&gUniversalPayloadPlatformBootManagerOverrideProtocolGuid, NULL, (VOID **) &mUniversalPayloadPlatformBootManagerOverrideInstance);\r
+  if (EFI_ERROR (Status)) {\r
+    mUniversalPayloadPlatformBootManagerOverrideInstance = NULL;\r
+  }\r
+  if (mUniversalPayloadPlatformBootManagerOverrideInstance != NULL){\r
+    mUniversalPayloadPlatformBootManagerOverrideInstance->BeforeConsole();\r
+    return;\r
+  }\r
 \r
   //\r
   // Register ENTER as CONTINUE key\r
@@ -213,6 +226,10 @@ PlatformBootManagerAfterConsole (
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL  Black;\r
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL  White;\r
 \r
+  if (mUniversalPayloadPlatformBootManagerOverrideInstance != NULL){\r
+    mUniversalPayloadPlatformBootManagerOverrideInstance->AfterConsole();\r
+    return;\r
+  }\r
   Black.Blue = Black.Green = Black.Red = Black.Reserved = 0;\r
   White.Blue = White.Green = White.Red = White.Reserved = 0xFF;\r
 \r
@@ -244,6 +261,9 @@ PlatformBootManagerWaitCallback (
   UINT16          TimeoutRemain\r
 )\r
 {\r
+  if (mUniversalPayloadPlatformBootManagerOverrideInstance != NULL){\r
+    mUniversalPayloadPlatformBootManagerOverrideInstance->WaitCallback (TimeoutRemain);\r
+  }\r
   return;\r
 }\r
 \r
@@ -260,6 +280,9 @@ PlatformBootManagerUnableToBoot (
   VOID\r
   )\r
 {\r
+  if (mUniversalPayloadPlatformBootManagerOverrideInstance != NULL){\r
+    mUniversalPayloadPlatformBootManagerOverrideInstance->UnableToBoot();\r
+  }\r
   return;\r
 }\r
 \r