]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPlatformPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c
ArmPlatformPkg/IntelBds: call BdsLibConnectAll()
[mirror_edk2.git] / ArmPlatformPkg / Library / PlatformIntelBdsLib / IntelBdsPlatform.c
index 7397047279452d75e12f79a49ee854beb6e20192..ceb4f076e2a6fcf6d9baabdba2247bdc01760381 100644 (file)
@@ -31,6 +31,24 @@ PlatformIntelBdsConstructor (
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  An empty function to pass error checking of CreateEventEx ().\r
+\r
+  @param  Event                 Event whose notification function is being invoked.\r
+  @param  Context               Pointer to the notification function's context,\r
+                                which is implementation-dependent.\r
+\r
+**/\r
+STATIC\r
+VOID\r
+EFIAPI\r
+EmptyCallbackFunction (\r
+  IN EFI_EVENT                Event,\r
+  IN VOID                     *Context\r
+  )\r
+{\r
+}\r
+\r
 //\r
 // BDS Platform Functions\r
 //\r
@@ -45,6 +63,24 @@ PlatformBdsInit (
   VOID\r
   )\r
 {\r
+  EFI_EVENT           EndOfDxeEvent;\r
+  EFI_STATUS          Status;\r
+\r
+  //\r
+  // Signal EndOfDxe PI Event\r
+  //\r
+  Status = gBS->CreateEventEx (\r
+                  EVT_NOTIFY_SIGNAL,\r
+                  TPL_CALLBACK,\r
+                  EmptyCallbackFunction,\r
+                  NULL,\r
+                  &gEfiEndOfDxeEventGroupGuid,\r
+                  &EndOfDxeEvent\r
+                  );\r
+  if (!EFI_ERROR (Status)) {\r
+    gBS->SignalEvent (EndOfDxeEvent);\r
+    gBS->CloseEvent (EndOfDxeEvent);\r
+  }\r
 }\r
 \r
 STATIC\r
@@ -154,12 +190,12 @@ InitializeConsolePipe (
     DEBUG_CODE_BEGIN();\r
       if (EFI_ERROR(Status)) {\r
         // We convert back to the text representation of the device Path\r
-        EFI_DEVICE_PATH_TO_TEXT_PROTOCOL* DevicePathToTextProtocol;\r
-        CHAR16* DevicePathTxt;\r
-        EFI_STATUS Status;\r
+        EFI_DEVICE_PATH_TO_TEXT_PROTOCOL  *DevicePathToTextProtocol;\r
+        CHAR16                            *DevicePathTxt;\r
 \r
-        Status = gBS->LocateProtocol(&gEfiDevicePathToTextProtocolGuid, NULL, (VOID **)&DevicePathToTextProtocol);\r
-        if (!EFI_ERROR(Status)) {\r
+        DevicePathToTextProtocol = NULL;\r
+        gBS->LocateProtocol(&gEfiDevicePathToTextProtocolGuid, NULL, (VOID **) &DevicePathToTextProtocol);\r
+        if (DevicePathToTextProtocol != NULL) {\r
           DevicePathTxt = DevicePathToTextProtocol->ConvertDevicePathToText (DevicePath, TRUE, TRUE);\r
 \r
           DEBUG((EFI_D_ERROR,"Fail to start the console with the Device Path '%s'. (Error '%r')\n", DevicePathTxt, Status));\r
@@ -311,6 +347,18 @@ PlatformBdsPolicyBehavior (
 \r
   Status = PlatformBdsConnectConsole ();\r
   ASSERT_EFI_ERROR (Status);\r
+\r
+  //\r
+  // Show the splash screen.\r
+  //\r
+  EnableQuietBoot (PcdGetPtr (PcdLogoFile));\r
+\r
+  //\r
+  // Connect _all_ devices, to pick up plug-in and removable devices\r
+  // TODO: do this more cleanly, permitting faster boot times when boot config\r
+  //       is known\r
+  //\r
+  BdsLibConnectAll ();\r
 }\r
 \r
 /**\r