]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
IntelFrameworkModulePkg: Replace UnicodeStrToAsciiStr/AsciiStrToUnicodeStr
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / FrontPage.c
index 14a7ae29f4dd347bc6d04ebc7837aae1c5864420..9f4d32835771b0b4c85fc043499429d561b6906e 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   FrontPage routines to handle the callbacks and browser calls\r
 \r
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>\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
@@ -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
@@ -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
@@ -702,7 +704,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 +722,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 +731,9 @@ UpdateFrontPageStrings (
   SMBIOS_TABLE_TYPE4                *Type4Record;\r
   SMBIOS_TABLE_TYPE19               *Type19Record;\r
   EFI_SMBIOS_TABLE_HEADER           *Record;\r
-\r
-  ZeroMem (Find, sizeof (Find));\r
+  UINT64                            InstalledMemory;\r
+  \r
+  InstalledMemory = 0;\r
 \r
   //\r
   // Update Front Page strings\r
@@ -743,12 +745,8 @@ UpdateFrontPageStrings (
                   );\r
   if (!EFI_ERROR (Status)) {\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
+    Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+    while (!EFI_ERROR(Status)) {\r
       if (Record->Type == EFI_SMBIOS_TYPE_BIOS_INFORMATION) {\r
         Type0Record = (SMBIOS_TABLE_TYPE0 *) Record;\r
         StrIndex = Type0Record->BiosVersion;\r
@@ -756,7 +754,6 @@ UpdateFrontPageStrings (
         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
@@ -766,7 +763,6 @@ UpdateFrontPageStrings (
         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
@@ -776,7 +772,6 @@ UpdateFrontPageStrings (
         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
@@ -785,22 +780,29 @@ UpdateFrontPageStrings (
         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 (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
+\r
+      Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+    }\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
@@ -1395,8 +1397,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
@@ -1437,10 +1441,14 @@ 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
+  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