UINT32 mBmmSetupHorizontalResolution = 0;\r
UINT32 mBmmSetupVerticalResolution = 0;\r
\r
+BOOLEAN mBmmModeInitialized = FALSE;\r
+\r
EFI_DEVICE_PATH_PROTOCOL EndDevicePath[] = {\r
{\r
END_DEVICE_PATH_TYPE,\r
mAllMenuInit = FALSE;\r
}\r
\r
+/**\r
+ Initial the boot mode related parameters.\r
+\r
+**/\r
+VOID\r
+BmmInitialBootModeInfo (\r
+ VOID\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
+ EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *SimpleTextOut;\r
+ UINTN BootTextColumn;\r
+ UINTN BootTextRow;\r
+\r
+ if (mBmmModeInitialized) {\r
+ return;\r
+ }\r
+\r
+ //\r
+ // After the console is ready, get current video resolution\r
+ // and text mode before launching setup at first time.\r
+ //\r
+ Status = gBS->HandleProtocol (\r
+ gST->ConsoleOutHandle,\r
+ &gEfiGraphicsOutputProtocolGuid,\r
+ (VOID**)&GraphicsOutput\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ GraphicsOutput = NULL;\r
+ }\r
+\r
+ Status = gBS->HandleProtocol (\r
+ gST->ConsoleOutHandle,\r
+ &gEfiSimpleTextOutProtocolGuid,\r
+ (VOID**)&SimpleTextOut\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ SimpleTextOut = NULL;\r
+ }\r
+\r
+ if (GraphicsOutput != NULL) {\r
+ //\r
+ // Get current video resolution and text mode.\r
+ //\r
+ mBmmBootHorizontalResolution = GraphicsOutput->Mode->Info->HorizontalResolution;\r
+ mBmmBootVerticalResolution = GraphicsOutput->Mode->Info->VerticalResolution;\r
+ }\r
+\r
+ if (SimpleTextOut != NULL) {\r
+ Status = SimpleTextOut->QueryMode (\r
+ SimpleTextOut,\r
+ SimpleTextOut->Mode->Mode,\r
+ &BootTextColumn,\r
+ &BootTextRow\r
+ );\r
+ mBmmBootTextModeColumn = (UINT32)BootTextColumn;\r
+ mBmmBootTextModeRow = (UINT32)BootTextRow;\r
+ }\r
+\r
+ //\r
+ // Get user defined text mode for setup.\r
+ //\r
+ mBmmSetupHorizontalResolution = PcdGet32 (PcdSetupVideoHorizontalResolution);\r
+ mBmmSetupVerticalResolution = PcdGet32 (PcdSetupVideoVerticalResolution);\r
+ mBmmSetupTextModeColumn = PcdGet32 (PcdSetupConOutColumn);\r
+ mBmmSetupTextModeRow = PcdGet32 (PcdSetupConOutRow);\r
+\r
+ mBmmModeInitialized = TRUE;\r
+}\r
+\r
/**\r
\r
Install Boot Maintenance Manager Menu driver.\r
//\r
InitializeBmmConfig(mBmmCallbackInfo);\r
\r
+ BmmInitialBootModeInfo();\r
+\r
return EFI_SUCCESS;\r
}\r
\r