]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
Fix the potential issue that using integrate as BOOLEAN value in judgment.
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / FrontPage.c
index c1b4eff1cd7eef849f581d86a5bd1d8ec718d747..2098602b2f729750e84eb436c2b70ab39d054bb2 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   FrontPage routines to handle the callbacks and browser calls\r
 \r
-Copyright (c) 2004 - 2008, Intel Corporation. <BR>\r
+Copyright (c) 2004 - 2009, Intel Corporation. <BR>\r
 All rights reserved. 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
@@ -14,6 +14,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include "Bds.h"\r
 #include "FrontPage.h"\r
+#include "Language.h"\r
 \r
 EFI_GUID  mFrontPageGuid      = FRONT_PAGE_FORMSET_GUID;\r
 \r
@@ -37,6 +38,31 @@ FRONT_PAGE_CALLBACK_DATA  gFrontPagePrivate = {
   }\r
 };\r
 \r
+HII_VENDOR_DEVICE_PATH  mFrontPageHiiVendorDevicePath = {\r
+  {\r
+    {\r
+      HARDWARE_DEVICE_PATH,\r
+      HW_VENDOR_DP,\r
+      {\r
+        (UINT8) (sizeof (VENDOR_DEVICE_PATH)),\r
+        (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)\r
+      }\r
+    },\r
+    //\r
+    // {8E6D99EE-7531-48f8-8745-7F6144468FF2}\r
+    //\r
+    { 0x8e6d99ee, 0x7531, 0x48f8, { 0x87, 0x45, 0x7f, 0x61, 0x44, 0x46, 0x8f, 0xf2 } }\r
+  },\r
+  {\r
+    END_DEVICE_PATH_TYPE,\r
+    END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
+    { \r
+      (UINT8) (END_DEVICE_PATH_LENGTH),\r
+      (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)\r
+    }\r
+  }\r
+};\r
+\r
 /**\r
   This function allows a caller to extract the current configuration for one\r
   or more named elements from the target driver.\r
@@ -68,6 +94,10 @@ FakeExtractConfig (
   OUT EFI_STRING                             *Results\r
   )\r
 {\r
+  if (Request == NULL || Progress == NULL || Results == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+  *Progress = Request;\r
   return EFI_NOT_FOUND;\r
 }\r
 \r
@@ -95,6 +125,17 @@ FakeRouteConfig (
   OUT EFI_STRING                             *Progress\r
   )\r
 {\r
+  if (Configuration == NULL || Progress == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
+  *Progress = Configuration;\r
+  if (!HiiIsConfigHdrMatch (Configuration, &mBootMaintGuid, mBootMaintStorageName)\r
+      && !HiiIsConfigHdrMatch (Configuration, &mFileExplorerGuid, mFileExplorerStorageName)) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
+  *Progress = Configuration + StrLen (Configuration);\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -129,10 +170,11 @@ FrontPageCallback (
 {\r
   CHAR8                         *LanguageString;\r
   CHAR8                         *LangCode;\r
-  CHAR8                         Lang[RFC_3066_ENTRY_SIZE];\r
-  CHAR8                         OldLang[ISO_639_2_ENTRY_SIZE];\r
+  CHAR8                         *Lang;\r
   UINTN                         Index;\r
   EFI_STATUS                    Status;\r
+  CHAR8                         *PlatformSupportedLanguages;\r
+  CHAR8                         *BestLanguage;\r
 \r
   if ((Value == NULL) || (ActionRequest == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -156,13 +198,18 @@ FrontPageCallback (
     //\r
     // Collect the languages from what our current Language support is based on our VFR\r
     //\r
-    LanguageString = HiiLibGetSupportedLanguages (gFrontPagePrivate.HiiHandle);\r
+    LanguageString = HiiGetSupportedLanguages (gFrontPagePrivate.HiiHandle);\r
     ASSERT (LanguageString != NULL);\r
-\r
+    //\r
+    // Allocate working buffer for RFC 4646 language in supported LanguageString.\r
+    //\r
+    Lang = AllocatePool (AsciiStrSize (LanguageString));\r
+    ASSERT (Lang != NULL);\r
+    \r
     Index = 0;\r
     LangCode = LanguageString;\r
     while (*LangCode != 0) {\r
-      HiiLibGetNextLanguage (&LangCode, Lang);\r
+      GetNextLanguage (&LangCode, Lang);\r
 \r
       if (Index == Value->u8) {\r
         break;\r
@@ -171,30 +218,40 @@ FrontPageCallback (
       Index++;\r
     }\r
 \r
-    Status = gRT->SetVariable (\r
-                    L"PlatformLang",\r
-                    &gEfiGlobalVariableGuid,\r
-                    EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,\r
-                    AsciiStrSize (Lang),\r
-                    Lang\r
-                    );\r
-\r
-    if (!FeaturePcdGet (PcdUefiVariableDefaultLangDeprecate)) {\r
-      //\r
-      // Set UEFI deprecated variable "Lang" for backwards compatibility\r
-      //\r
-      Status = ConvertRfc3066LanguageToIso639Language (Lang, OldLang);\r
-      if (!EFI_ERROR (Status)) {\r
-        Status = gRT->SetVariable (\r
-                        L"Lang",\r
-                        &gEfiGlobalVariableGuid,\r
-                        EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,\r
-                        ISO_639_2_ENTRY_SIZE,\r
-                        OldLang\r
-                        );\r
-      }\r
+    PlatformSupportedLanguages = GetEfiGlobalVariable (L"PlatformLangCodes");\r
+    if (PlatformSupportedLanguages == NULL) {\r
+      PlatformSupportedLanguages = AllocateCopyPool (\r
+                                     AsciiStrSize ((CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)),\r
+                                     (CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)\r
+                                     );\r
+      ASSERT (PlatformSupportedLanguages != NULL);\r
+    }\r
+    \r
+    //\r
+    // Select the best language in platform supported Language.\r
+    //\r
+    BestLanguage = GetBestLanguage (\r
+                     PlatformSupportedLanguages,\r
+                     FALSE,\r
+                     Lang,\r
+                     NULL\r
+                     );\r
+    if (BestLanguage != NULL) {\r
+      Status = gRT->SetVariable (\r
+                      L"PlatformLang",\r
+                      &gEfiGlobalVariableGuid,\r
+                      EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,\r
+                      AsciiStrSize (BestLanguage),\r
+                      Lang\r
+                      );\r
+      ASSERT_EFI_ERROR(Status);\r
+      FreePool (BestLanguage);\r
+    } else {\r
+      ASSERT (FALSE);\r
     }\r
 \r
+    FreePool (PlatformSupportedLanguages);\r
+    FreePool (Lang);\r
     FreePool (LanguageString);\r
     break;\r
 \r
@@ -242,19 +299,21 @@ InitializeFrontPage (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-  EFI_HII_PACKAGE_LIST_HEADER *PackageList;\r
-  EFI_HII_UPDATE_DATA         UpdateData;\r
-  IFR_OPTION                  *OptionList;\r
   CHAR8                       *LanguageString;\r
   CHAR8                       *LangCode;\r
-  CHAR8                       Lang[RFC_3066_ENTRY_SIZE];\r
-  CHAR8                       CurrentLang[RFC_3066_ENTRY_SIZE];\r
+  CHAR8                       *Lang;\r
+  CHAR8                       *CurrentLang;\r
+  CHAR8                       *BestLanguage;\r
   UINTN                       OptionCount;\r
-  EFI_STRING_ID               Token;\r
   CHAR16                      *StringBuffer;\r
   UINTN                       BufferSize;\r
-  UINTN                       Index;\r
   EFI_HII_HANDLE              HiiHandle;\r
+  VOID                        *OptionsOpCodeHandle;\r
+  VOID                        *StartOpCodeHandle;\r
+  VOID                        *EndOpCodeHandle;\r
+  EFI_IFR_GUID_LABEL          *StartLabel;\r
+  EFI_IFR_GUID_LABEL          *EndLabel;\r
+  BOOLEAN                     FirstFlag;\r
 \r
   if (InitializeHiiData) {\r
     //\r
@@ -293,70 +352,108 @@ InitializeFrontPage (
     }\r
 \r
     //\r
-    // Create driver handle used by HII database\r
-    //\r
-    Status = HiiLibCreateHiiDriverHandle (&gFrontPagePrivate.DriverHandle);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-\r
-    //\r
-    // Install Config Access protocol to driver handle\r
+    // Install Device Path Protocol and Config Access protocol to driver handle\r
     //\r
-    Status = gBS->InstallProtocolInterface (\r
+    Status = gBS->InstallMultipleProtocolInterfaces (\r
                     &gFrontPagePrivate.DriverHandle,\r
+                    &gEfiDevicePathProtocolGuid,\r
+                    &mFrontPageHiiVendorDevicePath,\r
                     &gEfiHiiConfigAccessProtocolGuid,\r
-                    EFI_NATIVE_INTERFACE,\r
-                    &gFrontPagePrivate.ConfigAccess\r
+                    &gFrontPagePrivate.ConfigAccess,\r
+                    NULL\r
                     );\r
     ASSERT_EFI_ERROR (Status);\r
 \r
     //\r
     // Publish our HII data\r
     //\r
-    PackageList = HiiLibPreparePackageList (2, &mFrontPageGuid, FrontPageVfrBin, BdsDxeStrings);\r
-    ASSERT (PackageList != NULL);\r
-\r
-    Status = gHiiDatabase->NewPackageList (\r
-                             gHiiDatabase,\r
-                             PackageList,\r
-                             gFrontPagePrivate.DriverHandle,\r
-                             &gFrontPagePrivate.HiiHandle\r
-                             );\r
-    FreePool (PackageList);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
+    gFrontPagePrivate.HiiHandle = HiiAddPackages (\r
+                                    &mFrontPageGuid,\r
+                                    gFrontPagePrivate.DriverHandle,\r
+                                    FrontPageVfrBin,\r
+                                    BdsDxeStrings,\r
+                                    NULL\r
+                                    );\r
+    if (gFrontPagePrivate.HiiHandle == NULL) {\r
+      return EFI_OUT_OF_RESOURCES;\r
     }\r
   }\r
 \r
+\r
   //\r
-  // Get current language setting\r
+  // Init OpCode Handle and Allocate space for creation of UpdateData Buffer\r
   //\r
-  GetCurrentLanguage (CurrentLang);\r
+  StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+  ASSERT (StartOpCodeHandle != NULL);\r
 \r
+  EndOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+  ASSERT (EndOpCodeHandle != NULL);\r
+\r
+  OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+  ASSERT (OptionsOpCodeHandle != NULL);\r
   //\r
-  // Allocate space for creation of UpdateData Buffer\r
+  // Create Hii Extend Label OpCode as the start opcode\r
   //\r
-  UpdateData.BufferSize = 0x1000;\r
-  UpdateData.Data = AllocateZeroPool (0x1000);\r
-  ASSERT (UpdateData.Data != NULL);\r
+  StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+  StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+  StartLabel->Number       = LABEL_SELECT_LANGUAGE;\r
 \r
-  OptionList = AllocateZeroPool (0x1000);\r
-  ASSERT (OptionList != NULL);\r
+  //\r
+  // Create Hii Extend Label OpCode as the end opcode\r
+  //\r
+  EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+  EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+  EndLabel->Number       = LABEL_END;\r
 \r
   //\r
   // Collect the languages from what our current Language support is based on our VFR\r
   //\r
   HiiHandle = gFrontPagePrivate.HiiHandle;\r
-  LanguageString = HiiLibGetSupportedLanguages (HiiHandle);\r
+  LanguageString = HiiGetSupportedLanguages (HiiHandle);\r
   ASSERT (LanguageString != NULL);\r
+  //\r
+  // Allocate working buffer for RFC 4646 language in supported LanguageString.\r
+  //\r
+  Lang = AllocatePool (AsciiStrSize (LanguageString));\r
+  ASSERT (Lang != NULL);\r
+\r
+  CurrentLang = GetEfiGlobalVariable (L"PlatformLang");\r
+  //\r
+  // Select the best language in LanguageString as the default one.\r
+  //\r
+  BestLanguage = GetBestLanguage (\r
+                   LanguageString,\r
+                   FALSE,\r
+                   (CurrentLang != NULL) ? CurrentLang : "",\r
+                   (CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLang),\r
+                   LanguageString,\r
+                   NULL\r
+                   );\r
+  //\r
+  // BestLanguage must be selected as it is the first language in LanguageString by default\r
+  //\r
+  ASSERT (BestLanguage != NULL);\r
+\r
+  OptionCount = 0;\r
+  LangCode    = LanguageString;\r
+  FirstFlag   = FALSE;\r
+  \r
+  if (gFrontPagePrivate.LanguageToken == NULL) {\r
+    while (*LangCode != 0) {\r
+      GetNextLanguage (&LangCode, Lang);\r
+      OptionCount ++;\r
+    }\r
+    gFrontPagePrivate.LanguageToken = AllocatePool (OptionCount * sizeof (EFI_STRING_ID));\r
+    ASSERT (gFrontPagePrivate.LanguageToken != NULL);\r
+    FirstFlag = TRUE;\r
+  }\r
 \r
   OptionCount = 0;\r
   LangCode = LanguageString;\r
   while (*LangCode != 0) {\r
-    HiiLibGetNextLanguage (&LangCode, Lang);\r
+    GetNextLanguage (&LangCode, Lang);\r
 \r
-    if (gFrontPagePrivate.LanguageToken == NULL) {\r
+    if (FirstFlag) {\r
       //\r
       // Get Language Name from String Package. The StringId of Printable Language\r
       // Name is always 1 which is generated by StringGather Tool.\r
@@ -387,28 +484,43 @@ InitializeFrontPage (
       }\r
       ASSERT_EFI_ERROR (Status);\r
 \r
-      Token = 0;\r
-      Status = HiiLibNewString (HiiHandle, &Token, StringBuffer);\r
+      //\r
+      // Save the string Id for each language\r
+      //\r
+      gFrontPagePrivate.LanguageToken[OptionCount] = HiiSetString (HiiHandle, 0, StringBuffer, NULL);\r
       FreePool (StringBuffer);\r
-    } else {\r
-      Token = gFrontPagePrivate.LanguageToken[OptionCount];\r
     }\r
 \r
-    if (AsciiStrCmp (Lang, CurrentLang) == 0) {\r
-      OptionList[OptionCount].Flags = EFI_IFR_OPTION_DEFAULT;\r
+    if (AsciiStrCmp (Lang, BestLanguage) == 0) {\r
+      HiiCreateOneOfOptionOpCode (\r
+        OptionsOpCodeHandle,\r
+        gFrontPagePrivate.LanguageToken[OptionCount],\r
+        EFI_IFR_OPTION_DEFAULT,\r
+        EFI_IFR_NUMERIC_SIZE_1,\r
+        (UINT8) OptionCount\r
+        );\r
     } else {\r
-      OptionList[OptionCount].Flags = 0;\r
+      HiiCreateOneOfOptionOpCode (\r
+        OptionsOpCodeHandle,\r
+        gFrontPagePrivate.LanguageToken[OptionCount],\r
+        0,\r
+        EFI_IFR_NUMERIC_SIZE_1,\r
+        (UINT8) OptionCount\r
+        );\r
     }\r
-    OptionList[OptionCount].StringToken = Token;\r
-    OptionList[OptionCount].Value.u8 = (UINT8) OptionCount;\r
 \r
     OptionCount++;\r
   }\r
 \r
+  if (CurrentLang != NULL) {\r
+    FreePool (CurrentLang);\r
+  }\r
+  FreePool (BestLanguage);\r
+  FreePool (Lang);\r
   FreePool (LanguageString);\r
 \r
-  UpdateData.Offset = 0;\r
-  CreateOneOfOpCode (\r
+  HiiCreateOneOfOpCode (\r
+    StartOpCodeHandle,\r
     FRONT_PAGE_KEY_LANGUAGE,\r
     0,\r
     0,\r
@@ -416,31 +528,21 @@ InitializeFrontPage (
     STRING_TOKEN (STR_LANGUAGE_SELECT_HELP),\r
     EFI_IFR_FLAG_CALLBACK,\r
     EFI_IFR_NUMERIC_SIZE_1,\r
-    OptionList,\r
-    OptionCount,\r
-    &UpdateData\r
+    OptionsOpCodeHandle,\r
+    NULL\r
     );\r
 \r
-  Status = IfrLibUpdateForm (\r
+  Status = HiiUpdateForm (\r
              HiiHandle,\r
              &mFrontPageGuid,\r
              FRONT_PAGE_FORM_ID,\r
-             LABEL_SELECT_LANGUAGE,\r
-             FALSE,\r
-             &UpdateData\r
+             StartOpCodeHandle, // LABEL_SELECT_LANGUAGE\r
+             EndOpCodeHandle    // LABEL_END\r
              );\r
 \r
-  //\r
-  // Save the string Id for each language\r
-  //\r
-  gFrontPagePrivate.LanguageToken = AllocatePool (OptionCount * sizeof (EFI_STRING_ID));\r
-  ASSERT (gFrontPagePrivate.LanguageToken != NULL);\r
-  for (Index = 0; Index < OptionCount; Index++) {\r
-    gFrontPagePrivate.LanguageToken[Index] = OptionList[Index].StringToken;\r
-  }\r
-\r
-  FreePool (UpdateData.Data);\r
-  FreePool (OptionList);\r
+  HiiFreeOpCodeHandle (StartOpCodeHandle);\r
+  HiiFreeOpCodeHandle (EndOpCodeHandle);\r
+  HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
   return Status;\r
 }\r
 \r
@@ -472,7 +574,7 @@ CallFrontPage (
                             gFormBrowser2,\r
                             &gFrontPagePrivate.HiiHandle,\r
                             1,\r
-                            NULL,\r
+                            &mFrontPageGuid,\r
                             0,\r
                             NULL,\r
                             &ActionRequest\r
@@ -505,18 +607,20 @@ GetProducerString (
   OUT     CHAR16                    **String\r
   )\r
 {\r
-  EFI_STATUS      Status;\r
+  EFI_STRING      TmpString;\r
 \r
-  Status = HiiLibGetStringFromToken (ProducerGuid, Token, String);\r
-  if (EFI_ERROR (Status)) {\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
+  Convert Processor Frequency Data to a string.\r
 \r
   @param ProcessorFrequency The frequency data to process\r
   @param String             The string that is created\r
@@ -625,7 +729,7 @@ UpdateFrontPageStrings (
         BiosVendor = (EFI_MISC_BIOS_VENDOR_DATA *) (DataHeader + 1);\r
         GetProducerString (&Record->ProducerName, BiosVendor->BiosVersion, &NewString);\r
         TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION);\r
-        HiiLibSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
         FreePool (NewString);\r
         Find[0] = TRUE;\r
       }\r
@@ -636,7 +740,7 @@ UpdateFrontPageStrings (
         SystemManufacturer = (EFI_MISC_SYSTEM_MANUFACTURER_DATA *) (DataHeader + 1);\r
         GetProducerString (&Record->ProducerName, SystemManufacturer->SystemProductName, &NewString);\r
         TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL);\r
-        HiiLibSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
         FreePool (NewString);\r
         Find[1] = TRUE;\r
       }\r
@@ -647,7 +751,7 @@ UpdateFrontPageStrings (
         ProcessorVersion = (EFI_PROCESSOR_VERSION_DATA *) (DataHeader + 1);\r
         GetProducerString (&Record->ProducerName, *ProcessorVersion, &NewString);\r
         TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL);\r
-        HiiLibSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
         FreePool (NewString);\r
         Find[2] = TRUE;\r
       }\r
@@ -658,7 +762,7 @@ UpdateFrontPageStrings (
         ProcessorFrequency = (EFI_PROCESSOR_CORE_FREQUENCY_DATA *) (DataHeader + 1);\r
         ConvertProcessorToString (ProcessorFrequency, &NewString);\r
         TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED);\r
-        HiiLibSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
         FreePool (NewString);\r
         Find[3] = TRUE;\r
       }\r
@@ -672,7 +776,7 @@ UpdateFrontPageStrings (
           &NewString\r
           );\r
         TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
-        HiiLibSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
         FreePool (NewString);\r
         Find[4] = TRUE;\r
       }\r
@@ -856,7 +960,6 @@ PlatformBdsEnterFrontPage (
   )\r
 {\r
   EFI_STATUS                    Status;\r
-  EFI_CONSOLE_CONTROL_PROTOCOL  *ConsoleControl;\r
 \r
   PERF_START (0, "BdsTimeOut", "BDS", 0);\r
   //\r
@@ -970,8 +1073,4 @@ Exit:
   // takes affect\r
   //\r
   PERF_END (0, "BdsTimeOut", "BDS", 0);\r
-  Status = gBS->LocateProtocol (&gEfiConsoleControlProtocolGuid, NULL, (VOID **) &ConsoleControl);\r
-  if (Status == EFI_SUCCESS) {\r
-    ConsoleControl->SetMode (ConsoleControl, EfiConsoleControlScreenText);\r
-  }\r
 }\r