]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Application/UiApp/FrontPage.c
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Application / UiApp / FrontPage.c
index 9cc877bedb9c4ed664ee7adea544ca9510a7566d..4b95cccb5cf534952fbc6f42cd44add51ec2c769 100644 (file)
@@ -1,25 +1,19 @@
 /** @file\r
   FrontPage routines to handle the callbacks and browser calls\r
 \r
-Copyright (c) 2004 - 2016, 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
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
+(C) Copyright 2018 Hewlett Packard Enterprise Development LP<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include "FrontPage.h"\r
-#include "Language.h"\r
-#define MAX_STRING_LEN        200\r
+#include "FrontPageCustomizedUi.h"\r
+\r
+#define MAX_STRING_LEN            200\r
 \r
 EFI_GUID   mFrontPageGuid      = FRONT_PAGE_FORMSET_GUID;\r
 \r
-BOOLEAN   gConnectAllHappened = FALSE;\r
-BOOLEAN   mFeaturerSwitch = TRUE;\r
 BOOLEAN   mResetRequired  = FALSE;\r
 \r
 EFI_FORM_BROWSER2_PROTOCOL      *gFormBrowser2;\r
@@ -82,7 +76,7 @@ HII_VENDOR_DEVICE_PATH  mFrontPageHiiVendorDevicePath = {
 \r
 **/\r
 VOID\r
-UpdateFrontPageStrings (\r
+UpdateFrontPageBannerStrings (\r
   VOID\r
   );\r
 \r
@@ -152,191 +146,9 @@ FakeRouteConfig (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  return EFI_NOT_FOUND;\r
-}\r
-\r
-/**\r
-  Create oneof options for language.\r
-\r
-**/\r
-VOID\r
-InitializeLanguage (\r
-  VOID\r
-  )\r
-{\r
-  EFI_STATUS                  Status;\r
-  CHAR8                       *LangCode;\r
-  CHAR8                       *Lang;\r
-  CHAR8                       *CurrentLang;\r
-  UINTN                       OptionCount;\r
-  CHAR16                      *StringBuffer;\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
-  EFI_HII_STRING_PROTOCOL     *HiiString;\r
-  UINTN                       StringSize;\r
-\r
-  Lang         = NULL;\r
-  StringBuffer = NULL;\r
-\r
-  //\r
-  // Init OpCode Handle and Allocate space for creation of UpdateData Buffer\r
-  //\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
-  // Create Hii Extend Label OpCode as the start opcode\r
-  //\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
-  //\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
-  // Collect the languages from what our current Language support is based on our VFR\r
-  //\r
-  HiiHandle = gFrontPagePrivate.HiiHandle;\r
-\r
-  GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&CurrentLang, NULL);\r
-\r
-  if (mLanguageString == NULL) {\r
-    //\r
-    // Get Support language list from variable.\r
-    //\r
-    GetEfiGlobalVariable2 (L"PlatformLangCodes", (VOID**)&mLanguageString, NULL);\r
-    if (mLanguageString == NULL) {\r
-      mLanguageString = AllocateCopyPool (\r
-                                 AsciiStrSize ((CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)),\r
-                                 (CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)\r
-                                 );\r
-      ASSERT (mLanguageString != NULL);\r
-    }\r
-  }\r
-\r
-  if (gFrontPagePrivate.LanguageToken == NULL) {\r
-    //\r
-    // Count the language list number.\r
-    //  \r
-    LangCode      = mLanguageString;\r
-    Lang          = AllocatePool (AsciiStrSize (mLanguageString));\r
-    ASSERT (Lang != NULL);\r
-    OptionCount = 0;\r
-    while (*LangCode != 0) {\r
-      GetNextLanguage (&LangCode, Lang);\r
-      OptionCount ++;\r
-    }\r
-\r
-    //\r
-    // Allocate extra 1 as the end tag.\r
-    //\r
-    gFrontPagePrivate.LanguageToken = AllocateZeroPool ((OptionCount + 1) * sizeof (EFI_STRING_ID));\r
-    ASSERT (gFrontPagePrivate.LanguageToken != NULL);\r
-\r
-    Status = gBS->LocateProtocol (&gEfiHiiStringProtocolGuid, NULL, (VOID **) &HiiString);\r
-    ASSERT_EFI_ERROR (Status);\r
-\r
-    LangCode     = mLanguageString;\r
-    OptionCount  = 0;\r
-    while (*LangCode != 0) {\r
-      GetNextLanguage (&LangCode, Lang);\r
-\r
-      StringSize = 0;\r
-      Status = HiiString->GetString (HiiString, Lang, HiiHandle, PRINTABLE_LANGUAGE_NAME_STRING_ID, StringBuffer, &StringSize, NULL);\r
-      if (Status == EFI_BUFFER_TOO_SMALL) {\r
-        StringBuffer = AllocateZeroPool (StringSize);\r
-        ASSERT (StringBuffer != NULL);\r
-        Status = HiiString->GetString (HiiString, Lang, HiiHandle, PRINTABLE_LANGUAGE_NAME_STRING_ID, StringBuffer, &StringSize, NULL);\r
-        ASSERT_EFI_ERROR (Status);\r
-      }\r
-\r
-      if (EFI_ERROR (Status)) {\r
-        StringBuffer = AllocatePool (AsciiStrSize (Lang) * sizeof (CHAR16));\r
-        ASSERT (StringBuffer != NULL);\r
-        AsciiStrToUnicodeStr (Lang, StringBuffer);\r
-      }\r
-\r
-      ASSERT (StringBuffer != NULL);\r
-      gFrontPagePrivate.LanguageToken[OptionCount] = HiiSetString (HiiHandle, 0, StringBuffer, NULL);\r
-      FreePool (StringBuffer);\r
-\r
-      OptionCount++;\r
-    }\r
-  }\r
-\r
-  ASSERT (gFrontPagePrivate.LanguageToken != NULL);\r
-  LangCode     = mLanguageString;\r
-  OptionCount  = 0;\r
-  if (Lang == NULL) {\r
-    Lang = AllocatePool (AsciiStrSize (mLanguageString));\r
-    ASSERT (Lang != NULL);\r
-  }\r
-  while (*LangCode != 0) {\r
-    GetNextLanguage (&LangCode, Lang);\r
-\r
-    if (CurrentLang != NULL && AsciiStrCmp (Lang, CurrentLang) == 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
-      HiiCreateOneOfOptionOpCode (\r
-        OptionsOpCodeHandle,\r
-        gFrontPagePrivate.LanguageToken[OptionCount],\r
-        0,\r
-        EFI_IFR_NUMERIC_SIZE_1,\r
-        (UINT8) OptionCount\r
-        );\r
-    }\r
-\r
-    OptionCount++;\r
-  }\r
-\r
-  if (CurrentLang != NULL) {\r
-    FreePool (CurrentLang);\r
-  }\r
-  FreePool (Lang);\r
+  *Progress = Configuration;\r
 \r
-  HiiCreateOneOfOpCode (\r
-    StartOpCodeHandle,\r
-    FRONT_PAGE_KEY_LANGUAGE,\r
-    0,\r
-    0,\r
-    STRING_TOKEN (STR_LANGUAGE_SELECT),\r
-    STRING_TOKEN (STR_LANGUAGE_SELECT_HELP),\r
-    EFI_IFR_FLAG_CALLBACK,\r
-    EFI_IFR_NUMERIC_SIZE_1,\r
-    OptionsOpCodeHandle,\r
-    NULL\r
-    );\r
-\r
-  Status = HiiUpdateForm (\r
-             HiiHandle,\r
-             &mFrontPageGuid,\r
-             FRONT_PAGE_FORM_ID,\r
-             StartOpCodeHandle, // LABEL_SELECT_LANGUAGE\r
-             EndOpCodeHandle    // LABEL_END\r
-             );\r
-\r
-  HiiFreeOpCodeHandle (StartOpCodeHandle);\r
-  HiiFreeOpCodeHandle (EndOpCodeHandle);\r
-  HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
+  return EFI_NOT_FOUND;\r
 }\r
 \r
 /**\r
@@ -368,82 +180,12 @@ FrontPageCallback (
   OUT EFI_BROWSER_ACTION_REQUEST             *ActionRequest\r
   )\r
 {\r
-  CHAR8                         *LangCode;\r
-  CHAR8                         *Lang;\r
-  UINTN                         Index;\r
-  EFI_STATUS                    Status;\r
-\r
-  if (Action != EFI_BROWSER_ACTION_CHANGED) {\r
-    //\r
-    // Do nothing for other UEFI Action. Only do call back when data is changed.\r
-    //\r
-    return EFI_UNSUPPORTED;\r
-  }\r
-\r
-  if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
-    if ((Value == NULL) || (ActionRequest == NULL)) {\r
-      return EFI_INVALID_PARAMETER;\r
-    }\r
-\r
-    switch (QuestionId) {\r
-    case FRONT_PAGE_KEY_CONTINUE:\r
-      //\r
-      // This is the continue - clear the screen and return an error to get out of FrontPage loop\r
-      //\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
-      break;\r
-\r
-    case FRONT_PAGE_KEY_LANGUAGE:\r
-      //\r
-      // Allocate working buffer for RFC 4646 language in supported LanguageString.\r
-      //\r
-      Lang = AllocatePool (AsciiStrSize (mLanguageString));\r
-      ASSERT (Lang != NULL);  \r
-\r
-      Index = 0;\r
-      LangCode = mLanguageString;\r
-      while (*LangCode != 0) {\r
-        GetNextLanguage (&LangCode, Lang);\r
-\r
-        if (Index == Value->u8) {\r
-          break;\r
-        }\r
-\r
-        Index++;\r
-      }\r
-\r
-      if (Index == Value->u8) {\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
-        if (EFI_ERROR (Status)) {\r
-          FreePool (Lang);\r
-          return EFI_DEVICE_ERROR;\r
-        }\r
-      } else {\r
-        ASSERT (FALSE);\r
-      }\r
-      FreePool (Lang);\r
-      //\r
-      //Current language of platform is changed,recreate oneof options for language.\r
-      //\r
-      InitializeLanguage();\r
-      break;\r
-\r
-    default:\r
-      break;\r
-    }\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
+  return UiFrontPageCallbackHandler (gFrontPagePrivate.HiiHandle, Action, QuestionId, Type, Value, ActionRequest);\r
 }\r
 \r
 /**\r
-Update front page form base on the ClassGuid in the formset in other modules.\r
+\r
+  Update the menus in the front page.\r
 \r
 **/\r
 VOID\r
@@ -451,32 +193,10 @@ UpdateFrontPageForm (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                  Status;\r
-  EFI_HII_HANDLE              HiiHandle;\r
   VOID                        *StartOpCodeHandle;\r
   VOID                        *EndOpCodeHandle;\r
-  EFI_IFR_GUID_LABEL          *StartLabel;\r
-  EFI_IFR_GUID_LABEL          *EndLabel;\r
-  UINTN                       Index;\r
-  EFI_STRING                  String;\r
-  EFI_STRING_ID               Token;\r
-  EFI_STRING_ID               TokenHelp;\r
-  EFI_HII_HANDLE              *HiiHandles;\r
-  EFI_GUID                    FormSetGuid;\r
-  CHAR16                      *DevicePathStr;\r
-  EFI_STRING_ID               DevicePathId;\r
-  EFI_IFR_FORM_SET            *Buffer;\r
-  UINTN                       BufferSize;\r
-  UINT8                       ClassGuidNum;\r
-  EFI_GUID                    *ClassGuid;\r
-  UINTN                       TempSize;\r
-  UINT8                       *Ptr;\r
-\r
-  TempSize =0;\r
-  BufferSize = 0;\r
-  Buffer = NULL;\r
-\r
-  HiiHandle = gFrontPagePrivate.HiiHandle;\r
+  EFI_IFR_GUID_LABEL          *StartGuidLabel;\r
+  EFI_IFR_GUID_LABEL          *EndGuidLabel;\r
 \r
   //\r
   // Allocate space for creation of UpdateData Buffer\r
@@ -489,99 +209,26 @@ UpdateFrontPageForm (
   //\r
   // Create Hii Extend Label OpCode as the start opcode\r
   //\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_PLATFORM_INFORMATION;\r
+  StartGuidLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+  StartGuidLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+  StartGuidLabel->Number       = LABEL_FRANTPAGE_INFORMATION;\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
+  EndGuidLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+  EndGuidLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+  EndGuidLabel->Number       = LABEL_END;\r
 \r
   //\r
-  // Get all the Hii handles\r
-  //\r
-  HiiHandles = HiiGetHiiHandles (NULL);\r
-  ASSERT (HiiHandles != NULL);\r
-  //\r
-  // Search for formset of each class type\r
+  //Updata Front Page form\r
   //\r
-  for (Index = 0; HiiHandles[Index] != NULL; Index++) {\r
-    Status = HiiGetFormSetFromHiiHandle(HiiHandles[Index], &Buffer,&BufferSize);\r
-    if (EFI_ERROR (Status)) {\r
-      continue;\r
-    }\r
-\r
-    Ptr = (UINT8 *)Buffer;\r
-    while(TempSize < BufferSize)  {\r
-      TempSize += ((EFI_IFR_OP_HEADER *) Ptr)->Length;\r
-\r
-      if (((EFI_IFR_OP_HEADER *) Ptr)->Length <= OFFSET_OF (EFI_IFR_FORM_SET, Flags)){\r
-        Ptr += ((EFI_IFR_OP_HEADER *) Ptr)->Length;\r
-        continue;\r
-      }\r
-\r
-      //\r
-      // Find Class Guid\r
-      //\r
-      ClassGuidNum = (UINT8) (((EFI_IFR_FORM_SET *)Ptr)->Flags & 0x3);\r
-      ClassGuid = (EFI_GUID *) (VOID *)(Ptr + sizeof (EFI_IFR_FORM_SET));\r
-      while (ClassGuidNum-- > 0) {\r
-        if (CompareGuid (&gEfiIfrFrontPageGuid, ClassGuid) == 0){\r
-          ClassGuid ++;\r
-          continue;\r
-        }\r
-\r
-        String = HiiGetString (HiiHandles[Index], ((EFI_IFR_FORM_SET *)Ptr)->FormSetTitle, NULL);\r
-        if (String == NULL) {\r
-          String = HiiGetString (HiiHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
-          ASSERT (String != NULL);\r
-        }\r
-        Token = HiiSetString (HiiHandle, 0, String, NULL);\r
-        FreePool (String);\r
-\r
-        String = HiiGetString (HiiHandles[Index], ((EFI_IFR_FORM_SET *)Ptr)->Help, NULL);\r
-\r
-        if (String == NULL) {\r
-          String = HiiGetString (HiiHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
-          ASSERT (String != NULL);\r
-        }\r
-        TokenHelp = HiiSetString (HiiHandle, 0, String, NULL);\r
-        FreePool (String);\r
-\r
-        FormSetGuid = ((EFI_IFR_FORM_SET *)Ptr)->Guid;\r
-\r
-        DevicePathStr = ExtractDevicePathFromHiiHandle(HiiHandles[Index]);\r
-        DevicePathId  = 0;\r
-        if (DevicePathStr != NULL){\r
-          DevicePathId = HiiSetString (HiiHandle, 0, DevicePathStr, NULL);\r
-          FreePool (DevicePathStr);\r
-        }\r
-        HiiCreateGotoExOpCode (\r
-          StartOpCodeHandle,\r
-          0,\r
-          Token,\r
-          TokenHelp,\r
-          0,\r
-          (EFI_QUESTION_ID) (Index + FRONT_PAGE_KEY_OFFSET),\r
-          0,\r
-          &FormSetGuid,\r
-          DevicePathId\r
-        );\r
-        break;\r
-      }\r
-      Ptr += ((EFI_IFR_OP_HEADER *) Ptr)->Length;\r
-    }\r
-\r
-    FreePool(Buffer);\r
-    Buffer = NULL;\r
-    TempSize = 0;\r
-    BufferSize = 0;\r
-  }\r
+  UiCustomizeFrontPage (\r
+    gFrontPagePrivate.HiiHandle,\r
+    StartOpCodeHandle\r
+    );\r
 \r
   HiiUpdateForm (\r
-    HiiHandle,\r
+    gFrontPagePrivate.HiiHandle,\r
     &mFrontPageGuid,\r
     FRONT_PAGE_FORM_ID,\r
     StartOpCodeHandle,\r
@@ -590,7 +237,6 @@ UpdateFrontPageForm (
 \r
   HiiFreeOpCodeHandle (StartOpCodeHandle);\r
   HiiFreeOpCodeHandle (EndOpCodeHandle);\r
-  FreePool (HiiHandles);\r
 }\r
 \r
 /**\r
@@ -642,17 +288,12 @@ InitializeFrontPage (
   ASSERT (gFrontPagePrivate.HiiHandle != NULL);\r
 \r
   //\r
-  //Updata Front Page strings\r
+  //Updata Front Page banner strings\r
   //\r
-  UpdateFrontPageStrings ();\r
+  UpdateFrontPageBannerStrings ();\r
 \r
   //\r
-  // Initialize laguage options\r
-  //\r
-  InitializeLanguage ();\r
-\r
-  //\r
-  //Updata Front Page form\r
+  // Update front page menus.\r
   //\r
   UpdateFrontPageForm();\r
 \r
@@ -754,7 +395,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
@@ -763,9 +404,16 @@ ConvertProcessorToString (
   DestMax = 0x20 / sizeof (CHAR16);\r
   StringBuffer = AllocateZeroPool (0x20);\r
   ASSERT (StringBuffer != NULL);\r
-  Index = UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
+  UnicodeValueToStringS (StringBuffer, sizeof (CHAR16) * DestMax, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
+  Index = StrnLenS (StringBuffer, DestMax);\r
   StrCatS (StringBuffer, DestMax, L".");\r
-  UnicodeValueToString (StringBuffer + Index + 1, PREFIX_ZERO, (FreqMhz % 1000) / 10, 2);\r
+  UnicodeValueToStringS (\r
+    StringBuffer + Index + 1,\r
+    sizeof (CHAR16) * (DestMax - (Index + 1)),\r
+    PREFIX_ZERO,\r
+    (FreqMhz % 1000) / 10,\r
+    2\r
+    );\r
   StrCatS (StringBuffer, DestMax, L" GHz");\r
   *String = (CHAR16 *) StringBuffer;\r
   return ;\r
@@ -789,7 +437,7 @@ ConvertMemorySizeToString (
 \r
   StringBuffer = AllocateZeroPool (0x24);\r
   ASSERT (StringBuffer != NULL);\r
-  UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, MemorySize, 10);\r
+  UnicodeValueToStringS (StringBuffer, 0x24, LEFT_JUSTIFY, MemorySize, 10);\r
   StrCatS (StringBuffer, 0x24 / sizeof (CHAR16), L" MB RAM");\r
 \r
   *String = (CHAR16 *) StringBuffer;\r
@@ -838,7 +486,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
@@ -846,19 +494,19 @@ GetOptionalStringByIndex (
 \r
 \r
 /**\r
+\r
   Update the banner information for the Front Page based on Smbios information.\r
+\r
 **/\r
 VOID\r
-UpdateFrontPageStrings (\r
+UpdateFrontPageBannerStrings (\r
   VOID\r
   )\r
 {\r
   UINT8                             StrIndex;\r
   CHAR16                            *NewString;\r
   CHAR16                            *FirmwareVersionString;\r
-  BOOLEAN                           Find[5];\r
   EFI_STATUS                        Status;\r
-  EFI_STRING_ID                     TokenToUpdate;\r
   EFI_SMBIOS_HANDLE                 SmbiosHandle;\r
   EFI_SMBIOS_PROTOCOL               *Smbios;\r
   SMBIOS_TABLE_TYPE0                *Type0Record;\r
@@ -866,112 +514,157 @@ UpdateFrontPageStrings (
   SMBIOS_TABLE_TYPE4                *Type4Record;\r
   SMBIOS_TABLE_TYPE19               *Type19Record;\r
   EFI_SMBIOS_TABLE_HEADER           *Record;\r
+  UINT64                            InstalledMemory;\r
+  BOOLEAN                           FoundCpu;\r
 \r
-  ZeroMem (Find, sizeof (Find));\r
+  InstalledMemory = 0;\r
+  FoundCpu = 0;\r
 \r
   //\r
-  // Update Front Page strings\r
+  // Update default banner string.\r
   //\r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiSmbiosProtocolGuid,\r
-                  NULL,\r
-                  (VOID **) &Smbios\r
-                  );\r
+  NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE4_LEFT), NULL);\r
+  UiCustomizeFrontPageBanner (4, TRUE, &NewString);\r
+  HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE4_LEFT), NewString, NULL);\r
+  FreePool (NewString);\r
+\r
+  NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE4_RIGHT), NULL);\r
+  UiCustomizeFrontPageBanner (4, FALSE, &NewString);\r
+  HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE4_RIGHT), NewString, NULL);\r
+  FreePool (NewString);\r
+\r
+  NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE5_LEFT), NULL);\r
+  UiCustomizeFrontPageBanner (5, TRUE, &NewString);\r
+  HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE5_LEFT), NewString, NULL);\r
+  FreePool (NewString);\r
+\r
+  NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE5_RIGHT), NULL);\r
+  UiCustomizeFrontPageBanner (5, FALSE, &NewString);\r
+  HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE5_RIGHT), NewString, NULL);\r
+  FreePool (NewString);\r
+\r
+  //\r
+  // Update Front Page banner strings base on SmBios Table.\r
+  //\r
+  Status = gBS->LocateProtocol (&gEfiSmbiosProtocolGuid, NULL, (VOID **) &Smbios);\r
   if (EFI_ERROR (Status)) {\r
-    return ;\r
+    //\r
+    // Smbios protocol not found, get the default value.\r
+    //\r
+    NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL), NULL);\r
+    UiCustomizeFrontPageBanner (1, TRUE, &NewString);\r
+    HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL), NewString, NULL);\r
+    FreePool (NewString);\r
+\r
+    NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL), NULL);\r
+    UiCustomizeFrontPageBanner (2, TRUE, &NewString);\r
+    HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL), NewString, NULL);\r
+    FreePool (NewString);\r
+\r
+    NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED), NULL);\r
+    UiCustomizeFrontPageBanner (2, FALSE, &NewString);\r
+    HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED), NewString, NULL);\r
+    FreePool (NewString);\r
+\r
+    NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), NULL);\r
+    UiCustomizeFrontPageBanner (3, TRUE, &NewString);\r
+    HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), NewString, NULL);\r
+    FreePool (NewString);\r
+\r
+    NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE), NULL);\r
+    UiCustomizeFrontPageBanner (3, FALSE, &NewString);\r
+    HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE), NewString, NULL);\r
+    FreePool (NewString);\r
+\r
+    return;\r
   }\r
 \r
   SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;\r
-  do {\r
-    Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
-    if (EFI_ERROR(Status)) {\r
-      break;\r
-    }\r
-\r
-    if (Record->Type == EFI_SMBIOS_TYPE_BIOS_INFORMATION) {\r
+  Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\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
+\r
       FirmwareVersionString = (CHAR16 *) PcdGetPtr (PcdFirmwareVersionString);\r
       if (*FirmwareVersionString != 0x0000 ) {\r
         FreePool (NewString);\r
         NewString = (CHAR16 *) PcdGetPtr (PcdFirmwareVersionString);\r
-        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+        UiCustomizeFrontPageBanner (3, TRUE, &NewString);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), NewString, NULL);\r
       } else {\r
-        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+        UiCustomizeFrontPageBanner (3, TRUE, &NewString);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), NewString, NULL);\r
         FreePool (NewString);\r
       }\r
-      Find[0] = TRUE;\r
-    }  \r
+    }\r
 \r
-    if (Record->Type == EFI_SMBIOS_TYPE_SYSTEM_INFORMATION) {\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
+      UiCustomizeFrontPageBanner (1, TRUE, &NewString);\r
+      HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL), NewString, NULL);\r
       FreePool (NewString);\r
-      Find[1] = TRUE;\r
     }\r
 \r
-    if ((Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) && !Find[2]) {\r
+    if ((Record->Type == SMBIOS_TYPE_PROCESSOR_INFORMATION) && !FoundCpu) {\r
       Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
       //\r
-      // The information in the record should be only valid when the CPU Socket is populated. \r
+      // The information in the record should be only valid when the CPU Socket is populated.\r
       //\r
       if ((Type4Record->Status & SMBIOS_TYPE4_CPU_SOCKET_POPULATED) == SMBIOS_TYPE4_CPU_SOCKET_POPULATED) {\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
+        UiCustomizeFrontPageBanner (2, TRUE, &NewString);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL), NewString, NULL);\r
         FreePool (NewString);\r
-        Find[2] = TRUE;\r
-      }\r
-    }    \r
 \r
-    if ((Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) && !Find[3]) {\r
-      Type4Record = (SMBIOS_TABLE_TYPE4 *) Record;\r
-      //\r
-      // The information in the record should be only valid when the CPU Socket is populated. \r
-      //\r
-      if ((Type4Record->Status & SMBIOS_TYPE4_CPU_SOCKET_POPULATED) == SMBIOS_TYPE4_CPU_SOCKET_POPULATED) {\r
         ConvertProcessorToString(Type4Record->CurrentSpeed, 6, &NewString);\r
-        TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED);\r
-        HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+        UiCustomizeFrontPageBanner (2, FALSE, &NewString);\r
+        HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED), NewString, NULL);\r
         FreePool (NewString);\r
-        Find[3] = TRUE;\r
+\r
+        FoundCpu = TRUE;\r
       }\r
-    } \r
+    }\r
 \r
-    if ( Record->Type == EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS ) {\r
+    if ( Record->Type == 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 (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
-  } while ( !(Find[0] && Find[1] && Find[2] && Find[3] && Find[4]));\r
-  return ;\r
+\r
+    Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+  }\r
+\r
+  //\r
+  // Now update the total installed RAM size\r
+  //\r
+  ConvertMemorySizeToString ((UINT32)InstalledMemory, &NewString );\r
+  UiCustomizeFrontPageBanner (3, FALSE, &NewString);\r
+  HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE), NewString, NULL);\r
+  FreePool (NewString);\r
 }\r
 \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
 \r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
-BdsSetConsoleMode (\r
+UiSetConsoleMode (\r
   BOOLEAN  IsSetupMode\r
   )\r
 {\r
@@ -991,13 +684,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
@@ -1015,7 +708,7 @@ BdsSetConsoleMode (
                   );\r
   if (EFI_ERROR (Status)) {\r
     SimpleTextOut = NULL;\r
-  }  \r
+  }\r
 \r
   if ((GraphicsOutput == NULL) || (SimpleTextOut == NULL)) {\r
     return EFI_UNSUPPORTED;\r
@@ -1023,7 +716,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
@@ -1036,12 +729,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
@@ -1079,7 +772,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
@@ -1104,7 +797,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
@@ -1145,8 +838,7 @@ BdsSetConsoleMode (
   ASSERT_EFI_ERROR (Status);\r
   Status = PcdSet32S (PcdConOutRow, NewRows);\r
   ASSERT_EFI_ERROR (Status);\r
-  \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
@@ -1176,12 +868,12 @@ BdsSetConsoleMode (
 \r
 /**\r
   The user Entry Point for Application. The user code starts with this function\r
-  as the real entry point for the image goes into a library that calls this \r
+  as the real entry point for the image goes into a library that calls this\r
   function.\r
 \r
-  @param[in] ImageHandle    The firmware allocated handle for the EFI image.  \r
+  @param[in] ImageHandle    The firmware allocated handle for the EFI image.\r
   @param[in] SystemTable    A pointer to the EFI System Table.\r
-  \r
+\r
   @retval EFI_SUCCESS       The entry point is executed successfully.\r
   @retval other             Some error occurs when executing this entry point.\r
 \r
@@ -1202,7 +894,7 @@ InitializeUserInterface (
 \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
@@ -1213,7 +905,7 @@ InitializeUserInterface (
     if (EFI_ERROR (Status)) {\r
       GraphicsOutput = NULL;\r
     }\r
-    \r
+\r
     Status = gBS->HandleProtocol (\r
                     gST->ConsoleOutHandle,\r
                     &gEfiSimpleTextOutProtocolGuid,\r
@@ -1221,7 +913,7 @@ InitializeUserInterface (
                     );\r
     if (EFI_ERROR (Status)) {\r
       SimpleTextOut = NULL;\r
-    }  \r
+    }\r
 \r
     if (GraphicsOutput != NULL) {\r
       //\r
@@ -1244,9 +936,9 @@ InitializeUserInterface (
 \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
@@ -1255,19 +947,18 @@ InitializeUserInterface (
 \r
   gBS->SetWatchdogTimer (0x0000, 0x0000, 0x0000, NULL);\r
   gST->ConOut->ClearScreen (gST->ConOut);\r
-  \r
+\r
   //\r
   // Install customized fonts needed by Front Page\r
   //\r
-  \r
   HiiHandle = ExportFonts ();\r
   ASSERT (HiiHandle != NULL);\r
 \r
   InitializeStringSupport ();\r
 \r
-  BdsSetConsoleMode (TRUE);\r
+  UiSetConsoleMode (TRUE);\r
   UiEntry (FALSE);\r
-  BdsSetConsoleMode (FALSE);\r
+  UiSetConsoleMode (FALSE);\r
 \r
   UninitializeStringSupport ();\r
   HiiRemovePackages (HiiHandle);\r
@@ -1291,11 +982,20 @@ UiEntry (
   EFI_STATUS                    Status;\r
   EFI_BOOT_LOGO_PROTOCOL        *BootLogo;\r
 \r
+  //\r
+  // Enter Setup page.\r
+  //\r
+  REPORT_STATUS_CODE (\r
+    EFI_PROGRESS_CODE,\r
+    (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_PC_USER_SETUP)\r
+    );\r
+\r
   //\r
   // Indicate if the connect all has been performed before.\r
+  // If has not been performed before, do here.\r
   //\r
-  if (ConnectAllHappened) {\r
-    gConnectAllHappened = TRUE;\r
+  if (!ConnectAllHappened) {\r
+    EfiBootManagerConnectAll ();\r
   }\r
 \r
   //\r
@@ -1328,38 +1028,6 @@ UiEntry (
   SetupResetReminder ();\r
 }\r
 \r
-/**\r
-  Extract device path for given HII handle and class guid.\r
-\r
-  @param Handle          The HII handle.\r
-\r
-  @retval  NULL          Fail to get the device path string.\r
-  @return  PathString    Get the device path string.\r
-\r
-**/\r
-CHAR16 *\r
-ExtractDevicePathFromHiiHandle (\r
-  IN      EFI_HII_HANDLE      Handle\r
-  )\r
-{\r
-  EFI_STATUS                       Status;\r
-  EFI_HANDLE                       DriverHandle;\r
-  \r
-  ASSERT (Handle != NULL);\r
-\r
-  if (Handle == NULL) {\r
-    return NULL;\r
-  }\r
-\r
-  Status = gHiiDatabase->GetPackageListHandle (gHiiDatabase, Handle, &DriverHandle);\r
-  if (EFI_ERROR (Status)) {\r
-    return NULL;\r
-  }\r
-\r
- return ConvertDevicePathToText(DevicePathFromHandle (DriverHandle), FALSE, FALSE);\r
-\r
-}\r
-\r
 //\r
 //  Following are BDS Lib functions which contain all the code about setup browser reset reminder feature.\r
 //  Setup Browser reset reminder feature is that an reset reminder will be given before user leaves the setup browser  if\r
@@ -1367,34 +1035,7 @@ ExtractDevicePathFromHiiHandle (
 //\r
 \r
 \r
-/**\r
-  Enable the setup browser reset reminder feature.\r
-  This routine is used in platform tip. If the platform policy need the feature, use the routine to enable it.\r
 \r
-**/\r
-VOID\r
-EFIAPI\r
-EnableResetReminderFeature (\r
-  VOID\r
-  )\r
-{\r
-  mFeaturerSwitch = TRUE;\r
-}\r
-\r
-\r
-/**\r
-  Disable the setup browser reset reminder feature.\r
-  This routine is used in platform tip. If the platform policy do not want the feature, use the routine to disable it.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-DisableResetReminderFeature (\r
-  VOID\r
-  )\r
-{\r
-  mFeaturerSwitch = FALSE;\r
-}\r
 \r
 \r
 /**\r
@@ -1412,33 +1053,7 @@ EnableResetRequired (
 }\r
 \r
 \r
-/**\r
-  Record the info that  no reset is required.\r
-  A  module boolean variable is used to record whether a reset is required.\r
 \r
-**/\r
-VOID\r
-EFIAPI\r
-DisableResetRequired (\r
-  VOID\r
-  )\r
-{\r
-  mResetRequired = FALSE;\r
-}\r
-\r
-\r
-/**\r
-  Check whether platform policy enable the reset reminder feature. The default is enabled.\r
-\r
-**/\r
-BOOLEAN\r
-EFIAPI\r
-IsResetReminderFeatureEnable (\r
-  VOID\r
-  )\r
-{\r
-  return mFeaturerSwitch;\r
-}\r
 \r
 \r
 /**\r
@@ -1471,31 +1086,28 @@ SetupResetReminder (
   CHAR16                        *StringBuffer1;\r
   CHAR16                        *StringBuffer2;\r
 \r
-\r
   //\r
   //check any reset required change is applied? if yes, reset system\r
   //\r
-  if (IsResetReminderFeatureEnable ()) {\r
-    if (IsResetRequired ()) {\r
-\r
-      StringBuffer1 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16));\r
-      ASSERT (StringBuffer1 != NULL);\r
-      StringBuffer2 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16));\r
-      ASSERT (StringBuffer2 != NULL);\r
-      StrCpyS (StringBuffer1, MAX_STRING_LEN, L"Configuration changed. Reset to apply it Now.");\r
-      StrCpyS (StringBuffer2, MAX_STRING_LEN, L"Press ENTER to reset");\r
-      //\r
-      // Popup a menu to notice user\r
-      //\r
-      do {\r
-        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, StringBuffer1, StringBuffer2, NULL);\r
-      } while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN);\r
+  if (IsResetRequired ()) {\r
+\r
+    StringBuffer1 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16));\r
+    ASSERT (StringBuffer1 != NULL);\r
+    StringBuffer2 = AllocateZeroPool (MAX_STRING_LEN * sizeof (CHAR16));\r
+    ASSERT (StringBuffer2 != NULL);\r
+    StrCpyS (StringBuffer1, MAX_STRING_LEN, L"Configuration changed. Reset to apply it Now.");\r
+    StrCpyS (StringBuffer2, MAX_STRING_LEN, L"Press ENTER to reset");\r
+    //\r
+    // Popup a menu to notice user\r
+    //\r
+    do {\r
+      CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, StringBuffer1, StringBuffer2, NULL);\r
+    } while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN);\r
 \r
-      FreePool (StringBuffer1);\r
-      FreePool (StringBuffer2);\r
+    FreePool (StringBuffer1);\r
+    FreePool (StringBuffer2);\r
 \r
-      gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
-    }\r
+    gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
   }\r
 }\r
 \r