]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
IntelFrameworkModulePkg BdsDxe: Remove redundant functions
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / FrontPage.c
index 1a864bc7791bdb5045744d604fc909d913e741da..46fdc53f2b87801128c01c3f8c2b568fb44aecca 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   FrontPage routines to handle the callbacks and browser calls\r
 \r
-Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2018, 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
@@ -189,7 +189,7 @@ FrontPageCallback (
     //\r
     return EFI_UNSUPPORTED;\r
   }\r
-  \r
+\r
   gCallbackKey = QuestionId;\r
 \r
   if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
@@ -210,7 +210,7 @@ FrontPageCallback (
       // Allocate working buffer for RFC 4646 language in supported LanguageString.\r
       //\r
       Lang = AllocatePool (AsciiStrSize (mLanguageString));\r
-      ASSERT (Lang != NULL);  \r
+      ASSERT (Lang != NULL);\r
 \r
       Index = 0;\r
       LangCode = mLanguageString;\r
@@ -279,7 +279,7 @@ FrontPageCallback (
     }\r
   }\r
 \r
-  return EFI_SUCCESS;  \r
+  return EFI_SUCCESS;\r
 }\r
 \r
 /**\r
@@ -300,6 +300,7 @@ InitializeFrontPage (
   EFI_STATUS                  Status;\r
   CHAR8                       *LangCode;\r
   CHAR8                       *Lang;\r
+  UINTN                       LangSize;\r
   CHAR8                       *CurrentLang;\r
   UINTN                       OptionCount;\r
   CHAR16                      *StringBuffer;\r
@@ -395,13 +396,13 @@ InitializeFrontPage (
   //\r
   HiiHandle = gFrontPagePrivate.HiiHandle;\r
 \r
-  CurrentLang = GetEfiGlobalVariable (L"PlatformLang");\r
+  GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&CurrentLang, NULL);\r
 \r
   //\r
   // Get Support language list from variable.\r
   //\r
   if (mLanguageString == NULL){\r
-    mLanguageString = GetEfiGlobalVariable (L"PlatformLangCodes");\r
+    GetEfiGlobalVariable2 (L"PlatformLangCodes", (VOID**)&mLanguageString, NULL);\r
     if (mLanguageString == NULL) {\r
       mLanguageString = AllocateCopyPool (\r
                                  AsciiStrSize ((CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)),\r
@@ -414,7 +415,7 @@ InitializeFrontPage (
   if (gFrontPagePrivate.LanguageToken == NULL) {\r
     //\r
     // Count the language list number.\r
-    //  \r
+    //\r
     LangCode      = mLanguageString;\r
     Lang          = AllocatePool (AsciiStrSize (mLanguageString));\r
     ASSERT (Lang != NULL);\r
@@ -448,9 +449,10 @@ InitializeFrontPage (
       }\r
 \r
       if (EFI_ERROR (Status)) {\r
-        StringBuffer = AllocatePool (AsciiStrSize (Lang) * sizeof (CHAR16));\r
+        LangSize = AsciiStrSize (Lang);\r
+        StringBuffer = AllocatePool (LangSize * sizeof (CHAR16));\r
         ASSERT (StringBuffer != NULL);\r
-        AsciiStrToUnicodeStr (Lang, StringBuffer);\r
+        AsciiStrToUnicodeStrS (Lang, StringBuffer, LangSize);\r
       }\r
 \r
       ASSERT (StringBuffer != NULL);\r
@@ -567,35 +569,6 @@ CallFrontPage (
   return Status;\r
 }\r
 \r
-/**\r
-  Acquire the string associated with the ProducerGuid and return it.\r
-\r
-\r
-  @param ProducerGuid    The Guid to search the HII database for\r
-  @param Token           The token value of the string to extract\r
-  @param String          The string that is extracted\r
-\r
-  @retval  EFI_SUCCESS  The function returns EFI_SUCCESS always.\r
-\r
-**/\r
-EFI_STATUS\r
-GetProducerString (\r
-  IN      EFI_GUID                  *ProducerGuid,\r
-  IN      EFI_STRING_ID             Token,\r
-  OUT     CHAR16                    **String\r
-  )\r
-{\r
-  EFI_STRING      TmpString;\r
-\r
-  TmpString = HiiGetPackageString (ProducerGuid, Token, NULL);\r
-  if (TmpString == NULL) {\r
-    *String = GetStringById (STRING_TOKEN (STR_MISSING_STRING));\r
-  } else {\r
-    *String = TmpString;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
 \r
 /**\r
   Convert Processor Frequency Data to a string.\r
@@ -618,7 +591,7 @@ ConvertProcessorToString (
 \r
   if (Base10Exponent >= 6) {\r
     FreqMhz = ProcessorFrequency;\r
-    for (Index = 0; Index < (UINTN) (Base10Exponent - 6); Index++) {\r
+    for (Index = 0; Index < ((UINT32)Base10Exponent - 6); Index++) {\r
       FreqMhz *= 10;\r
     }\r
   } else {\r
@@ -627,10 +600,17 @@ ConvertProcessorToString (
 \r
   StringBuffer = AllocateZeroPool (0x20);\r
   ASSERT (StringBuffer != NULL);\r
-  Index = UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
-  StrCat (StringBuffer, L".");\r
-  UnicodeValueToString (StringBuffer + Index + 1, PREFIX_ZERO, (FreqMhz % 1000) / 10, 2);\r
-  StrCat (StringBuffer, L" GHz");\r
+  UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
+  Index = StrnLenS (StringBuffer, 0x20 / sizeof (CHAR16));\r
+  StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L".");\r
+  UnicodeValueToStringS (\r
+    StringBuffer + Index + 1,\r
+    0x20 - sizeof (CHAR16) * (Index + 1),\r
+    PREFIX_ZERO,\r
+    (FreqMhz % 1000) / 10,\r
+    2\r
+    );\r
+  StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" GHz");\r
   *String = (CHAR16 *) StringBuffer;\r
   return ;\r
 }\r
@@ -653,8 +633,8 @@ ConvertMemorySizeToString (
 \r
   StringBuffer = AllocateZeroPool (0x20);\r
   ASSERT (StringBuffer != NULL);\r
-  UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, MemorySize, 6);\r
-  StrCat (StringBuffer, L" MB RAM");\r
+  UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, MemorySize, 6);\r
+  StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" MB RAM");\r
 \r
   *String = (CHAR16 *) StringBuffer;\r
 \r
@@ -702,7 +682,7 @@ GetOptionalStringByIndex (
     *String = GetStringById (STRING_TOKEN (STR_MISSING_STRING));\r
   } else {\r
     *String = AllocatePool (StrSize * sizeof (CHAR16));\r
-    AsciiStrToUnicodeStr (OptionalStrStart, *String);\r
+    AsciiStrToUnicodeStrS (OptionalStrStart, *String, StrSize);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -720,7 +700,6 @@ UpdateFrontPageStrings (
 {\r
   UINT8                             StrIndex;\r
   CHAR16                            *NewString;\r
-  BOOLEAN                           Find[5];\r
   EFI_STATUS                        Status;\r
   EFI_STRING_ID                     TokenToUpdate;\r
   EFI_SMBIOS_HANDLE                 SmbiosHandle;\r
@@ -730,8 +709,9 @@ UpdateFrontPageStrings (
   SMBIOS_TABLE_TYPE4                *Type4Record;\r
   SMBIOS_TABLE_TYPE19               *Type19Record;\r
   EFI_SMBIOS_TABLE_HEADER           *Record;\r
+  UINT64                            InstalledMemory;\r
 \r
-  ZeroMem (Find, sizeof (Find));\r
+  InstalledMemory = 0;\r
 \r
   //\r
   // Update Front Page strings\r
@@ -741,66 +721,66 @@ UpdateFrontPageStrings (
                   NULL,\r
                   (VOID **) &Smbios\r
                   );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;\r
-  do {\r
+  if (!EFI_ERROR (Status)) {\r
+    SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;\r
     Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
-    if (EFI_ERROR(Status)) {\r
-      break;\r
-    }\r
+    while (!EFI_ERROR(Status)) {\r
+      if (Record->Type == SMBIOS_TYPE_BIOS_INFORMATION) {\r
+        Type0Record = (SMBIOS_TABLE_TYPE0 *) Record;\r
+        StrIndex = Type0Record->BiosVersion;\r
+        GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type0Record + Type0Record->Hdr.Length), StrIndex, &NewString);\r
+        TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+        FreePool (NewString);\r
+      }\r
 \r
-    if (Record->Type == EFI_SMBIOS_TYPE_BIOS_INFORMATION) {\r
-      Type0Record = (SMBIOS_TABLE_TYPE0 *) Record;\r
-      StrIndex = Type0Record->BiosVersion;\r
-      GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type0Record + Type0Record->Hdr.Length), StrIndex, &NewString);\r
-      TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION);\r
-      HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
-      FreePool (NewString);\r
-      Find[0] = TRUE;\r
-    }  \r
-\r
-    if (Record->Type == EFI_SMBIOS_TYPE_SYSTEM_INFORMATION) {\r
-      Type1Record = (SMBIOS_TABLE_TYPE1 *) Record;\r
-      StrIndex = Type1Record->ProductName;\r
-      GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type1Record + Type1Record->Hdr.Length), StrIndex, &NewString);\r
-      TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL);\r
-      HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
-      FreePool (NewString);\r
-      Find[1] = TRUE;\r
-    }\r
-      \r
-    if (Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
-      Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
-      StrIndex = Type4Record->ProcessorVersion;\r
-      GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type4Record + Type4Record->Hdr.Length), StrIndex, &NewString);\r
-      TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL);\r
-      HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
-      FreePool (NewString);\r
-      Find[2] = TRUE;\r
-    }    \r
-\r
-    if (Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
-      Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
-      ConvertProcessorToString(Type4Record->CurrentSpeed, 6, &NewString);\r
-      TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED);\r
-      HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
-      FreePool (NewString);\r
-      Find[3] = TRUE;\r
-    } \r
-\r
-    if ( Record->Type == EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS ) {\r
-      Type19Record = (SMBIOS_TABLE_TYPE19 *) Record;\r
-      ConvertMemorySizeToString (\r
-        (UINT32)(RShiftU64((Type19Record->EndingAddress - Type19Record->StartingAddress + 1), 10)),\r
-        &NewString\r
-        );\r
-      TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
-      HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
-      FreePool (NewString);\r
-      Find[4] = TRUE;  \r
+      if (Record->Type == SMBIOS_TYPE_SYSTEM_INFORMATION) {\r
+        Type1Record = (SMBIOS_TABLE_TYPE1 *) Record;\r
+        StrIndex = Type1Record->ProductName;\r
+        GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type1Record + Type1Record->Hdr.Length), StrIndex, &NewString);\r
+        TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+        FreePool (NewString);\r
+      }\r
+\r
+      if (Record->Type == SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
+        Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
+        StrIndex = Type4Record->ProcessorVersion;\r
+        GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type4Record + Type4Record->Hdr.Length), StrIndex, &NewString);\r
+        TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+        FreePool (NewString);\r
+      }\r
+\r
+      if (Record->Type == SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
+        Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
+        ConvertProcessorToString(Type4Record->CurrentSpeed, 6, &NewString);\r
+        TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+        FreePool (NewString);\r
+      }\r
+\r
+      if ( Record->Type == SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS ) {\r
+        Type19Record = (SMBIOS_TABLE_TYPE19 *) Record;\r
+        if (Type19Record->StartingAddress != 0xFFFFFFFF ) {\r
+          InstalledMemory += RShiftU64(Type19Record->EndingAddress -\r
+                                       Type19Record->StartingAddress + 1, 10);\r
+        } else {\r
+          InstalledMemory += RShiftU64(Type19Record->ExtendedEndingAddress -\r
+                                       Type19Record->ExtendedStartingAddress + 1, 20);\r
+        }\r
+      }\r
+\r
+      Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
     }\r
-  } while ( !(Find[0] && Find[1] && Find[2] && Find[3] && Find[4]));\r
+\r
+    // now update the total installed RAM size\r
+    ConvertMemorySizeToString ((UINT32)InstalledMemory, &NewString );\r
+    TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
+    HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+    FreePool (NewString);\r
+  }\r
+\r
   return ;\r
 }\r
 \r
@@ -891,64 +871,62 @@ ShowProgress (
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;\r
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Color;\r
 \r
-  if (TimeoutDefault == 0) {\r
-    return EFI_TIMEOUT;\r
-  }\r
+  if (TimeoutDefault != 0) {\r
+    DEBUG ((EFI_D_INFO, "\n\nStart showing progress bar... Press any key to stop it! ...Zzz....\n"));\r
 \r
-  DEBUG ((EFI_D_INFO, "\n\nStart showing progress bar... Press any key to stop it! ...Zzz....\n"));\r
+    SetMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
+    SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);\r
+    SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
 \r
-  SetMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
-  SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);\r
-  SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
-  \r
-  TmpStr = GetStringById (STRING_TOKEN (STR_START_BOOT_OPTION));\r
+    TmpStr = GetStringById (STRING_TOKEN (STR_START_BOOT_OPTION));\r
 \r
-  if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
-    //\r
-    // Clear the progress status bar first\r
-    //\r
-    if (TmpStr != NULL) {\r
-      PlatformBdsShowProgress (Foreground, Background, TmpStr, Color, 0, 0);\r
-    }\r
-  }\r
-  \r
-\r
-  TimeoutRemain = TimeoutDefault;\r
-  while (TimeoutRemain != 0) {\r
-    DEBUG ((EFI_D_INFO, "Showing progress bar...Remaining %d second!\n", TimeoutRemain));\r
-\r
-    Status = WaitForSingleEvent (gST->ConIn->WaitForKey, ONE_SECOND);\r
-    if (Status != EFI_TIMEOUT) {\r
-      break;\r
-    }\r
-    TimeoutRemain--;\r
-    \r
     if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
       //\r
-      // Show progress\r
+      // Clear the progress status bar first\r
       //\r
       if (TmpStr != NULL) {\r
-        PlatformBdsShowProgress (\r
-          Foreground,\r
-          Background,\r
-          TmpStr,\r
-          Color,\r
-          ((TimeoutDefault - TimeoutRemain) * 100 / TimeoutDefault),\r
-          0\r
-          );\r
+        PlatformBdsShowProgress (Foreground, Background, TmpStr, Color, 0, 0);\r
       }\r
     }\r
-  }\r
-  \r
-  if (TmpStr != NULL) {\r
-    gBS->FreePool (TmpStr);\r
-  }\r
 \r
-  //\r
-  // Timeout expired\r
-  //\r
-  if (TimeoutRemain == 0) {\r
-    return EFI_TIMEOUT;\r
+\r
+    TimeoutRemain = TimeoutDefault;\r
+    while (TimeoutRemain != 0) {\r
+      DEBUG ((EFI_D_INFO, "Showing progress bar...Remaining %d second!\n", TimeoutRemain));\r
+\r
+      Status = WaitForSingleEvent (gST->ConIn->WaitForKey, ONE_SECOND);\r
+      if (Status != EFI_TIMEOUT) {\r
+        break;\r
+      }\r
+      TimeoutRemain--;\r
+\r
+      if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {\r
+        //\r
+        // Show progress\r
+        //\r
+        if (TmpStr != NULL) {\r
+          PlatformBdsShowProgress (\r
+            Foreground,\r
+            Background,\r
+            TmpStr,\r
+            Color,\r
+            ((TimeoutDefault - TimeoutRemain) * 100 / TimeoutDefault),\r
+            0\r
+            );\r
+        }\r
+      }\r
+    }\r
+\r
+    if (TmpStr != NULL) {\r
+      gBS->FreePool (TmpStr);\r
+    }\r
+\r
+    //\r
+    // Timeout expired\r
+    //\r
+    if (TimeoutRemain == 0) {\r
+      return EFI_TIMEOUT;\r
+    }\r
   }\r
 \r
   //\r
@@ -990,7 +968,7 @@ PlatformBdsEnterFrontPage (
   )\r
 {\r
   EFI_STATUS                         Status;\r
-  EFI_STATUS                         StatusHotkey; \r
+  EFI_STATUS                         StatusHotkey;\r
   EFI_BOOT_LOGO_PROTOCOL             *BootLogo;\r
   EFI_GRAPHICS_OUTPUT_PROTOCOL       *GraphicsOutput;\r
   EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *SimpleTextOut;\r
@@ -1013,7 +991,7 @@ PlatformBdsEnterFrontPage (
 \r
   if (!mModeInitialized) {\r
     //\r
-    // After the console is ready, get current video resolution \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
@@ -1024,7 +1002,7 @@ PlatformBdsEnterFrontPage (
     if (EFI_ERROR (Status)) {\r
       GraphicsOutput = NULL;\r
     }\r
-    \r
+\r
     Status = gBS->HandleProtocol (\r
                     gST->ConsoleOutHandle,\r
                     &gEfiSimpleTextOutProtocolGuid,\r
@@ -1032,7 +1010,7 @@ PlatformBdsEnterFrontPage (
                     );\r
     if (EFI_ERROR (Status)) {\r
       SimpleTextOut = NULL;\r
-    }  \r
+    }\r
 \r
     if (GraphicsOutput != NULL) {\r
       //\r
@@ -1055,9 +1033,9 @@ PlatformBdsEnterFrontPage (
 \r
     //\r
     // Get user defined text mode for setup.\r
-    //  \r
+    //\r
     mSetupHorizontalResolution = PcdGet32 (PcdSetupVideoHorizontalResolution);\r
-    mSetupVerticalResolution   = PcdGet32 (PcdSetupVideoVerticalResolution);      \r
+    mSetupVerticalResolution   = PcdGet32 (PcdSetupVideoVerticalResolution);\r
     mSetupTextModeColumn       = PcdGet32 (PcdSetupConOutColumn);\r
     mSetupTextModeRow          = PcdGet32 (PcdSetupConOutRow);\r
 \r
@@ -1084,7 +1062,7 @@ PlatformBdsEnterFrontPage (
   if (!EFI_ERROR(Status) && ((OsIndication & EFI_OS_INDICATIONS_BOOT_TO_FW_UI) != 0)) {\r
     //\r
     // Clear EFI_OS_INDICATIONS_BOOT_TO_FW_UI to acknowledge OS\r
-    // \r
+    //\r
     OsIndication &= ~((UINT64)EFI_OS_INDICATIONS_BOOT_TO_FW_UI);\r
     Status = gRT->SetVariable (\r
                     L"OsIndications",\r
@@ -1121,7 +1099,7 @@ PlatformBdsEnterFrontPage (
       if (!FeaturePcdGet(PcdBootlogoOnlyEnable) || !EFI_ERROR(Status) || !EFI_ERROR(StatusHotkey)){\r
         //\r
         // Ensure screen is clear when switch Console from Graphics mode to Text mode\r
-        // Skip it in normal boot \r
+        // Skip it in normal boot\r
         //\r
         gST->ConOut->EnableCursor (gST->ConOut, TRUE);\r
         gST->ConOut->ClearScreen (gST->ConOut);\r
@@ -1145,8 +1123,8 @@ PlatformBdsEnterFrontPage (
   }\r
 \r
   //\r
-  // Install BM HiiPackages. \r
-  // Keep BootMaint HiiPackage, so that it can be covered by global setting. \r
+  // Install BM HiiPackages.\r
+  // Keep BootMaint HiiPackage, so that it can be covered by global setting.\r
   //\r
   InitBMPackage ();\r
 \r
@@ -1156,7 +1134,7 @@ PlatformBdsEnterFrontPage (
     // Set proper video resolution and text mode for setup\r
     //\r
     BdsSetConsoleMode (TRUE);\r
-    \r
+\r
     InitializeFrontPage (FALSE);\r
 \r
     //\r
@@ -1265,9 +1243,9 @@ Exit:
 \r
 /**\r
   This function will change video resolution and text mode\r
-  according to defined setup mode or defined boot mode  \r
+  according to defined setup mode or defined boot mode\r
 \r
-  @param  IsSetupMode   Indicate mode is changed to setup mode or boot mode. \r
+  @param  IsSetupMode   Indicate mode is changed to setup mode or boot mode.\r
 \r
   @retval  EFI_SUCCESS  Mode is changed successfully.\r
   @retval  Others             Mode failed to be changed.\r
@@ -1295,13 +1273,13 @@ BdsSetConsoleMode (
   EFI_STATUS                            Status;\r
   UINTN                                 Index;\r
   UINTN                                 CurrentColumn;\r
-  UINTN                                 CurrentRow;  \r
+  UINTN                                 CurrentRow;\r
 \r
   MaxGopMode  = 0;\r
   MaxTextMode = 0;\r
 \r
   //\r
-  // Get current video resolution and text mode \r
+  // Get current video resolution and text mode\r
   //\r
   Status = gBS->HandleProtocol (\r
                   gST->ConsoleOutHandle,\r
@@ -1319,7 +1297,7 @@ BdsSetConsoleMode (
                   );\r
   if (EFI_ERROR (Status)) {\r
     SimpleTextOut = NULL;\r
-  }  \r
+  }\r
 \r
   if ((GraphicsOutput == NULL) || (SimpleTextOut == NULL)) {\r
     return EFI_UNSUPPORTED;\r
@@ -1327,7 +1305,7 @@ BdsSetConsoleMode (
 \r
   if (IsSetupMode) {\r
     //\r
-    // The requried resolution and text mode is setup mode.\r
+    // The required resolution and text mode is setup mode.\r
     //\r
     NewHorizontalResolution = mSetupHorizontalResolution;\r
     NewVerticalResolution   = mSetupVerticalResolution;\r
@@ -1340,12 +1318,12 @@ BdsSetConsoleMode (
     NewHorizontalResolution = mBootHorizontalResolution;\r
     NewVerticalResolution   = mBootVerticalResolution;\r
     NewColumns              = mBootTextModeColumn;\r
-    NewRows                 = mBootTextModeRow;   \r
+    NewRows                 = mBootTextModeRow;\r
   }\r
-  \r
+\r
   if (GraphicsOutput != NULL) {\r
     MaxGopMode  = GraphicsOutput->Mode->MaxMode;\r
-  } \r
+  }\r
 \r
   if (SimpleTextOut != NULL) {\r
     MaxTextMode = SimpleTextOut->Mode->MaxMode;\r
@@ -1383,7 +1361,7 @@ BdsSetConsoleMode (
             return EFI_SUCCESS;\r
           } else {\r
             //\r
-            // If current text mode is different from requried text mode.  Set new video mode\r
+            // If current text mode is different from required text mode.  Set new video mode\r
             //\r
             for (Index = 0; Index < MaxTextMode; Index++) {\r
               Status = SimpleTextOut->QueryMode (SimpleTextOut, Index, &CurrentColumn, &CurrentRow);\r
@@ -1397,8 +1375,10 @@ BdsSetConsoleMode (
                   //\r
                   // Update text mode PCD.\r
                   //\r
-                  PcdSet32 (PcdConOutColumn, mSetupTextModeColumn);\r
-                  PcdSet32 (PcdConOutRow, mSetupTextModeRow);\r
+                  Status = PcdSet32S (PcdConOutColumn, mSetupTextModeColumn);\r
+                  ASSERT_EFI_ERROR (Status);\r
+                  Status = PcdSet32S (PcdConOutRow, mSetupTextModeRow);\r
+                  ASSERT_EFI_ERROR (Status);\r
                   FreePool (Info);\r
                   return EFI_SUCCESS;\r
                 }\r
@@ -1406,7 +1386,7 @@ BdsSetConsoleMode (
             }\r
             if (Index == MaxTextMode) {\r
               //\r
-              // If requried text mode is not supported, return error.\r
+              // If required text mode is not supported, return error.\r
               //\r
               FreePool (Info);\r
               return EFI_UNSUPPORTED;\r
@@ -1439,12 +1419,16 @@ BdsSetConsoleMode (
   // Set PCD to Inform GraphicsConsole to change video resolution.\r
   // Set PCD to Inform Consplitter to change text mode.\r
   //\r
-  PcdSet32 (PcdVideoHorizontalResolution, NewHorizontalResolution);\r
-  PcdSet32 (PcdVideoVerticalResolution, NewVerticalResolution);\r
-  PcdSet32 (PcdConOutColumn, NewColumns);\r
-  PcdSet32 (PcdConOutRow, NewRows);\r
-  \r
-  \r
+  Status = PcdSet32S (PcdVideoHorizontalResolution, NewHorizontalResolution);\r
+  ASSERT_EFI_ERROR (Status);\r
+  Status = PcdSet32S (PcdVideoVerticalResolution, NewVerticalResolution);\r
+  ASSERT_EFI_ERROR (Status);\r
+  Status = PcdSet32S (PcdConOutColumn, NewColumns);\r
+  ASSERT_EFI_ERROR (Status);\r
+  Status = PcdSet32S (PcdConOutRow, NewRows);\r
+  ASSERT_EFI_ERROR (Status);\r
+\r
+\r
   //\r
   // Video mode is changed, so restart graphics console driver and higher level driver.\r
   // Reconnect graphics console driver and higher level driver.\r