PS/2 Keyboard driver. Routines that interacts with callers,\r
conforming to EFI driver model\r
\r
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
goto ErrorExit;\r
}\r
\r
+ REPORT_STATUS_CODE_WITH_DEVICE_PATH (\r
+ EFI_PROGRESS_CODE,\r
+ EFI_PERIPHERAL_KEYBOARD | EFI_P_PC_DETECTED,\r
+ ParentDevicePath\r
+ );\r
+\r
ConsoleIn->ControllerNameTable = NULL;\r
AddUnicodeString2 (\r
"eng",\r
A faked PS/2 Absolute Pointer driver. Routines that interacts with callers,\r
conforming to EFI driver model\r
\r
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
StatusCode = EFI_PERIPHERAL_MOUSE | EFI_P_EC_NOT_DETECTED;\r
goto ErrorExit;\r
}\r
+\r
+ REPORT_STATUS_CODE_WITH_DEVICE_PATH (\r
+ EFI_PROGRESS_CODE,\r
+ EFI_PERIPHERAL_MOUSE | EFI_P_PC_DETECTED,\r
+ ParentDevicePath\r
+ );\r
+\r
//\r
// Setup the WaitForKey event\r
//\r
PS/2 Mouse driver. Routines that interacts with callers,\r
conforming to EFI driver model.\r
\r
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
StatusCode = EFI_PERIPHERAL_MOUSE | EFI_P_EC_NOT_DETECTED;\r
goto ErrorExit;\r
}\r
+\r
+ REPORT_STATUS_CODE_WITH_DEVICE_PATH (\r
+ EFI_PROGRESS_CODE,\r
+ EFI_PERIPHERAL_MOUSE | EFI_P_PC_DETECTED,\r
+ ParentDevicePath\r
+ );\r
+\r
//\r
// Setup the WaitForKey event\r
//\r
//\r
EnableAllControllers (Private);\r
if ((mBootMode == BOOT_LEGACY_OS) || (mBootMode == BOOT_UNCONVENTIONAL_DEVICE)) {\r
+ //\r
+ // Report Status Code to indicate legacy boot event will be signalled\r
+ //\r
+ REPORT_STATUS_CODE (\r
+ EFI_PROGRESS_CODE,\r
+ (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_PC_LEGACY_BOOT_EVENT)\r
+ );\r
+\r
//\r
// Signal all the events that are waiting on EVT_SIGNAL_LEGACY_BOOT\r
//\r
\r
if (EFI_ERROR (Status)) {\r
DEBUG ((EFI_D_ERROR, "return LegacyBiosInstallRom(%d): EFI_OUT_OF_RESOURCES (no more space for OpROM)\n", __LINE__));\r
+ //\r
+ // Report Status Code to indicate that there is no enough space for OpROM\r
+ //\r
+ REPORT_STATUS_CODE (\r
+ EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
+ (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_EC_LEGACY_OPROM_NO_SPACE)\r
+ );\r
return EFI_OUT_OF_RESOURCES;\r
}\r
InitAddress = (UINTN) PhysicalAddress;\r
if (RuntimeAddress + *RuntimeImageLength > PcdGet32 (PcdEndOpromShadowAddress)) {\r
DEBUG ((EFI_D_ERROR, "return LegacyBiosInstallRom(%d): EFI_OUT_OF_RESOURCES (no more space for OpROM)\n", __LINE__));\r
gBS->FreePages (PhysicalAddress, EFI_SIZE_TO_PAGES (ImageSize));\r
+ //\r
+ // Report Status Code to indicate that there is no enough space for OpROM\r
+ //\r
+ REPORT_STATUS_CODE (\r
+ EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
+ (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_EC_LEGACY_OPROM_NO_SPACE)\r
+ );\r
return EFI_OUT_OF_RESOURCES;\r
}\r
} else {\r
InitAddress = PCI_START_ADDRESS (Private->OptionRom);\r
if (InitAddress + ImageSize > PcdGet32 (PcdEndOpromShadowAddress)) {\r
DEBUG ((EFI_D_ERROR, "return LegacyBiosInstallRom(%d): EFI_OUT_OF_RESOURCES (no more space for OpROM)\n", __LINE__));\r
+ //\r
+ // Report Status Code to indicate that there is no enough space for OpROM\r
+ //\r
+ REPORT_STATUS_CODE (\r
+ EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
+ (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_EC_LEGACY_OPROM_NO_SPACE)\r
+ );\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
);\r
}\r
\r
+ //\r
+ // Report Status Code to indicate ReadyToBoot event will be signalled\r
+ //\r
+ REPORT_STATUS_CODE (EFI_PROGRESS_CODE, (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT));\r
+\r
//\r
// Signal the EVT_SIGNAL_READY_TO_BOOT event\r
//\r
// and get the bootable media handle\r
//\r
Handle = BdsLibGetBootableHandle(DevicePath);\r
- if (Handle == NULL) {\r
- goto Done;\r
- }\r
- //\r
- // Load the default boot file \EFI\BOOT\boot{machinename}.EFI from removable Media\r
- // machinename is ia32, ia64, x64, ...\r
- //\r
- FilePath = FileDevicePath (Handle, EFI_REMOVABLE_MEDIA_FILE_NAME);\r
- if (FilePath != NULL) {\r
- REPORT_STATUS_CODE (EFI_PROGRESS_CODE, PcdGet32 (PcdProgressCodeOsLoaderLoad));\r
- Status = gBS->LoadImage (\r
- TRUE,\r
- gImageHandle,\r
- FilePath,\r
- NULL,\r
- 0,\r
- &ImageHandle\r
- );\r
- if (EFI_ERROR (Status)) {\r
- //\r
- // The DevicePath failed, and it's not a valid\r
- // removable media device.\r
- //\r
- goto Done;\r
+ if (Handle != NULL) {\r
+ //\r
+ // Load the default boot file \EFI\BOOT\boot{machinename}.EFI from removable Media\r
+ // machinename is ia32, ia64, x64, ...\r
+ //\r
+ FilePath = FileDevicePath (Handle, EFI_REMOVABLE_MEDIA_FILE_NAME);\r
+ if (FilePath != NULL) {\r
+ REPORT_STATUS_CODE (EFI_PROGRESS_CODE, PcdGet32 (PcdProgressCodeOsLoaderLoad));\r
+ Status = gBS->LoadImage (\r
+ TRUE,\r
+ gImageHandle,\r
+ FilePath,\r
+ NULL,\r
+ 0,\r
+ &ImageHandle\r
+ );\r
}\r
}\r
}\r
-\r
- if (EFI_ERROR (Status)) {\r
- //\r
- // It there is any error from the Boot attempt exit now.\r
- //\r
- goto Done;\r
- }\r
}\r
//\r
// Provide the image with it's load options\r
//\r
- if (ImageHandle == NULL) {\r
+ if ((ImageHandle == NULL) || (EFI_ERROR(Status))) {\r
+ //\r
+ // Report Status Code to indicate that the failure to load boot option\r
+ //\r
+ REPORT_STATUS_CODE (\r
+ EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
+ (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_EC_BOOT_OPTION_LOAD_ERROR)\r
+ ); \r
goto Done;\r
}\r
+\r
Status = gBS->HandleProtocol (ImageHandle, &gEfiLoadedImageProtocolGuid, (VOID **) &ImageInfo);\r
ASSERT_EFI_ERROR (Status);\r
\r
\r
Status = gBS->StartImage (ImageHandle, ExitDataSize, ExitData);\r
DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Image Return Status = %r\n", Status));\r
+ if (EFI_ERROR (Status)) {\r
+ //\r
+ // Report Status Code to indicate that boot failure\r
+ //\r
+ REPORT_STATUS_CODE (\r
+ EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
+ (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_EC_BOOT_OPTION_FAILED)\r
+ );\r
+ }\r
\r
//\r
// Clear the Watchdog Timer after the image returns\r
//\r
BdsFormalizeEfiGlobalVariable();\r
\r
+ //\r
+ // Report Status Code to indicate connecting drivers will happen\r
+ //\r
+ REPORT_STATUS_CODE (\r
+ EFI_PROGRESS_CODE,\r
+ (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS)\r
+ );\r
+\r
//\r
// Do the platform init, can be customized by OEM/IBV\r
//\r