mirror of https://github.com/acidanthera/audk.git
Convert NT32 to use PCD settings for UEFI Timeout and language variables as a POC for new BDS.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3241 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
e9508cd216
commit
7658d609a3
|
@ -305,6 +305,7 @@
|
||||||
PcdDriverDiagnosticsDisable|0x0000000e|gEfiMdePkgTokenSpaceGuid|BOOLEAN|FALSE
|
PcdDriverDiagnosticsDisable|0x0000000e|gEfiMdePkgTokenSpaceGuid|BOOLEAN|FALSE
|
||||||
PcdComponentName2Disable|0x0000000f|gEfiMdePkgTokenSpaceGuid|BOOLEAN|FALSE
|
PcdComponentName2Disable|0x0000000f|gEfiMdePkgTokenSpaceGuid|BOOLEAN|FALSE
|
||||||
PcdDriverDiagnostics2Disable|0x00000010|gEfiMdePkgTokenSpaceGuid|BOOLEAN|FALSE
|
PcdDriverDiagnostics2Disable|0x00000010|gEfiMdePkgTokenSpaceGuid|BOOLEAN|FALSE
|
||||||
|
PcdUefiVariableDefaultLangDepricate|0x0000001a|gEfiMdePkgTokenSpaceGuid|BOOLEAN|FALSE
|
||||||
|
|
||||||
[PcdsFixedAtBuild.common]
|
[PcdsFixedAtBuild.common]
|
||||||
PcdMaximumUnicodeStringLength|0x00000001|gEfiMdePkgTokenSpaceGuid|UINT32|1000000
|
PcdMaximumUnicodeStringLength|0x00000001|gEfiMdePkgTokenSpaceGuid|UINT32|1000000
|
||||||
|
@ -328,6 +329,11 @@
|
||||||
PcdStatusCodeValueRemoteConsoleReset|0x00000012|gEfiMdePkgTokenSpaceGuid|UINT32|0x01040001 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_PC_RESET
|
PcdStatusCodeValueRemoteConsoleReset|0x00000012|gEfiMdePkgTokenSpaceGuid|UINT32|0x01040001 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_PC_RESET
|
||||||
PcdStatusCodeValueRemoteConsoleInputError|0x00000013|gEfiMdePkgTokenSpaceGuid|UINT32|0x01040007 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_INPUT_ERROR
|
PcdStatusCodeValueRemoteConsoleInputError|0x00000013|gEfiMdePkgTokenSpaceGuid|UINT32|0x01040007 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_INPUT_ERROR
|
||||||
PcdStatusCodeValueRemoteConsoleOutputError|0x00000014|gEfiMdePkgTokenSpaceGuid|UINT32|0x01040008 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_OUTPUT_ERROR
|
PcdStatusCodeValueRemoteConsoleOutputError|0x00000014|gEfiMdePkgTokenSpaceGuid|UINT32|0x01040008 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_OUTPUT_ERROR
|
||||||
|
PcdUefiVariableDefaultTimeout|0x00000015|gEfiMdePkgTokenSpaceGuid|UINT16|0x0008
|
||||||
|
PcdUefiVariableDefaultLangCodes|0x00000016|gEfiMdePkgTokenSpaceGuid|VOID*|"engfra"
|
||||||
|
PcdUefiVariableDefaultLang|0x00000017|gEfiMdePkgTokenSpaceGuid|VOID*|"eng"
|
||||||
|
PcdUefiVariableDefaultPlatformLangCodes|0x00000018|gEfiMdePkgTokenSpaceGuid|VOID*|"en"
|
||||||
|
PcdUefiVariableDefaultPlatformLang|0x00000019|gEfiMdePkgTokenSpaceGuid|VOID*|"en;fr"
|
||||||
|
|
||||||
[PcdsPatchableInModule.common]
|
[PcdsPatchableInModule.common]
|
||||||
PcdDebugPrintErrorLevel|0x00000006|gEfiMdePkgTokenSpaceGuid|UINT32|0x80000000
|
PcdDebugPrintErrorLevel|0x00000006|gEfiMdePkgTokenSpaceGuid|UINT32|0x80000000
|
||||||
|
|
|
@ -25,7 +25,7 @@ Abstract:
|
||||||
#define MAX_STRING_LEN 200
|
#define MAX_STRING_LEN 200
|
||||||
static BOOLEAN mFeaturerSwitch = TRUE;
|
static BOOLEAN mFeaturerSwitch = TRUE;
|
||||||
static BOOLEAN mResetRequired = FALSE;
|
static BOOLEAN mResetRequired = FALSE;
|
||||||
extern UINT16 gPlatformBootTimeOutDefault;
|
|
||||||
|
|
||||||
UINT16
|
UINT16
|
||||||
BdsLibGetTimeout (
|
BdsLibGetTimeout (
|
||||||
|
@ -66,7 +66,7 @@ Returns:
|
||||||
// present.
|
// present.
|
||||||
// This code should be removed later.
|
// This code should be removed later.
|
||||||
//
|
//
|
||||||
Timeout = gPlatformBootTimeOutDefault;
|
Timeout = PcdGet16 (PcdUefiVariableDefaultTimeout);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Notes: Platform should set default variable if non exists on all error cases!!!
|
// Notes: Platform should set default variable if non exists on all error cases!!!
|
||||||
|
|
|
@ -63,6 +63,7 @@
|
||||||
DxeServicesTableLib
|
DxeServicesTableLib
|
||||||
UefiLib
|
UefiLib
|
||||||
BaseLib
|
BaseLib
|
||||||
|
PcdLib
|
||||||
|
|
||||||
[Guids]
|
[Guids]
|
||||||
gEfiGlobalVariableGuid # ALWAYS_CONSUMED
|
gEfiGlobalVariableGuid # ALWAYS_CONSUMED
|
||||||
|
@ -85,3 +86,5 @@
|
||||||
gEfiFirmwareVolumeProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
gEfiFirmwareVolumeProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
|
||||||
gEfiLoadedImageProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiLoadedImageProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
|
|
||||||
|
[PcdsFixedAtBuild.common]
|
||||||
|
PcdUefiVariableDefaultTimeout|gEfiMdePkgTokenSpaceGuid
|
||||||
|
|
|
@ -21,20 +21,14 @@
|
||||||
//
|
//
|
||||||
#include <PiDxe.h>
|
#include <PiDxe.h>
|
||||||
#include <WinNtDxe.h>
|
#include <WinNtDxe.h>
|
||||||
//
|
|
||||||
// The protocols, PPI and GUID defintions for this module
|
|
||||||
//
|
|
||||||
#include <Protocol/Cpu.h>
|
#include <Protocol/Cpu.h>
|
||||||
#include <Protocol/SimpleTextIn.h>
|
#include <Protocol/SimpleTextIn.h>
|
||||||
#include <Protocol/SimpleTextOut.h>
|
#include <Protocol/SimpleTextOut.h>
|
||||||
#include <Protocol/LoadedImage.h>
|
#include <Protocol/LoadedImage.h>
|
||||||
#include <Guid/GenericPlatformVariable.h>
|
|
||||||
#include <Guid/ShellFile.h>
|
|
||||||
#include <Protocol/SimpleFileSystem.h>
|
#include <Protocol/SimpleFileSystem.h>
|
||||||
#include <Protocol/BlockIo.h>
|
#include <Protocol/BlockIo.h>
|
||||||
#include <Protocol/SimpleNetwork.h>
|
#include <Protocol/SimpleNetwork.h>
|
||||||
#include <Protocol/AcpiS3Save.h>
|
#include <Protocol/AcpiS3Save.h>
|
||||||
#include <Guid/GlobalVariable.h>
|
|
||||||
#include <Protocol/FormBrowserFramework.h>
|
#include <Protocol/FormBrowserFramework.h>
|
||||||
#include <Protocol/LegacyBios.h>
|
#include <Protocol/LegacyBios.h>
|
||||||
#include <Protocol/DriverBinding.h>
|
#include <Protocol/DriverBinding.h>
|
||||||
|
@ -44,10 +38,9 @@
|
||||||
#include <Protocol/Performance.h>
|
#include <Protocol/Performance.h>
|
||||||
#include <Protocol/WinNtIo.h>
|
#include <Protocol/WinNtIo.h>
|
||||||
#include <Guid/PcAnsi.h>
|
#include <Guid/PcAnsi.h>
|
||||||
|
#include <Guid/GlobalVariable.h>
|
||||||
//
|
#include <Guid/GenericPlatformVariable.h>
|
||||||
// The Library classes this module consumes
|
#include <Guid/ShellFile.h>
|
||||||
//
|
|
||||||
#include <Library/EdkGenericBdsLib.h>
|
#include <Library/EdkGenericBdsLib.h>
|
||||||
#include <Library/BaseLib.h>
|
#include <Library/BaseLib.h>
|
||||||
#include <Library/UefiLib.h>
|
#include <Library/UefiLib.h>
|
||||||
|
@ -62,6 +55,8 @@
|
||||||
#include <Library/DevicePathLib.h>
|
#include <Library/DevicePathLib.h>
|
||||||
#include <Library/PerformanceLib.h>
|
#include <Library/PerformanceLib.h>
|
||||||
#include <Library/PeCoffLib.h>
|
#include <Library/PeCoffLib.h>
|
||||||
|
#include <Library/PcdLib.h>
|
||||||
|
|
||||||
|
|
||||||
#define PERF_TOKEN_LENGTH 28
|
#define PERF_TOKEN_LENGTH 28
|
||||||
#define PERF_PEI_ENTRY_MAX_NUM 50
|
#define PERF_PEI_ENTRY_MAX_NUM 50
|
||||||
|
|
|
@ -236,13 +236,14 @@
|
||||||
PcdDxeIplSupportEfiDecompress|gEfiMdeModulePkgTokenSpaceGuid|TRUE
|
PcdDxeIplSupportEfiDecompress|gEfiMdeModulePkgTokenSpaceGuid|TRUE
|
||||||
PcdDxeIplSupportTianoDecompress|gEfiMdeModulePkgTokenSpaceGuid|TRUE
|
PcdDxeIplSupportTianoDecompress|gEfiMdeModulePkgTokenSpaceGuid|TRUE
|
||||||
PcdDxeIplSupportCustomDecompress|gEfiMdeModulePkgTokenSpaceGuid|TRUE
|
PcdDxeIplSupportCustomDecompress|gEfiMdeModulePkgTokenSpaceGuid|TRUE
|
||||||
|
PcdUefiVariableDefaultLangDepricate|gEfiMdePkgTokenSpaceGuid|FALSE
|
||||||
|
|
||||||
[PcdsPatchableInModule.IA32]
|
[PcdsPatchableInModule.IA32]
|
||||||
PcdStatusCodeMemorySize|gEfiIntelFrameworkModulePkgTokenSpaceGuid|1
|
PcdStatusCodeMemorySize|gEfiIntelFrameworkModulePkgTokenSpaceGuid|1
|
||||||
PcdStatusCodeRuntimeMemorySize|gEfiIntelFrameworkModulePkgTokenSpaceGuid|128
|
PcdStatusCodeRuntimeMemorySize|gEfiIntelFrameworkModulePkgTokenSpaceGuid|128
|
||||||
|
|
||||||
[PcdsFixedAtBuild.IA32]
|
[PcdsFixedAtBuild.IA32]
|
||||||
PcdWinNtMemorySizeForSecMain|gEfiNt32PkgTokenSpaceGuid|L"64!64"|10
|
PcdWinNtMemorySizeForSecMain|gEfiNt32PkgTokenSpaceGuid|L"64!64"|12
|
||||||
PcdWinNtFirmwareVolume|gEfiNt32PkgTokenSpaceGuid|L"..\\Fv\\Fv_Recovery.fd"|52
|
PcdWinNtFirmwareVolume|gEfiNt32PkgTokenSpaceGuid|L"..\\Fv\\Fv_Recovery.fd"|52
|
||||||
PcdWinNtBootMode|gEfiNt32PkgTokenSpaceGuid|1
|
PcdWinNtBootMode|gEfiNt32PkgTokenSpaceGuid|1
|
||||||
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
|
PcdMaximumUnicodeStringLength|gEfiMdePkgTokenSpaceGuid|1000000
|
||||||
|
@ -267,6 +268,11 @@
|
||||||
PcdStatusCodeValueRemoteConsoleReset|gEfiMdePkgTokenSpaceGuid|0x01040001 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_PC_RESET
|
PcdStatusCodeValueRemoteConsoleReset|gEfiMdePkgTokenSpaceGuid|0x01040001 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_PC_RESET
|
||||||
PcdStatusCodeValueRemoteConsoleInputError|gEfiMdePkgTokenSpaceGuid|0x01040007 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_INPUT_ERROR
|
PcdStatusCodeValueRemoteConsoleInputError|gEfiMdePkgTokenSpaceGuid|0x01040007 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_INPUT_ERROR
|
||||||
PcdStatusCodeValueRemoteConsoleOutputError|gEfiMdePkgTokenSpaceGuid|0x01040008 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_OUTPUT_ERROR
|
PcdStatusCodeValueRemoteConsoleOutputError|gEfiMdePkgTokenSpaceGuid|0x01040008 # EFI_PERIPHERAL_REMOTE_CONSOLE | EFI_P_EC_OUTPUT_ERROR
|
||||||
|
PcdUefiVariableDefaultTimeout|gEfiMdePkgTokenSpaceGuid|0x0008
|
||||||
|
PcdUefiVariableDefaultLangCodes|gEfiMdePkgTokenSpaceGuid|"engfra"|7
|
||||||
|
PcdUefiVariableDefaultLang|gEfiMdePkgTokenSpaceGuid|"eng"|4
|
||||||
|
PcdUefiVariableDefaultPlatformLangCodes|gEfiMdePkgTokenSpaceGuid|"en;fr"|6
|
||||||
|
PcdUefiVariableDefaultPlatformLang|gEfiMdePkgTokenSpaceGuid|"en"|2
|
||||||
|
|
||||||
[PcdsFeatureFlag.IA32]
|
[PcdsFeatureFlag.IA32]
|
||||||
PcdPeiPcdDatabaseTraverseEnabled|gEfiMdeModulePkgTokenSpaceGuid|TRUE
|
PcdPeiPcdDatabaseTraverseEnabled|gEfiMdeModulePkgTokenSpaceGuid|TRUE
|
||||||
|
|
|
@ -15,45 +15,34 @@
|
||||||
#ifndef __COMMON_HEADER_H_
|
#ifndef __COMMON_HEADER_H_
|
||||||
#define __COMMON_HEADER_H_
|
#define __COMMON_HEADER_H_
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// The package level header files this module uses
|
|
||||||
//
|
|
||||||
#include <PiDxe.h>
|
#include <PiDxe.h>
|
||||||
|
#include <Common/MaxBbsEntries.h>
|
||||||
//
|
|
||||||
// The protocols, PPI and GUID defintions for this module
|
|
||||||
//
|
|
||||||
#include <Protocol/FormCallbackFramework.h>
|
#include <Protocol/FormCallbackFramework.h>
|
||||||
#include <Guid/FileSystemVolumeLabelInfo.h>
|
|
||||||
#include <Protocol/DevicePath.h>
|
#include <Protocol/DevicePath.h>
|
||||||
#include <Guid/BootState.h>
|
|
||||||
#include <Protocol/LoadFile.h>
|
#include <Protocol/LoadFile.h>
|
||||||
#include <Protocol/CpuIo.h>
|
#include <Protocol/CpuIo.h>
|
||||||
#include <Guid/FileInfo.h>
|
|
||||||
#include <Protocol/Bds.h>
|
#include <Protocol/Bds.h>
|
||||||
#include <Protocol/DataHub.h>
|
#include <Protocol/DataHub.h>
|
||||||
#include <Protocol/FormBrowserFramework.h>
|
#include <Protocol/FormBrowserFramework.h>
|
||||||
#include <Guid/Bmp.h>
|
|
||||||
#include <Protocol/UgaDraw.h>
|
#include <Protocol/UgaDraw.h>
|
||||||
#include <Protocol/BlockIo.h>
|
#include <Protocol/BlockIo.h>
|
||||||
#include <Guid/GlobalVariable.h>
|
|
||||||
#include <Protocol/ConsoleControl.h>
|
#include <Protocol/ConsoleControl.h>
|
||||||
#include <Protocol/GenericMemoryTest.h>
|
#include <Protocol/GenericMemoryTest.h>
|
||||||
#include <Protocol/GraphicsOutput.h>
|
#include <Protocol/GraphicsOutput.h>
|
||||||
#include <Protocol/SimpleFileSystem.h>
|
#include <Protocol/SimpleFileSystem.h>
|
||||||
#include <Protocol/HiiFramework.h>
|
#include <Protocol/HiiFramework.h>
|
||||||
#include <Guid/GenericPlatformVariable.h>
|
|
||||||
#include <Protocol/SerialIo.h>
|
#include <Protocol/SerialIo.h>
|
||||||
#include <Protocol/LegacyBios.h>
|
#include <Protocol/LegacyBios.h>
|
||||||
#include <Common/MaxBbsEntries.h>
|
#include <Protocol/Performance.h>
|
||||||
#include <Guid/PcAnsi.h>
|
#include <Guid/PcAnsi.h>
|
||||||
#include <Guid/DataHubRecords.h>
|
#include <Guid/DataHubRecords.h>
|
||||||
#include <Protocol/Performance.h>
|
#include <Guid/Bmp.h>
|
||||||
|
#include <Guid/FileInfo.h>
|
||||||
|
#include <Guid/BootState.h>
|
||||||
|
#include <Guid/FileSystemVolumeLabelInfo.h>
|
||||||
|
#include <Guid/GenericPlatformVariable.h>
|
||||||
|
#include <Guid/GlobalVariable.h>
|
||||||
|
|
||||||
//
|
|
||||||
// The Library classes this module consumes
|
|
||||||
//
|
|
||||||
#include <Library/DebugLib.h>
|
#include <Library/DebugLib.h>
|
||||||
#include <Library/UefiLib.h>
|
#include <Library/UefiLib.h>
|
||||||
#include <Library/UefiDriverEntryPoint.h>
|
#include <Library/UefiDriverEntryPoint.h>
|
||||||
|
@ -73,6 +62,7 @@
|
||||||
#include <Library/DevicePathLib.h>
|
#include <Library/DevicePathLib.h>
|
||||||
#include <Library/HiiLibFramework.h>
|
#include <Library/HiiLibFramework.h>
|
||||||
#include <Library/PeCoffLib.h>
|
#include <Library/PeCoffLib.h>
|
||||||
|
#include <Library/PcdLib.h>
|
||||||
|
|
||||||
//
|
//
|
||||||
// The rest of the includes
|
// The rest of the includes
|
||||||
|
|
|
@ -29,11 +29,6 @@ Revision History
|
||||||
#include "BdsString.h"
|
#include "BdsString.h"
|
||||||
#include "Language.h"
|
#include "Language.h"
|
||||||
|
|
||||||
//
|
|
||||||
// Default language code, currently is English
|
|
||||||
//
|
|
||||||
CHAR8 *mDefaultLangCode = "eng";
|
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
InitializeLanguage (
|
InitializeLanguage (
|
||||||
|
@ -53,83 +48,107 @@ Returns:
|
||||||
--*/
|
--*/
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
UINTN Index;
|
|
||||||
UINTN Size;
|
UINTN Size;
|
||||||
|
CHAR8 *Lang;
|
||||||
CHAR8 LangCode[ISO_639_2_ENTRY_SIZE];
|
CHAR8 LangCode[ISO_639_2_ENTRY_SIZE];
|
||||||
CHAR8 *LangCodes;
|
CHAR8 *LangCodes;
|
||||||
CHAR16 *LanguageString;
|
CHAR8 *PlatformLang;
|
||||||
|
CHAR8 *PlatformLangCodes;
|
||||||
|
UINTN Index;
|
||||||
|
BOOLEAN Invalid;
|
||||||
|
|
||||||
LanguageString = NULL;
|
|
||||||
LangCodes = NULL;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Collect the languages from what our current Language support is based on our VFR
|
|
||||||
//
|
|
||||||
gHii->GetPrimaryLanguages (gHii, gStringPackHandle, &LanguageString);
|
|
||||||
|
|
||||||
LangCodes = AllocatePool (StrLen (LanguageString));
|
|
||||||
ASSERT (LangCodes);
|
|
||||||
|
|
||||||
//
|
|
||||||
// Convert LanguageString from Unicode to EFI defined ASCII LangCodes
|
|
||||||
//
|
|
||||||
for (Index = 0; LanguageString[Index] != 0x0000; Index++) {
|
|
||||||
LangCodes[Index] = (CHAR8) LanguageString[Index];
|
|
||||||
}
|
|
||||||
|
|
||||||
LangCodes[Index] = 0;
|
|
||||||
|
|
||||||
|
LangCodes = (CHAR8 *)PcdGetPtr (PcdUefiVariableDefaultLangCodes);
|
||||||
if (LangCodesSettingRequired) {
|
if (LangCodesSettingRequired) {
|
||||||
|
if (!FeaturePcdGet (PcdUefiVariableDefaultLangDepricate)) {
|
||||||
|
//
|
||||||
|
// UEFI 2.1 depricated this variable so we support turning it off
|
||||||
|
//
|
||||||
|
Status = gRT->SetVariable (
|
||||||
|
L"LangCodes",
|
||||||
|
&gEfiGlobalVariableGuid,
|
||||||
|
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
|
||||||
|
AsciiStrLen (LangCodes),
|
||||||
|
LangCodes
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PlatformLangCodes = (CHAR8 *)PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes);
|
||||||
Status = gRT->SetVariable (
|
Status = gRT->SetVariable (
|
||||||
L"LangCodes",
|
L"PlatformLangCodes",
|
||||||
&gEfiGlobalVariableGuid,
|
&gEfiGlobalVariableGuid,
|
||||||
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
|
EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
|
||||||
AsciiStrLen (LangCodes),
|
AsciiStrSize (PlatformLangCodes),
|
||||||
LangCodes
|
PlatformLangCodes
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
//
|
|
||||||
// Find current LangCode from Lang NV Variable
|
|
||||||
//
|
|
||||||
Size = ISO_639_2_ENTRY_SIZE;
|
|
||||||
Status = gRT->GetVariable (
|
|
||||||
L"Lang",
|
|
||||||
&gEfiGlobalVariableGuid,
|
|
||||||
NULL,
|
|
||||||
&Size,
|
|
||||||
&LangCode
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!EFI_ERROR (Status)) {
|
if (!FeaturePcdGet (PcdUefiVariableDefaultLangDepricate)) {
|
||||||
Status = EFI_NOT_FOUND;
|
//
|
||||||
for (Index = 0; LangCodes[Index] != 0; Index += ISO_639_2_ENTRY_SIZE) {
|
// UEFI 2.1 depricated this variable so we support turning it off
|
||||||
if (CompareMem (&LangCodes[Index], LangCode, ISO_639_2_ENTRY_SIZE) == 0) {
|
//
|
||||||
Status = EFI_SUCCESS;
|
|
||||||
break;
|
//
|
||||||
}
|
// Find current LangCode from Lang NV Variable
|
||||||
}
|
//
|
||||||
}
|
Size = ISO_639_2_ENTRY_SIZE;
|
||||||
//
|
Status = gRT->GetVariable (
|
||||||
// If we cannot get language code from Lang variable,
|
|
||||||
// or LangCode cannot be found from language table,
|
|
||||||
// set the mDefaultLangCode to Lang variable.
|
|
||||||
//
|
|
||||||
if (EFI_ERROR (Status)) {
|
|
||||||
Status = gRT->SetVariable (
|
|
||||||
L"Lang",
|
L"Lang",
|
||||||
&gEfiGlobalVariableGuid,
|
&gEfiGlobalVariableGuid,
|
||||||
|
NULL,
|
||||||
|
&Size,
|
||||||
|
&LangCode
|
||||||
|
);
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
Status = EFI_NOT_FOUND;
|
||||||
|
for (Index = 0; LangCodes[Index] != 0; Index += ISO_639_2_ENTRY_SIZE) {
|
||||||
|
if (CompareMem (&LangCodes[Index], LangCode, ISO_639_2_ENTRY_SIZE) == 0) {
|
||||||
|
Status = EFI_SUCCESS;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// If we cannot get language code from Lang variable,
|
||||||
|
// or LangCode cannot be found from language table,
|
||||||
|
// set the mDefaultLangCode to Lang variable.
|
||||||
|
//
|
||||||
|
if (EFI_ERROR (Status)) {
|
||||||
|
Lang = (CHAR8 *)PcdGetPtr (PcdUefiVariableDefaultLang);
|
||||||
|
Status = gRT->SetVariable (
|
||||||
|
L"Lang",
|
||||||
|
&gEfiGlobalVariableGuid,
|
||||||
|
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
|
||||||
|
ISO_639_2_ENTRY_SIZE,
|
||||||
|
Lang
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Invalid = FALSE;
|
||||||
|
PlatformLang = BdsLibGetVariableAndSize (L"PlatformLang", &gEfiGlobalVariableGuid, &Size);
|
||||||
|
if (PlatformLang != NULL) {
|
||||||
|
//
|
||||||
|
// Check Current PlatformLang value against PlatformLangCode. Need a library that is TBD
|
||||||
|
// Set Invalid based on state of PlatformLang.
|
||||||
|
//
|
||||||
|
|
||||||
|
FreePool (PlatformLang);
|
||||||
|
} else {
|
||||||
|
// No valid variable is set
|
||||||
|
Invalid = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Invalid) {
|
||||||
|
PlatformLang = (CHAR8 *)PcdGetPtr (PcdUefiVariableDefaultPlatformLang);
|
||||||
|
Status = gRT->SetVariable (
|
||||||
|
L"PlatformLang",
|
||||||
|
&gEfiGlobalVariableGuid,
|
||||||
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
|
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
|
||||||
ISO_639_2_ENTRY_SIZE,
|
AsciiStrSize (PlatformLang),
|
||||||
mDefaultLangCode
|
PlatformLang
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LangCodes) {
|
|
||||||
FreePool (LangCodes);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (LanguageString != NULL) {
|
|
||||||
FreePool (LanguageString);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,6 +172,15 @@
|
||||||
gEfiLegacyBiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
gEfiLegacyBiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||||
gEfiBdsArchProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
gEfiBdsArchProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||||
|
|
||||||
|
[PcdsFeatureFlag.common]
|
||||||
|
PcdUefiVariableDefaultLangDepricate|gEfiMdePkgTokenSpaceGuid|
|
||||||
|
|
||||||
|
[PcdsFixedAtBuild.common]
|
||||||
|
PcdUefiVariableDefaultLangCodes|gEfiMdePkgTokenSpaceGuid
|
||||||
|
PcdUefiVariableDefaultLang|gEfiMdePkgTokenSpaceGuid
|
||||||
|
PcdUefiVariableDefaultPlatformLangCodes|gEfiMdePkgTokenSpaceGuid
|
||||||
|
PcdUefiVariableDefaultPlatformLang|gEfiMdePkgTokenSpaceGuid
|
||||||
|
|
||||||
[depex]
|
[depex]
|
||||||
gEfiHiiProtocolGuid
|
gEfiHiiProtocolGuid
|
||||||
|
|
|
@ -30,10 +30,6 @@ Abstract:
|
||||||
#include <Protocol/WinNtThunk.h>
|
#include <Protocol/WinNtThunk.h>
|
||||||
#include <Protocol/WinNtIo.h>
|
#include <Protocol/WinNtIo.h>
|
||||||
|
|
||||||
//
|
|
||||||
// Predefined platform default time out value
|
|
||||||
//
|
|
||||||
UINT16 gPlatformBootTimeOutDefault = 10;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Platform specific keyboard device path
|
// Platform specific keyboard device path
|
||||||
|
|
Loading…
Reference in New Issue