// /** @file
// This package provides the modules that conform to UEFI/PI Industry standards.
//
// It also provides the definitions(including PPIs/PROTOCOLs/GUIDs and library classes)
// and libraries instances, which are used for those modules.
//
// Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
//
// This program and the accompanying materials are licensed and made available under
// the terms and conditions of the BSD License that accompanies this distribution.
// The full text of the license may be found at
// http://opensource.org/licenses/bsd-license.php.
//
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// **/


#string STR_PACKAGE_ABSTRACT            #language en-US "Provides the modules that conform to UEFI/PI Industry standards"

#string STR_PACKAGE_DESCRIPTION         #language en-US "It also provides the definitions (including PPIs/PROTOCOLs/GUIDs and library classes) and libraries instances, which are used for those modules."



#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadModuleAtFixAddressEnable_PROMPT  #language en-US "Enable LMFA feature"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadModuleAtFixAddressEnable_HELP  #language en-US "Flag of enabling/disabling the feature of Loading Module at Fixed Address.<BR><BR>\n"
                                                                                                 "0xFFFFFFFFFFFFFFFF: Enable the feature as fixed offset to TOLM.<BR>\n"
                                                                                                 "0: Disable the feature.<BR>\n"
                                                                                                 "Other Value:        Enable the feature as fixed absolute address, and the value is the top memory address.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_ERR_80000001 #language en-US "Invalid value provided."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdProgressCodeOsLoaderLoad_PROMPT  #language en-US "Progress Code for OS Loader LoadImage start."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdProgressCodeOsLoaderLoad_HELP  #language en-US "Progress Code for OS Loader LoadImage start.<BR><BR>\n"
                                                                                             "PROGRESS_CODE_OS_LOADER_LOAD   = (EFI_SOFTWARE_DXE_BS_DRIVER | (EFI_OEM_SPECIFIC | 0x00000000)) = 0x03058000<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_ERR_80000003 #language en-US "Incorrect progress code provided."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdProgressCodeOsLoaderStart_PROMPT  #language en-US "Progress Code for OS Loader StartImage start"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdProgressCodeOsLoaderStart_HELP  #language en-US "Progress Code for OS Loader StartImage start.<BR><BR>\n"
                                                                                              "PROGRESS_CODE_OS_LOADER_START  = (EFI_SOFTWARE_DXE_BS_DRIVER | (EFI_OEM_SPECIFIC | 0x00000001)) = 0x03058001<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdProgressCodeS3SuspendStart_PROMPT  #language en-US "Progress Code for S3 Suspend start"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdProgressCodeS3SuspendStart_HELP  #language en-US "Progress Code for S3 Suspend start.<BR><BR>\n"
                                                                                               "PROGRESS_CODE_S3_SUSPEND_START = (EFI_SOFTWARE_SMM_DRIVER | (EFI_OEM_SPECIFIC | 0x00000000))    = 0x03078000<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdProgressCodeS3SuspendEnd_PROMPT  #language en-US "Progress Code for S3 Suspend end"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdProgressCodeS3SuspendEnd_HELP  #language en-US "Progress Code for S3 Suspend end.<BR><BR>\n"
                                                                                             "PROGRESS_CODE_S3_SUSPEND_END   = (EFI_SOFTWARE_SMM_DRIVER | (EFI_OEM_SPECIFIC | 0x00000001))    = 0x03078001<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdErrorCodeSetVariable_PROMPT  #language en-US "Error Code for SetVariable failure"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdErrorCodeSetVariable_HELP  #language en-US "Error Code for SetVariable failure.<BR><BR>\n"
                                                                                         "EDKII_ERROR_CODE_SET_VARIABLE  = (EFI_SOFTWARE_DXE_BS_DRIVER | (EFI_OEM_SPECIFIC | 0x00000002)) = 0x03058002<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_ERR_80000006 #language en-US "Incorrect error code provided."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxPeiPcdCallBackNumberPerPcdEntry_PROMPT  #language en-US "Max PEI PCD callback number per PCD entry"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxPeiPcdCallBackNumberPerPcdEntry_HELP  #language en-US "Dynamic type PCD can be registered callback function for Pcd setting action. PcdMaxPeiPcdCallBackNumberPerPcdEntry indicates the maximum number of callback function for a dynamic PCD used in PEI phase."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVpdBaseAddress_PROMPT  #language en-US "VPD base address"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVpdBaseAddress_HELP  #language en-US "VPD type PCD allows a developer to point to an absolute physical address PCDVPDBASEADDRESS to store PCD value."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreMaxFvSupported_PROMPT  #language en-US "Maximum number of FV supported by PeiCore"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreMaxFvSupported_HELP  #language en-US "Maximum number of FV is supported by PeiCore's dispatching."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreMaxPeimPerFv_PROMPT  #language en-US "Maximum File count per FV supported by PeiCore"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreMaxPeimPerFv_HELP  #language en-US "Maximum File count in every FV is supported by PeiCore's dispatching. PeiCore supported File type includes PEIM, Combined PEIM and FV."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreMaxPeiStackSize_PROMPT  #language en-US "Maximum stack size for PeiCore"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreMaxPeiStackSize_HELP  #language en-US "Maximum stack size for PeiCore."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreMaxPpiSupported_PROMPT  #language en-US "Maximum PPI count supported by PeiCore"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreMaxPpiSupported_HELP  #language en-US "Maximum PPI count is supported by PeiCore's PPI database."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxVariableSize_PROMPT  #language en-US "Maximum variable size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxVariableSize_HELP  #language en-US "The maximum size of a single non-HwErr type variable."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxAuthVariableSize_PROMPT  #language en-US "Maximum authenticated variable size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxAuthVariableSize_HELP  #language en-US "The maximum size of a single authenticated variable."
                                                                                        "The value is 0 as default for compatibility that maximum authenticated variable size is specified by PcdMaxVariableSize."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxVolatileVariableSize_PROMPT  #language en-US "The maximum size of a single non-authenticated volatile variable."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxVolatileVariableSize_HELP  #language en-US "The maximum size of a single non-authenticated volatile variable.<BR><BR>\n"
                                                                                            "The default value is 0 for compatibility: in that case, the maximum "
                                                                                            "non-authenticated volatile variable size remains specified by "
                                                                                            "PcdMaxVariableSize.<BR>\n"
                                                                                            "Only the MdeModulePkg/Universal/Variable/RuntimeDxe driver supports this PCD.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxHardwareErrorVariableSize_PROMPT  #language en-US "Maximum HwErr variable size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxHardwareErrorVariableSize_HELP  #language en-US "The maximum size of single hardware error record variable.<BR><BR>\n"
                                                                                                 "In IA32/X64 platforms, this value should be larger than 1KB.<BR>\n"
                                                                                                 "In IA64 platforms, this value should be larger than 128KB.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHwErrStorageSize_PROMPT  #language en-US "HwErr variable storage size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHwErrStorageSize_HELP  #language en-US "The size of reserved HwErr variable space. Note that this value must be less than or equal to PcdFlashNvStorageVariableSize. In EdkII implementation, HwErr type variable is stored with common non-volatile variables in the same NV region. so the platform integrator should ensure this value is less than or equal to PcdFlashNvStorageVariableSize. this value is used to guarantee the space of HwErr type variable and not populated by common variable."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxUserNvVariableSpaceSize_PROMPT  #language en-US "Maximum user NV variable space size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxUserNvVariableSpaceSize_HELP  #language en-US "The size of maximum user NV variable space.<BR><BR>\n"
                                                                                               "Note that this value must be less than (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER) - PcdHwErrStorageSize).<BR>\n"
                                                                                               "If the value is 0, it means user variable share the same NV storage with system variable, "
                                                                                               "this is designed to keep the compatibility for the platform that does not allocate special region for user variable.<BR>\n"
                                                                                               "If the value is non-0, the below 4 types of variables will be regarded as System Variable after EndOfDxe, their property could be got by VarCheck protocol, "
                                                                                               "otherwise the variable will be regarded as user variable.<BR>\n"
                                                                                               " 1) UEFI defined variables (gEfiGlobalVariableGuid and gEfiImageSecurityDatabaseGuid(auth variable) variables at least).<BR>\n"
                                                                                               " 2) Variables managed by Variable driver internally.<BR>\n"
                                                                                               " 3) Variables need to be locked, they MUST be set by VariableLock protocol.<BR>\n"
                                                                                               " 4) Important variables during platform boot, their property SHOULD be set by VarCheck protocol.<BR>\n"
                                                                                               "The PCD is used to guarantee the space of system variable and not populated by user variable.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBoottimeReservedNvVariableSpaceSize_PROMPT  #language en-US "Boottime reserved NV variable space size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBoottimeReservedNvVariableSpaceSize_HELP  #language en-US "The size of NV variable space reserved at UEFI boottime.<BR><BR>\n"
                                                                                                        "Note that this value must be less than (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER) - PcdHwErrStorageSize).<BR>\n"
                                                                                                        "In EdkII implementation, variable driver can reserved some NV storage region for boottime settings. "
                                                                                                        "So at UEFI runtime, the variable service consumer can not exhaust full NV storage region.<BR>\n"
                                                                                                        "Then the common NV variable space size at boottime will be "
                                                                                                        " (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER) - PcdHwErrStorageSize),<BR>\n"
                                                                                                        "and the common NV variable space size at runtime will be "
                                                                                                        " (PcdFlashNvStorageVariableSize - EFI_FIRMWARE_VOLUME_HEADER.HeaderLength - sizeof (VARIABLE_STORE_HEADER) - PcdHwErrStorageSize) - PcdBoottimeReservedNvVariableSpaceSize.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdReclaimVariableSpaceAtEndOfDxe_PROMPT  #language en-US "Reclaim variable space at EndOfDxe"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdReclaimVariableSpaceAtEndOfDxe_HELP  #language en-US "Reclaim variable space at EndOfDxe.<BR><BR>\n"
                                                                                                   "The value is FALSE as default for compatibility that variable driver tries to reclaim variable space at ReadyToBoot event.<BR>\n"
                                                                                                   "If the value is set to TRUE, variable driver tries to reclaim variable space at EndOfDxe event.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVariableStoreSize_PROMPT  #language en-US "Variable storage size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVariableStoreSize_HELP  #language en-US "The size of volatile buffer. This buffer is used to store VOLATILE attribute variables."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiTableStorageFile_PROMPT  #language en-US "FFS name of ACPI tables storage"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiTableStorageFile_HELP  #language en-US "FFS filename to find the ACPI tables."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleCoalesceFile_PROMPT  #language en-US "FFS name of capsule coalesce image"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleCoalesceFile_HELP  #language en-US "FFS filename to find the capsule coalesce image."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxPeiPerformanceLogEntries_PROMPT  #language en-US "Maximum number of PEI performance log entries"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxPeiPerformanceLogEntries_HELP  #language en-US "Maximum number of performance log entries during PEI phase.\n"
                                                                                                "Use PcdMaxPeiPerformanceLogEntries16 if the number of entries required is\n"
                                                                                                "more than 255."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxPeiPerformanceLogEntries16_PROMPT  #language en-US "Maximum number of PEI performance log entries"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxPeiPerformanceLogEntries16_HELP  #language en-US "Maximum number of performance log entries during PEI phase.\n"
                                                                                                  "If set to 0, then PcdMaxPeiPerformanceLogEntries determines the number of\n"
                                                                                                  "entries. If greater than 0, then this PCD determines the number of entries,\n"
                                                                                                  "and PcdMaxPeiPerformanceLogEntries is ignored."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRealTimeClockUpdateTimeout_PROMPT  #language en-US "RTC Update Timeout Value"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRealTimeClockUpdateTimeout_HELP  #language en-US "RTC Update Timeout Value(microsecond)."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialUseMmio_PROMPT  #language en-US "Serial port registers use MMIO"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialUseMmio_HELP  #language en-US "Indicates the 16550 serial port registers are in MMIO space, or in I/O space. Default is I/O space.<BR><BR>\n"
                                                                                  "TRUE  - 16550 serial port registers are in MMIO space.<BR>\n"
                                                                                  "FALSE - 16550 serial port registers are in I/O space.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialUseHardwareFlowControl_PROMPT  #language en-US "Enable serial port hardware flow control"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialUseHardwareFlowControl_HELP  #language en-US "Indicates if the 16550 serial port hardware flow control will be enabled. Default is FALSE.<BR><BR>\n"
                                                                                                 "TRUE  - 16550 serial port hardware flow control will be enabled.<BR>\n"
                                                                                                 "FALSE - 16550 serial port hardware flow control will be disabled.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialDetectCable_PROMPT  #language en-US "Enable serial port cable detection"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialDetectCable_HELP  #language en-US "Indicates if the 16550 serial Tx operations will be blocked if DSR is not asserted (no cable). Default is FALSE. This PCD is ignored if PcdSerialUseHardwareFlowControl is FALSE.<BR><BR>\n"
                                                                                      "TRUE  - 16550 serial Tx operations will be blocked if DSR is not asserted.<BR>\n"
                                                                                      "FALSE - 16550 serial Tx operations will not be blocked if DSR is not asserted.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialRegisterBase_PROMPT  #language en-US "Base address of serial port registers"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialRegisterBase_HELP  #language en-US "Base address of 16550 serial port registers in MMIO or I/O space. Default is 0x3F8."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialBaudRate_PROMPT  #language en-US "Baud rate for serial port"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialBaudRate_HELP  #language en-US "Baud rate for the 16550 serial port.  Default is 115200 baud."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialLineControl_PROMPT  #language en-US "Serial port Line Control settings"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialLineControl_HELP  #language en-US "Line Control Register (LCR) for the 16550 serial port. This encodes data bits, parity, and stop bits.<BR><BR>\n"
                                                                                      "BIT1..BIT0 - Data bits.  00b = 5 bits, 01b = 6 bits, 10b = 7 bits, 11b = 8 bits<BR>\n"
                                                                                      "BIT2       - Stop Bits.  0 = 1 stop bit.  1 = 1.5 stop bits if 5 data bits selected, otherwise 2 stop bits.<BR>\n"
                                                                                      "BIT5..BIT3 - Parity.  xx0b = No Parity, 001b = Odd Parity, 011b = Even Parity, 101b = Mark Parity, 111b=Stick Parity<BR>\n"
                                                                                      "BIT7..BIT6 - Reserved.  Must be 0.<BR>\n"
                                                                                      "Default is No Parity, 8 Data Bits, 1 Stop Bit.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_ERR_80000002 #language en-US "Reserved bits must be set to zero."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialFifoControl_PROMPT  #language en-US "Serial port FIFO Control settings"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialFifoControl_HELP  #language en-US "FIFO Control Register (FCR) for the 16550 serial port.<BR><BR>\n"
                                                                                      "BIT0       - FIFO Enable.  0 = Disable FIFOs.  1 = Enable FIFOs.<BR>\n"
                                                                                      "BIT1       - Clear receive FIFO.  1 = Clear FIFO.<BR>\n"
                                                                                      "BIT2       - Clear transmit FIFO.  1 = Clear FIFO.<BR>\n"
                                                                                      "BIT4..BIT3 - Reserved.  Must be 0.<BR>\n"
                                                                                      "BIT5       - Enable 64-byte FIFO.  0 = Disable 64-byte FIFO.  1 = Enable 64-byte FIFO<BR>\n"
                                                                                      "BIT7..BIT6 - Reserved.  Must be 0.<BR>\n"
                                                                                      "Default is to enable and clear all FIFOs.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdTftpBlockSize_PROMPT  #language en-US "TFTP block size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdTftpBlockSize_HELP  #language en-US "This setting can override the default TFTP block size. A value of 0 computes "
                                                                                  "the default from MTU information. A non-zero value will be used as block size "
                                                                                  "in bytes."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxEfiSystemTablePointerAddress_PROMPT  #language en-US "Maximum Efi System Table Pointer address"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxEfiSystemTablePointerAddress_HELP  #language en-US "Maximum address that the DXE Core will allocate the EFI_SYSTEM_TABLE_POINTER structure. The default value for this PCD is 0, which means that the DXE Core will allocate the buffer from the EFI_SYSTEM_TABLE_POINTER structure on a 4MB boundary as close to the top of memory as feasible.  If this PCD is set to a value other than 0, then the DXE Core will first attempt to allocate the EFI_SYSTEM_TABLE_POINTER structure on a 4MB boundary below the address specified by this PCD, and if that allocation fails, retry the allocation on a 4MB boundary as close to the top of memory as feasible."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdShadowPeimOnS3Boot_PROMPT  #language en-US "Shadow Peim On S3 Boot"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdShadowPeimOnS3Boot_HELP  #language en-US "Indicates if to shadow PEIM on S3 boot path after memory is ready.<BR><BR>\n"
                                                                                       "TRUE  - Shadow PEIM on S3 boot path after memory is ready.<BR>\n"
                                                                                       "FALSE - Not shadow PEIM on S3 boot path after memory is ready.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultOemId_PROMPT  #language en-US "Default OEM ID for ACPI table creation"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultOemId_HELP  #language en-US "Default OEM ID for ACPI table creation, its length must be 0x6 bytes to follow ACPI specification."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultOemTableId_PROMPT  #language en-US "Default OEM Table ID for ACPI table creation"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultOemTableId_HELP  #language en-US "Default OEM Table ID for ACPI table creation.<BR><BR>\n"
                                                                                          "According to ACPI specification, this field is particularly useful when\n"
                                                                                          "defining a definition block to distinguish definition block functions.<BR>\n"
                                                                                          "The OEM assigns each dissimilar table a new OEM Table ID.<BR>\n"
                                                                                          "This PCD is ignored for definition block.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultOemRevision_PROMPT  #language en-US "Default OEM Revision for ACPI table creation"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultOemRevision_HELP  #language en-US "Default OEM Revision for ACPI table creation.<BR><BR>\n"
                                                                                           "According to ACPI specification, for LoadTable() opcode, the OS can also\n"
                                                                                           "check the OEM Table ID and Revision ID against a database for a newer\n"
                                                                                           "revision Definition Block of the same OEM Table ID and load it instead.<BR>\n"
                                                                                           "This PCD is ignored for definition block.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultCreatorId_PROMPT  #language en-US "Default Creator ID for ACPI table creation"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultCreatorId_HELP  #language en-US "Default Creator ID for ACPI table creation.<BR><BR>\n"
                                                                                         "According to ACPI specification, for tables containing Definition Blocks,\n"
                                                                                         "this is the ID for the ASL Compiler.<BR>\n"
                                                                                         "This PCD is ignored for definition block.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultCreatorRevision_PROMPT  #language en-US "Default Creator Revision for ACPI table creation"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiDefaultCreatorRevision_HELP  #language en-US "Default Creator Revision for ACPI table creation.<BR><BR>\n"
                                                                                               "According to ACPI specification, for tables containing Definition Blocks,\n"
                                                                                               "this is the revision for the ASL Compiler.<BR>\n"
                                                                                               "This PCD is ignored for definition block.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMemoryProfilePropertyMask_PROMPT  #language en-US "Memory Profile Property"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMemoryProfilePropertyMask_HELP  #language en-US "The mask is used to control memory profile behavior.<BR><BR>\n"
                                                                                           "BIT0 - Enable UEFI memory profile.<BR>\n"
                                                                                           "BIT1 - Enable SMRAM profile.<BR>\n"
                                                                                           "BIT7 - Disable recording at the start.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMemoryProfileMemoryType_PROMPT  #language en-US "Memory profile memory type"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMemoryProfileMemoryType_HELP  #language en-US "This flag is to control which memory types of alloc info will be recorded by DxeCore & SmmCore.<BR><BR>\n"
                                                                                   "For SmmCore, only EfiRuntimeServicesCode and EfiRuntimeServicesData are valid.<BR>\n"
                                                                                   "Below is bit mask for this PCD: (Order is same as UEFI spec)<BR>\n"
                                                                                   " EfiReservedMemoryType          0x0001<BR>\n"
                                                                                   " EfiLoaderCode                  0x0002<BR>\n"
                                                                                   " EfiLoaderData                  0x0004<BR>\n"
                                                                                   " EfiBootServicesCode            0x0008<BR>\n"
                                                                                   " EfiBootServicesData            0x0010<BR>\n"
                                                                                   " EfiRuntimeServicesCode         0x0020<BR>\n"
                                                                                   " EfiRuntimeServicesData         0x0040<BR>\n"
                                                                                   " EfiConventionalMemory          0x0080<BR>\n"
                                                                                   " EfiUnusableMemory              0x0100<BR>\n"
                                                                                   " EfiACPIReclaimMemory           0x0200<BR>\n"
                                                                                   " EfiACPIMemoryNVS               0x0400<BR>\n"
                                                                                   " EfiMemoryMappedIO              0x0800<BR>\n"
                                                                                   " EfiMemoryMappedIOPortSpace     0x1000<BR>\n"
                                                                                   " EfiPalCode                     0x2000<BR>\n"
                                                                                   " EfiPersistentMemory            0x4000<BR>\n"
                                                                                   " OEM Reserved               0x40000000<BR>\n"
                                                                                   " OS Reserved                0x80000000<BR>\n"
                                                                                   "e.g. Reserved+ACPINvs+ACPIReclaim+RuntimeCode+RuntimeData are needed, 0x661 should be used.<BR>\n"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMemoryProfileDriverPath_PROMPT  #language en-US "Memory profile driver path"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMemoryProfileDriverPath_HELP  #language en-US "This PCD is to control which drivers need memory profile data.<BR><BR>\n"
                                                                                   "For example:<BR>\n"
                                                                                   "One image only (Shell):<BR>\n"
                                                                                   "    Header                    GUID<BR>\n"
                                                                                   "    {0x04, 0x06, 0x14, 0x00,  0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1,<BR>\n"
                                                                                   "     0x7F, 0xFF, 0x04, 0x00}<BR>\n"
                                                                                   "Two or more images (Shell + WinNtSimpleFileSystem):<BR>\n"
                                                                                   "    {0x04, 0x06, 0x14, 0x00,  0x83, 0xA5, 0x04, 0x7C, 0x3E, 0x9E, 0x1C, 0x4F, 0xAD, 0x65, 0xE0, 0x52, 0x68, 0xD0, 0xB4, 0xD1,<BR>\n"
                                                                                   "     0x7F, 0x01, 0x04, 0x00,<BR>\n"
                                                                                   "     0x04, 0x06, 0x14, 0x00,  0x8B, 0xE1, 0x25, 0x9C, 0xBA, 0x76, 0xDA, 0x43, 0xA1, 0x32, 0xDB, 0xB0, 0x99, 0x7C, 0xEF, 0xEF,<BR>\n"
                                                                                   "     0x7F, 0xFF, 0x04, 0x00}<BR>\n"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialClockRate_PROMPT  #language en-US "Serial Port Clock Rate"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialClockRate_HELP  #language en-US "UART clock frequency is for the baud rate configuration."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialPciDeviceInfo_PROMPT  #language en-US "PCI Serial Device Info"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialPciDeviceInfo_HELP  #language en-US "PCI Serial Device Info. It is an array of Device, Function, and Power Management\n"
                                                                                        "information that describes the path that contains zero or more PCI to PCI briges\n"
                                                                                        "followed by a PCI serial device.  Each array entry is 4-bytes in length.  The\n"
                                                                                        "first byte is the PCI Device Number, then second byte is the PCI Function Number,\n"
                                                                                        "and the last two bytes are the offset to the PCI power management capabilities\n"
                                                                                        "register used to manage the D0-D3 states.  If a PCI power management capabilities\n"
                                                                                        "register is not present, then the last two bytes in the offset is set to 0.  The\n"
                                                                                        "array is terminated by an array entry with a PCI Device Number of 0xFF.  For a\n"
                                                                                        "non-PCI fixed address serial device, such as an ISA serial device, the value is 0xFF."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialExtendedTxFifoSize_PROMPT  #language en-US "Serial Port Extended Transmit FIFO Size in Bytes"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialExtendedTxFifoSize_HELP  #language en-US "Serial Port Extended Transmit FIFO Size.  The default is 64 bytes."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialRegisterStride_PROMPT  #language en-US "Serial Port Register Stride in Bytes"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialRegisterStride_HELP  #language en-US "The number of bytes between registers in serial device.  The default is 1 byte."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetNxForStack_PROMPT  #language en-US "Set NX for stack"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetNxForStack_HELP  #language en-US "Indicates if to set NX for stack.<BR><BR>"
                                                                                  "For the DxeIpl and the DxeCore are both X64, set NX for stack feature also require PcdDxeIplBuildPageTables be TRUE.<BR>"
                                                                                  "For the DxeIpl and the DxeCore are both IA32 (PcdDxeIplSwitchToLongMode is FALSE), set NX for stack feature also require"
                                                                                  "IA32 PAE is supported and Execute Disable Bit is available.<BR>"
                                                                                  "TRUE  - to set NX for stack.<BR>"
                                                                                  "FALSE - Not to set NX for stack.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiS3Enable_PROMPT  #language en-US "ACPI S3 Enable"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiS3Enable_HELP  #language en-US "Indicates if ACPI S3 will be enabled.<BR><BR>"
                                                                                  "TRUE  - ACPI S3 will be enabled.<BR>"
                                                                                  "FALSE - ACPI S3 will be disabled.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdS3BootScriptStackSize_PROMPT  #language en-US "Reserved S3 Boot Script Stack ACPI Memory Size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdS3BootScriptStackSize_HELP  #language en-US "Specify memory size for boot script executor stack usage in S3 phase. The default size 32K. When changing the value make sure the memory size is large enough to meet boot script executor requirement in the S3 phase."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVarCheckVfrDriverGuidArray_PROMPT  #language en-US "Driver guid array of VFR drivers for VarCheckHiiBin generation"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVarCheckVfrDriverGuidArray_HELP  #language en-US "This PCD to include the driver guid of VFR drivers for VarCheckHiiBin generation.<BR><BR>"
                                                                                               "Default is gZeroGuid that means no VFR driver will be parsed for VarCheckHiiBin generation.<BR>"
                                                                                               "If it is set to an all FFs GUID, it means all modules in all FVs will be parsed for VarCheckHiiBin generation.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageVariableBase_PROMPT  #language en-US "Base address of flash NV variable range"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageVariableBase_HELP  #language en-US "Base address of the NV variable range in flash device."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageVariableSize_PROMPT  #language en-US "Size of flash NV variable range"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageVariableSize_HELP  #language en-US "Size of the NV variable range. Note that this value should less than or equal to PcdFlashNvStorageFtwSpareSize. The root cause is that variable driver will use FTW protocol to reclaim variable region. If the length of variable region is larger than FTW spare size, it means the whole variable region cannot be reflushed through the manner of fault tolerant write."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwSpareBase_PROMPT  #language en-US "Base address of flash FTW spare block range"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwSpareBase_HELP  #language en-US "Base address of the FTW spare block range in flash device. Note that this value should be block size aligned."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwSpareSize_PROMPT  #language en-US "Size of flash FTW spare block range"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwSpareSize_HELP  #language en-US "Size of the FTW spare block range. Note that this value should larger than PcdFlashNvStorageVariableSize and block size aligned. The root cause is that variable driver will use FTW protocol to reclaim variable region. If the length of variable region is larger than FTW spare size, it means the whole variable region cannot be reflushed through the manner of fault tolerant write."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwWorkingBase_PROMPT  #language en-US "Base address of flash FTW working block range"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwWorkingBase_HELP  #language en-US "Base address of the FTW working block range in flash device. If PcdFlashNvStorageFtwWorkingSize is larger than one block size, this value should be block size aligned."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwWorkingSize_PROMPT  #language en-US "Size of flash FTW working block range"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwWorkingSize_HELP  #language en-US "Size of the FTW working block range. If the value is less than one block size, the work space range should not span blocks. If the value is larger than one block size, it should be block size aligned."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageVariableBase64_PROMPT  #language en-US "64-bit Base address of flash NV variable range"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageVariableBase64_HELP  #language en-US "64-bit Base address of the NV variable range in flash device."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwSpareBase64_PROMPT  #language en-US "64-bit Base address of flash FTW spare block range"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwSpareBase64_HELP  #language en-US "64-bit Base address of the FTW spare block range in flash device. Note that this value should be block size aligned."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwWorkingBase64_PROMPT  #language en-US "64-bit Base address of flash FTW working block range"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFlashNvStorageFtwWorkingBase64_HELP  #language en-US "64-bit Base address of the FTW working block range in flash device. If PcdFlashNvStorageFtwWorkingSize is larger than one block size, this value should be block size aligned."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdEmuVariableNvStoreReserved_PROMPT  #language en-US "Reserved memory range for EMU variable NV storage"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdEmuVariableNvStoreReserved_HELP  #language en-US "This PCD defines a reserved memory range for the EMU Variable driver's NV Variable Store. The range is valid if non-zero. The memory range size must be PcdVariableStoreSize."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHelloWorldPrintTimes_PROMPT  #language en-US "HelloWorld print times"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHelloWorldPrintTimes_HELP  #language en-US "This PCD defines the times to print hello world string. This PCD is a sample to explain UINT32 PCD usage."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHelloWorldPrintString_PROMPT  #language en-US "HelloWorld print string"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHelloWorldPrintString_HELP  #language en-US "This PCD defines the HelloWorld print string. This PCD is a sample to explain String typed PCD usage."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxSizePopulateCapsule_PROMPT  #language en-US "Max size of populated capsule"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxSizePopulateCapsule_HELP  #language en-US "Indicates the maximum size of the capsule image with a reset flag that the platform can support. The default max size is 100MB (0x6400000) for more than one large capsule images."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxSizeNonPopulateCapsule_PROMPT  #language en-US "Max size of non-populated capsule"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxSizeNonPopulateCapsule_HELP  #language en-US "Indicates the maximum size of the capsule image without a reset flag that the platform can support. The default max size is 10MB (0xa00000) for the capsule image without reset flag setting."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwareVendor_PROMPT  #language en-US "Firmware vendor"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwareVendor_HELP  #language en-US "Null-terminated Unicode string of the firmware vendor name that is the default name filled into the EFI System Table."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwareRevision_PROMPT  #language en-US "Firmware revision"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwareRevision_HELP  #language en-US "Firmware revision that is the default revision filled into the EFI System Table."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwareVersionString_PROMPT  #language en-US "Firmware version string"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwareVersionString_HELP  #language en-US "Null-terminated Unicode string that describes the firmware version."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwareReleaseDateString_PROMPT  #language en-US "Firmware release data string"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwareReleaseDateString_HELP  #language en-US "Null-terminated Unicode string that contains the date the firmware was released"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeMemorySize_PROMPT  #language en-US "StatusCode memory size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeMemorySize_HELP  #language en-US "PcdStatusCodeMemorySize is used when PcdStatusCodeUseMemory is set to true. (PcdStatusCodeMemorySize * KBytes) is the total taken memory size.<BR><BR>\n"
                                                                                         "The default value in PeiPhase is 1 KBytes.<BR>\n"
                                                                                         "The default value in DxePhase is 128 KBytes.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdResetOnMemoryTypeInformationChange_PROMPT  #language en-US "Reset on memory type information change"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdResetOnMemoryTypeInformationChange_HELP  #language en-US "Indicates if to reset system when memory type information changes.<BR><BR>\n"
                                                                                                       "TRUE  - Resets system when memory type information changes.<BR>\n"
                                                                                                       "FALSE - Does not reset system when memory type information changes.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserSubtitleTextColor_PROMPT  #language en-US "Foreground color for browser subtitle"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserSubtitleTextColor_HELP  #language en-US "Specify the foreground color for Subtitle text in HII Form Browser. The default value is EFI_BLUE. Only following values defined in UEFI specification are valid:<BR><BR>\n"
                                                                                             "0x00 (EFI_BLACK)<BR>\n"
                                                                                             "0x01 (EFI_BLUE)<BR>\n"
                                                                                             "0x02 (EFI_GREEN)<BR>\n"
                                                                                             "0x03 (EFI_CYAN)<BR>\n"
                                                                                             "0x04 (EFI_RED)<BR>\n"
                                                                                             "0x05 (EFI_MAGENTA)<BR>\n"
                                                                                             "0x06 (EFI_BROWN)<BR>\n"
                                                                                             "0x07 (EFI_LIGHTGRAY)<BR>\n"
                                                                                             "0x08 (EFI_DARKGRAY)<BR>\n"
                                                                                             "0x09 (EFI_LIGHTBLUE)<BR>\n"
                                                                                             "0x0A (EFI_LIGHTGREEN)<BR>\n"
                                                                                             "0x0B (EFI_LIGHTCYAN)<BR>\n"
                                                                                             "0x0C (EFI_LIGHTRED)<BR>\n"
                                                                                             "0x0D (EFI_LIGHTMAGENTA)<BR>\n"
                                                                                             "0x0E (EFI_YELLOW)<BR>\n"
                                                                                             "0x0F (EFI_WHITE)<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_ERR_80000004 #language en-US "Invalid foreground color specified."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserFieldTextColor_PROMPT  #language en-US "Foreground color for browser field"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserFieldTextColor_HELP  #language en-US "Specify the foreground color for prompt and Question value text in HII Form Browser. The default value is EFI_BLACK. Only following values defined in UEFI specification are valid:<BR><BR>\n"
                                                                                          "0x00 (EFI_BLACK)<BR>\n"
                                                                                          "0x01 (EFI_BLUE)<BR>\n"
                                                                                          "0x02 (EFI_GREEN)<BR>\n"
                                                                                          "0x03 (EFI_CYAN)<BR>\n"
                                                                                          "0x04 (EFI_RED)<BR>\n"
                                                                                          "0x05 (EFI_MAGENTA)<BR>\n"
                                                                                          "0x06 (EFI_BROWN)<BR>\n"
                                                                                          "0x07 (EFI_LIGHTGRAY)<BR>\n"
                                                                                          "0x08 (EFI_DARKGRAY)<BR>\n"
                                                                                          "0x09 (EFI_LIGHTBLUE)<BR>\n"
                                                                                          "0x0A (EFI_LIGHTGREEN)<BR>\n"
                                                                                          "0x0B (EFI_LIGHTCYAN)<BR>\n"
                                                                                          "0x0C (EFI_LIGHTRED)<BR>\n"
                                                                                          "0x0D (EFI_LIGHTMAGENTA)<BR>\n"
                                                                                          "0x0E (EFI_YELLOW)<BR>\n"
                                                                                          "0x0F (EFI_WHITE)<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserFieldTextHighlightColor_PROMPT  #language en-US "Foreground color for highlighted browser field"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserFieldTextHighlightColor_HELP  #language en-US "Specify the foreground color for highlighted prompt and Question value text in HII Form Browser. The default value is EFI_LIGHTGRAY. Only following values defined in UEFI specification are valid:<BR><BR>\n"
                                                                                                   "0x00 (EFI_BLACK)<BR>\n"
                                                                                                   "0x01 (EFI_BLUE)<BR>\n"
                                                                                                   "0x02 (EFI_GREEN)<BR>\n"
                                                                                                   "0x03 (EFI_CYAN)<BR>\n"
                                                                                                   "0x04 (EFI_RED)<BR>\n"
                                                                                                   "0x05 (EFI_MAGENTA)<BR>\n"
                                                                                                   "0x06 (EFI_BROWN)<BR>\n"
                                                                                                   "0x07 (EFI_LIGHTGRAY)<BR>\n"
                                                                                                   "0x08 (EFI_DARKGRAY)<BR>\n"
                                                                                                   "0x09 (EFI_LIGHTBLUE)<BR>\n"
                                                                                                   "0x0A (EFI_LIGHTGREEN)<BR>\n"
                                                                                                   "0x0B (EFI_LIGHTCYAN)<BR>\n"
                                                                                                   "0x0C (EFI_LIGHTRED)<BR>\n"
                                                                                                   "0x0D (EFI_LIGHTMAGENTA)<BR>\n"
                                                                                                   "0x0E (EFI_YELLOW)<BR>\n"
                                                                                                   "0x0F (EFI_WHITE)<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserFieldBackgroundHighlightColor_PROMPT  #language en-US "Background color for highlighted browser field"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserFieldBackgroundHighlightColor_HELP  #language en-US "Specify the background color for highlighted prompt and Question value text in HII Form Browser. The default value is EFI_BACKGROUND_BLACK. Only following values defined in UEFI specification are valid:<BR><BR>\n"
                                                                                                         "0x00 (EFI_BACKGROUND_BLACK)<BR>\n"
                                                                                                         "0x10 (EFI_BACKGROUND_BLUE)<BR>\n"
                                                                                                         "0x20 (EFI_BACKGROUND_GREEN)<BR>\n"
                                                                                                         "0x30 (EFI_BACKGROUND_CYAN)<BR>\n"
                                                                                                         "0x40 (EFI_BACKGROUND_RED)<BR>\n"
                                                                                                         "0x50 (EFI_BACKGROUND_MAGENTA)<BR>\n"
                                                                                                         "0x60 (EFI_BACKGROUND_BROWN)<BR>\n"
                                                                                                         "0x70 (EFI_BACKGROUND_LIGHTGRAY)<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_ERR_80000005 #language en-US "Invalid background color specified."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSataSpinUpDelayInSecForRecoveryPath_PROMPT  #language en-US "SATA spin-up delay time in second for recovery path"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSataSpinUpDelayInSecForRecoveryPath_HELP  #language en-US "Time in second to delay for SATA devices to spin-up for recovery."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdS3BootScriptRuntimeTableReservePageNumber_PROMPT  #language en-US "Reserved page number for S3 Boot Script Runtime Table"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdS3BootScriptRuntimeTableReservePageNumber_HELP  #language en-US "This PCD is used to specify memory size with page number for a pre-allocated ACPI reserved memory to hold runtime(after SmmReadyToLock) created S3 boot script entries. The default page number is 2. When changing the value of this PCD, the platform developer should make sure the memory size is large enough to hold the S3 boot script node created in runtime(after SmmReadyToLock) phase."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsulePeiLongModeStackSize_PROMPT  #language en-US "Stack size for CapsulePei transfer to long mode"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsulePeiLongModeStackSize_HELP  #language en-US "The PCD is used to specify the stack size when capsule IA32 PEI transfers to long mode in PEI phase. The default size is 32K. When changing the value of this PCD, the platform developer should make sure the memory size is large enough to meet capsule PEI requirement in capsule update path."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUse1GPageTable_PROMPT  #language en-US "Enable 1G page table support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUse1GPageTable_HELP  #language en-US "Indicates if 1G page table will be enabled.<BR><BR>\n"
                                                                                   "TRUE  - 1G page table will be enabled.<BR>\n"
                                                                                   "FALSE - 1G page table will not be enabled.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSrIovSupport_PROMPT  #language en-US "Enable SRIOV support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSrIovSupport_HELP  #language en-US "Indicates if the Single Root I/O virtualization is supported.<BR><BR>\n"
                                                                                 "TRUE  - Single Root I/O virtualization is supported.<BR>\n"
                                                                                 "FALSE - Single Root I/O virtualization is not supported.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAriSupport_PROMPT  #language en-US "Enable ARI support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAriSupport_HELP  #language en-US "Indicates if the Alternative Routing-ID is supported.<BR><BR>\n"
                                                                               "TRUE  - Alternative Routing-ID is supported.<BR>\n"
                                                                               "FALSE - Alternative Routing-ID is not supported.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMrIovSupport_PROMPT  #language en-US "Enable MRIOV support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMrIovSupport_HELP  #language en-US "Indicates if the Multi Root I/O virtualization is supported.<BR><BR>\n"
                                                                                 "TRUE  - Multi Root I/O virtualization is supported.<BR>\n"
                                                                                 "FALSE - Multi Root I/O virtualization is not supported.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSrIovSystemPageSize_PROMPT  #language en-US "SRIOV system page size"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSrIovSystemPageSize_HELP  #language en-US "Single root I/O virtualization virtual function memory BAR alignment.<BR><BR>\n"
                                                                                        "BITN set indicates 2 of n+12 power<BR>\n"
                                                                                        "BIT0 set indicates 4KB alignment<BR>\n"
                                                                                        "BIT1 set indicates 8KB alignment<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSmbiosVersion_PROMPT  #language en-US "SMBIOS version"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSmbiosVersion_HELP  #language en-US "SMBIOS version."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSmbiosDocRev_PROMPT  #language en-US "SMBIOS Docrev field in SMBIOS 3.0 (64-bit) Entry Point Structure"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSmbiosDocRev_HELP  #language en-US "SMBIOS Docrev field in SMBIOS 3.0 (64-bit) Entry Point Structure"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSmbiosEntryPointProvideMethod_PROMPT  #language en-US "SMBIOS produce method"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSmbiosEntryPointProvideMethod_HELP  #language en-US "The policy to produce SMBIOS entry point and table.<BR><BR>\n"
                                                                                        "BIT0 set indicates 32-bit entry point and table are produced.<BR>\n"
                                                                                        "BIT1 set indicates 64-bit entry point and table are produced.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdExtFpdtBootRecordPadSize_PROMPT  #language en-US "Pad size for extension FPDT boot records"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdExtFpdtBootRecordPadSize_HELP  #language en-US "This PCD specifies the additional pad size in FPDT Basic Boot Performance Table for the extension FPDT boot records received after ReadyToBoot and before ExitBootService."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConInConnectOnDemand_PROMPT  #language en-US "ConIn connect on demand"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConInConnectOnDemand_HELP  #language en-US "Indicates if ConIn device are connected on demand.<BR><BR>\n"
                                                                                         "TRUE  - ConIn device are not connected during BDS and ReadKeyStroke/ReadKeyStrokeEx produced by Consplitter should be called before any real key read operation.<BR>\n"
                                                                                         "FALSE - ConIn device may be connected normally during BDS.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAtaSmartEnable_PROMPT  #language en-US "Enable ATA S.M.A.R.T feature"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAtaSmartEnable_HELP  #language en-US "Indicates if the S.M.A.R.T feature of attached ATA hard disks will be enabled.<BR><BR>\n"
                                                                                   "TRUE  - S.M.A.R.T feature of attached ATA hard disks will be enabled.<BR>\n"
                                                                                   "FALSE - S.M.A.R.T feature of attached ATA hard disks will be default status.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciDisableBusEnumeration_PROMPT  #language en-US "Disable full PCI enumeration"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciDisableBusEnumeration_HELP  #language en-US "Indicates if full PCI enumeration is disabled.<BR><BR>\n"
                                                                                             "TRUE  - Full PCI enumeration is disabled.<BR>\n"
                                                                                             "FALSE - Full PCI enumeration is not disabled.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDiskIoDataBufferBlockNum_PROMPT  #language en-US "Disk I/O - Number of Data Buffer block"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDiskIoDataBufferBlockNum_HELP  #language en-US "Disk I/O - Number of Data Buffer block. Define the size in block of the pre-allocated buffer. It provide better performance for large Disk I/O requests."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUfsPciHostControllerMmioBase_PROMPT  #language en-US "Mmio base address of pci-based UFS host controller"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUfsPciHostControllerMmioBase_HELP  #language en-US "This PCD specifies the pci-based UFS host controller mmio base address. Define the mmio base address of the pci-based UFS host controller. If there are multiple UFS host controllers, their mmio base addresses are calculated one by one from this base address."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConOutRow_PROMPT  #language en-US "Console output row"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConOutRow_HELP  #language en-US "This PCD defines the Console output row. The default value is 25 according to UEFI spec. This PCD could be set to 0 then console output would be at max column and max row."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConOutColumn_PROMPT  #language en-US "Console output column"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConOutColumn_HELP  #language en-US "This PCD defines the Console output column. The default value is 80 according to UEFI spec. This PCD could be set to 0 then console output would be at max column and max row."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVideoHorizontalResolution_PROMPT  #language en-US "Video horizontal resolution"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVideoHorizontalResolution_HELP  #language en-US "This PCD defines the video horizontal resolution. If this PCD is set to 0 then video resolution would be at highest resolution."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVideoVerticalResolution_PROMPT  #language en-US "Video vertical resolution"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVideoVerticalResolution_HELP  #language en-US "This PCD defines the video vertical resolution. If this PCD is set to 0 then video resolution would be at highest resolution."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadFixAddressPeiCodePageNumber_PROMPT  #language en-US "LMFA PEI code page number"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadFixAddressPeiCodePageNumber_HELP  #language en-US "Specify memory size with page number for PEI code when Loading Module at Fixed Address feature is enabled. The value will be set by the build tool."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadFixAddressBootTimeCodePageNumber_PROMPT  #language en-US "LMFA DXE boot code page number"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadFixAddressBootTimeCodePageNumber_HELP  #language en-US "Specify memory size with page number for DXE boot time code when Loading Module at Fixed Address feature is enabled. The value will be set by the build tool."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadFixAddressRuntimeCodePageNumber_PROMPT  #language en-US "LMFA DXE runtime code page number"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadFixAddressRuntimeCodePageNumber_HELP  #language en-US "Specify memory size with page number for DXE runtime code when Loading Module at Fixed Address feature is enabled. The value will be set by the build tool."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadFixAddressSmmCodePageNumber_PROMPT  #language en-US "LMFA SMM code page number"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdLoadFixAddressSmmCodePageNumber_HELP  #language en-US "Specify memory size with page number for SMM code when Loading Module at Fixed Address feature is enabled. The value will be set by the build tool."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSupportUpdateCapsuleReset_PROMPT  #language en-US "Enable update capsule across a system reset"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSupportUpdateCapsuleReset_HELP  #language en-US "Indicates if the platform can support update capsule across a system reset.<BR><BR>\n"
                                                                                              "TRUE  - Supports update capsule across a system reset.<BR>\n"
                                                                                              "FALSE - Does not support update capsule across a system reset.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiFullPcdDatabaseEnable_PROMPT  #language en-US "Enable full PEI PCD services"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiFullPcdDatabaseEnable_HELP  #language en-US "Indicates if all PCD PPI services will be enabled.<BR><BR>\n"
                                                                                             "TRUE  - All PCD PPI services will be produced.<BR>\n"
                                                                                             "FALSE - Minimal PCD PPI services (only GetService) will be produced.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDevicePathSupportDevicePathToText_PROMPT  #language en-US "Enable Device Path to Text support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDevicePathSupportDevicePathToText_HELP  #language en-US "Indicates if the Device Path To Text Protocol should be produced by the platform. It can be disabled to save size.<BR><BR>\n"
                                                                                                      "TRUE  - Device Path To Text Protocol will be produced.<BR>\n"
                                                                                                      "FALSE - Device Path To Text Protocol will not be produced.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDevicePathSupportDevicePathFromText_PROMPT  #language en-US "Enable Device Path From Text support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDevicePathSupportDevicePathFromText_HELP  #language en-US "Indicates if the Device Path From Text Protocol should be produced by the platform. It can be disabled to save size.<BR><BR>\n"
                                                                                                        "TRUE  - Device Path From Text Protocol will be produced.<BR>\n"
                                                                                                        "FALSE - Device Path From Text Protocol will not be produced.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVariableCollectStatistics_PROMPT  #language en-US "Enable variable statistics collection"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdVariableCollectStatistics_HELP  #language en-US "Indicates if the statistics about variable usage will be collected. This information is stored as a vendor configuration table into the EFI system table. Set this PCD to TRUE to use VariableInfo application in MdeModulePkg\Application directory to get variable usage info. VariableInfo application will not output information if not set to TRUE.<BR><BR>\n"
                                                                                              "TRUE  - Statistics about variable usage will be collected.<BR>\n"
                                                                                              "FALSE - Statistics about variable usage will not be collected.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUnicodeCollationSupport_PROMPT  #language en-US "Enable Unicode Collation support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUnicodeCollationSupport_HELP  #language en-US "Indicates if Unicode Collation Protocol will be installed.<BR><BR>\n"
                                                                                            "TRUE  - Installs Unicode Collation Protocol.<BR>\n"
                                                                                            "FALSE - Does not install Unicode Collation Protocol.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUnicodeCollation2Support_PROMPT  #language en-US "Enable Unicode Collation 2 support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUnicodeCollation2Support_HELP  #language en-US "Indicates if Unicode Collation 2 Protocol will be installed.<BR><BR>\n"
                                                                                             "TRUE  - Installs Unicode Collation 2 Protocol.<BR>\n"
                                                                                             "FALSE - Does not install Unicode Collation 2 Protocol.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConOutGopSupport_PROMPT  #language en-US "Enable ConOut GOP support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConOutGopSupport_HELP  #language en-US "Indicates if Graphics Output Protocol will be installed on virtual handle created by ConsplitterDxe. It could be set FALSE to save size.<BR><BR>\n"
                                                                                     "TRUE  - Installs Graphics Output Protocol on virtual handle created by ConsplitterDxe.<BR>\n"
                                                                                     "FALSE - Does not install Graphics Output Protocol on virtual handle created by ConsplitterDxe.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConOutUgaSupport_PROMPT  #language en-US "Enable ConOut UGA support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdConOutUgaSupport_HELP  #language en-US "Indicates if UGA Draw Protocol will be installed on virtual handle created by ConsplitterDxe. It could be set FALSE to save size.<BR><BR>\n"
                                                                                     "TRUE  - Installs UGA Draw Protocol on virtual handle created by ConsplitterDxe.<BR>\n"
                                                                                     "FALSE - Does not install UGA Draw Protocol on virtual handle created by ConsplitterDxe.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreImageLoaderSearchTeSectionFirst_PROMPT  #language en-US "PeiCore search TE section first"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPeiCoreImageLoaderSearchTeSectionFirst_HELP  #language en-US "Indicates PeiCore will first search TE section from the PEIM to load the image, or PE32 section, when PeiCore dispatches a PEI module. This PCD is used to tune PEI phase performance to reduce the search image time. It can be set according to the generated image section type.<BR><BR>\n"
                                                                                                           "TRUE  - PeiCore will first search TE section from PEIM to load the image, if TE section is not found, then PeiCore will search PE section.<BR>\n"
                                                                                                           "FALSE - PeiCore will first search PE section from PEIM to load the image.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdTurnOffUsbLegacySupport_PROMPT  #language en-US "Turn off USB legacy support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdTurnOffUsbLegacySupport_HELP  #language en-US "Disable legacy USB? If disabled, legacy USB device driver cannot make use of SMI interrupt to access USB device in the case of absence of a USB stack. TRUE  - disable<BR>\n"
                                                                                            "FALSE - enable<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSupportHiiImageProtocol_PROMPT  #language en-US "Enable HII image support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSupportHiiImageProtocol_HELP  #language en-US "Indicates if HiiImageProtocol will be installed. FALSE is for size reduction.<BR><BR>\n"
                                                                                            "TRUE  - Installs HiiImageProtocol.<BR>\n"
                                                                                            "FALSE - Does not install HiiImageProtocol.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDisableDefaultKeyboardLayoutInUsbKbDriver_PROMPT  #language en-US "Disable default keyboard layout in USB Keyboard Driver"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDisableDefaultKeyboardLayoutInUsbKbDriver_HELP  #language en-US "Disable default USB keyboard layout? The default keyboard layout serves as the backup when no keyboard layout can be retrieved from HII database.<BR><BR>\n"
                                                                                                              "TRUE  - disable<BR>\n"
                                                                                                              "FALSE - enable<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFrameworkCompatibilitySupport_PROMPT  #language en-US "Enable framework backward compatibility support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFrameworkCompatibilitySupport_HELP  #language en-US "Indicates if backward compatibility to Framework HII and Framework FvHob is supported.<BR><BR>\n"
                                                                                                  "TRUE  - Setup Browser supports GUID opcodes generated from Framework HII VFR file by VFR compiler. the PeiCore will handle the framework FvHob and install FvInfo PPI for it.<BR>\n"
                                                                                                  "FALSE - Setup Browser doesn't support GUID opcodes generated from Framework HII VFR file by VFR compiler. the PeiCore will not handle the framework FvHob and install FvInfo PPI for it.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHelloWorldPrintEnable_PROMPT  #language en-US "Enable HelloWorld print"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHelloWorldPrintEnable_HELP  #language en-US "Indicates if HelloWorld Application will print the verbose information. This PCD is a sample to explain FeatureFlag PCD usage.<BR><BR>\n"
                                                                                          "TRUE  - HelloWorld Application will print the verbose information.<BR>\n"
                                                                                          "FALSE - HelloWorld Application will not print the verbose information.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFullFtwServiceEnable_PROMPT  #language en-US "Enable FULL FTW services"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFullFtwServiceEnable_HELP  #language en-US "Indicates if FULL FTW protocol services (total six APIs) will be produced.<BR><BR>\n"
                                                                                         "TRUE  - Produces FULL FTW protocol services (total six APIs).<BR>\n"
                                                                                         "FALSE - Only FTW Write service is available.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDxeIplSupportUefiDecompress_PROMPT  #language en-US "Enable UEFI decompression support in DXE IPL"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDxeIplSupportUefiDecompress_HELP  #language en-US "Indicates if DXE IPL supports the UEFI decompression algorithm.<BR><BR>\n"
                                                                                                "TRUE  - DXE IPL will support UEFI decompression.<BR>\n"
                                                                                                "FALSE - DXE IPL will not support UEFI decompression to save space.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciBusHotplugDeviceSupport_PROMPT  #language en-US "Enable PciBus hot plug device support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciBusHotplugDeviceSupport_HELP  #language en-US "Indicates if PciBus driver supports the hot plug device.<BR><BR>\n"
                                                                                               "TRUE  - PciBus driver supports the hot plug device.<BR>\n"
                                                                                               "FALSE - PciBus driver doesn't support the hot plug device.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciBridgeIoAlignmentProbe_PROMPT  #language en-US "Enable PCI bridge IO alignment prob."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciBridgeIoAlignmentProbe_HELP  #language en-US "Indicates if the PciBus driver probes non-standard, such as 2K/1K/512, granularity for PCI to PCI bridge I/O window.<BR><BR>\n"
                                                                                              "TRUE  - PciBus driver probes non-standard granularity for PCI to PCI bridge I/O window.<BR>\n"
                                                                                              "FALSE - PciBus driver doesn't probe non-standard granularity for PCI to PCI bridge I/O window.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeUseSerial_PROMPT  #language en-US "Enable StatusCode via Serial port"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeUseSerial_HELP  #language en-US "Indicates if StatusCode is reported via Serial port.<BR><BR>\n"
                                                                                        "TRUE  - Reports StatusCode via Serial port.<BR>\n"
                                                                                        "FALSE - Does not report StatusCode via Serial port.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeUseMemory_PROMPT  #language en-US "Enable StatusCode via memory"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeUseMemory_HELP  #language en-US "Indicates if StatusCode is stored in memory. The memory is boot time memory in PEI Phase and is runtime memory in DXE Phase.<BR><BR>\n"
                                                                                        "TRUE  - Stores StatusCode in memory.<BR>\n"
                                                                                        "FALSE - Does not store StatusCode in memory.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeReplayIn_PROMPT  #language en-US "Enable PEI StatusCode replay in DXE phase"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeReplayIn_HELP  #language en-US "Indicates if PEI phase StatusCode will be replayed in DXE phase.<BR><BR>\n"
                                                                                       "TRUE  - Replays PEI phase StatusCode in DXE phased.<BR>\n"
                                                                                       "FALSE - Does not replay PEI phase StatusCode in DXE phase.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdInstallAcpiSdtProtocol_PROMPT  #language en-US "Enable ACPI SDT support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdInstallAcpiSdtProtocol_HELP  #language en-US "Indicates if ACPI SDT protocol will be installed.<BR><BR>\n"
                                                                                           "TRUE  - Installs ACPI SDT protocol.<BR>\n"
                                                                                           "FALSE - Does not install ACPI SDT protocol.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUnalignedPciIoEnable_PROMPT  #language en-US "Enable unaligned PCI I/O support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdUnalignedPciIoEnable_HELP  #language en-US "Indicates if the unaligned I/O, MMIO, and PCI Configuration cycles through the PCI I/O Protocol are enabled. The default value for this PCD is false to disable support for unaligned PCI I/O Protocol requests.<BR><BR>\n"
                                                                                         "TRUE  - Enables the unaligned I/O, MMIO, and PCI Configuration cycles through the PCI I/O Protocol.<BR>\n"
                                                                                         "FALSE - Disables the unaligned I/O, MMIO, and PCI Configuration cycles through the PCI I/O Protocol.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserGrayOutTextStatement_PROMPT  #language en-US "Always GrayOut TEXT statement"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowserGrayOutTextStatement_HELP  #language en-US "Indicates if TEXT statement is always set to GrayOut statement in HII Form Browser.<BR><BR>\n"
                                                                                                "TRUE  - TEXT statement will always be set to GrayOut.<BR>\n"
                                                                                                "FALSE - TEXT statement will be set to GrayOut only when GrayOut condition is TRUE.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowerGrayOutReadOnlyMenu_PROMPT  #language en-US "GrayOut read only menu"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBrowerGrayOutReadOnlyMenu_HELP  #language en-US "Indicates if unselectable menu should be gray out in HII Form Browser.<BR><BR>\n"
                                                                                              "TRUE  - The unselectable menu will be set to GrayOut.<BR>\n"
                                                                                              "FALSE - The menu will be show as normal menu entry even if it is not selectable.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryOnIdeDisk_PROMPT  #language en-US "Enable recovery on IDE disk"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryOnIdeDisk_HELP  #language en-US "Indicates if recovery from IDE disk will be supported.<BR><BR>\n"
                                                                                      "TRUE  - Supports recovery from IDE disk.<BR>\n"
                                                                                      "FALSE - Does not support recovery from IDE disk.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryOnFatFloppyDisk_PROMPT  #language en-US "Enable recovery on FAT floppy disk"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryOnFatFloppyDisk_HELP  #language en-US "Indicates if recovery from FAT floppy disk will be supported.<BR><BR>\n"
                                                                                            "TRUE  - Supports recovery from FAT floppy disk.<BR>\n"
                                                                                            "FALSE - Does not support recovery from FAT floppy disk.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryOnDataCD_PROMPT  #language en-US "Enable recovery on data CD"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryOnDataCD_HELP  #language en-US "Indicates if recovery from data CD will be supported.<BR><BR>\n"
                                                                                     "TRUE  - Supports recovery from data CD.<BR>\n"
                                                                                     "FALSE - Does not support recovery from data CD.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryOnFatUsbDisk_PROMPT  #language en-US "Enable recovery on FAT USB disk"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryOnFatUsbDisk_HELP  #language en-US "Indicates if recovery from FAT USB disk will be supported.<BR><BR>\n"
                                                                                         "TRUE  - Supports recovery from USB disk.<BR>\n"
                                                                                         "FALSE - Does not support recovery from USB disk.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwarePerformanceDataTableS3Support_PROMPT  #language en-US "Enable S3 performance data support"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFirmwarePerformanceDataTableS3Support_HELP  #language en-US "Indicates if S3 performance data will be supported in ACPI FPDT table.<BR><BR>\n"
                                                                                                          "TRUE  - S3 performance data will be supported in ACPI FPDT table.<BR>\n"
                                                                                                          "FALSE - S3 performance data will not be supported in ACPI FPDT table.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDxeIplSwitchToLongMode_PROMPT  #language en-US "DxeIpl switch to long mode"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDxeIplSwitchToLongMode_HELP  #language en-US "Indicates if DxeIpl should switch to long mode to enter DXE phase. It is assumed that 64-bit DxeCore is built in firmware if it is true; otherwise 32-bit DxeCore is built in firmware.<BR><BR>\n"
                                                                                           "TRUE  - DxeIpl will load a 64-bit DxeCore and switch to long mode to hand over to DxeCore.<BR>\n"
                                                                                           "FALSE - DxeIpl will load a 32-bit DxeCore and perform stack switch to hand over to DxeCore.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDxeIplBuildPageTables_PROMPT  #language en-US "DxeIpl rebuild page tables"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDxeIplBuildPageTables_HELP  #language en-US "Indicates if DxeIpl should rebuild page tables. This flag only makes sense in the case where the DxeIpl and the DxeCore are both X64.<BR><BR>\n"
                                                                                          "TRUE  - DxeIpl will rebuild page tables.<BR>\n"
                                                                                          "FALSE - DxeIpl will not rebuild page tables.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdS3BootScriptTablePrivateDataPtr_PROMPT  #language en-US "S3 Boot Script Table Private Data pointer"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdS3BootScriptTablePrivateDataPtr_HELP  #language en-US "This dynamic PCD hold an address to point to private data structure used in DxeS3BootScriptLib library instance which records the S3 boot script table start address, length, etc. To introduce this PCD is only for DxeS3BootScriptLib instance implementation purpose. The platform developer should make sure the default value is set to Zero. And the PCD is assumed ONLY to be accessed in DxeS3BootScriptLib Library."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdS3BootScriptTablePrivateSmmDataPtr_PROMPT  #language en-US "S3 Boot Script Table Private Smm Data pointer"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdS3BootScriptTablePrivateSmmDataPtr_HELP  #language en-US "This dynamic PCD hold an address to point to private data structure SMM copy used in DxeS3BootScriptLib library instance which records the S3 boot script table start address, length, etc. To introduce this PCD is only for DxeS3BootScriptLib instance implementation purpose. The platform developer should make sure the default value is set to Zero. And the PCD is assumed ONLY to be accessed in DxeS3BootScriptLib Library."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxFmpEsrtCacheNum_PROMPT  #language en-US "Max FMP ESRT entry number to be synced & cached in repository"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxFmpEsrtCacheNum_HELP  #language en-US "Max FMP ESRT entry number to be synced & cached in repository"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxNonFmpEsrtCacheNum_PROMPT  #language en-US " Max Non-FMP ESRT entry number to be cached in repository"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxNonFmpEsrtCacheNum_HELP  #language en-US " Max Non-FMP ESRT entry number to be cached in repository"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSystemRebootAfterCapsuleProcessFlag_PROMPT  #language en-US "Flag to request system reboot after processing capsule"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSystemRebootAfterCapsuleProcessFlag_HELP  #language en-US "Flag to request system reboot after processing capsule"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBootManagerMenuFile_PROMPT  #language en-US "Boot Manager Menu File"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdBootManagerMenuFile_HELP  #language en-US "This PCD points to the file name GUID of the BootManagerMenuApp\n"
                                                                                        "Platform can customize the PCD to point to different application for Boot Manager Menu"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDriverHealthConfigureForm_PROMPT  #language en-US "Driver Health Management Form"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDriverHealthConfigureForm_HELP  #language en-US "This PCD points to the formset GUID of the driver health management form\n"
                                                                                              "The form will be popped up by BDS core when there are Configuration Required driver health intances.\n"
                                                                                              "Platform can customize the PCD to point to different formset."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetupVideoHorizontalResolution_PROMPT  #language en-US "Video Horizontal Resolution of Text Setup"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetupVideoHorizontalResolution_HELP  #language en-US "Specify the video horizontal resolution of text setup."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetupVideoVerticalResolution_PROMPT  #language en-US "Video Vertical Resolution of Text Setup"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetupVideoVerticalResolution_HELP  #language en-US "Specify the video vertical resolution of text setup."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetupConOutColumn_PROMPT  #language en-US "Console Output Column of Text Setup"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetupConOutColumn_HELP  #language en-US "Specify the console output column of text setup."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetupConOutRow_PROMPT  #language en-US "Console Output Row of Text Setup"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetupConOutRow_HELP  #language en-US "Specify the console output row of text setup."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFrontPageFormSetGuid_PROMPT  #language en-US "Front Page Formset."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFrontPageFormSetGuid_HELP  #language en-US "This PCD points to the front page formset GUID\n"
                                                                                         "Compare the FormsetGuid or ClassGuid with this PCD value can detect whether in front page"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPropertiesTableEnable_PROMPT  #language en-US "Publish UEFI PropertiesTable."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPropertiesTableEnable_HELP  #language en-US "Publish PropertiesTable or not.\n"
                                                                                          "\n"
                                                                                          "If this PCD is TRUE, DxeCore publishs PropertiesTable.\n"
                                                                                          "DxeCore evaluates if all runtime drivers has 4K aligned PE sections. If all\n"
                                                                                          "PE sections in runtime drivers are 4K aligned, DxeCore sets BIT0 in\n"
                                                                                          "PropertiesTable. Or DxeCore clears BIT0 in PropertiesTable.\n"
                                                                                          "If this PCD is FALSE, DxeCore does not publish PropertiesTable.\n"
                                                                                          "\n"
                                                                                          "If PropertiesTable has BIT0 set, DxeCore uses below policy in UEFI memory map:\n"
                                                                                          "1) Use EfiRuntimeServicesCode for runtime driver PE image code section and\n"
                                                                                          "use EfiRuntimeServicesData for runtime driver PE image header and other section.\n"
                                                                                          "2) Set EfiRuntimeServicesCode to be EFI_MEMORY_RO.\n"
                                                                                          "3) Set EfiRuntimeServicesData to be EFI_MEMORY_XP.\n"
                                                                                          "4) Set EfiMemoryMappedIO and EfiMemoryMappedIOPortSpace to be EFI_MEMORY_XP.\n"
                                                                                          "\n"
                                                                                          "NOTE: Platform need gurantee this PCD is set correctly. Platform should set\n"
                                                                                          "this PCD to be TURE if and only if all runtime driver has seperated Code/Data\n"
                                                                                          "section. If PE code/data sections are merged, the result is unpredictable.\n"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdIdentifyMappingPageTablePtr_PROMPT  #language en-US "Identify Mapping Page Table pointer."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdIdentifyMappingPageTablePtr_HELP  #language en-US "This dynamic PCD hold an address to point to the memory of page table. The page table establishes a 1:1\n"
                                                                                                "Virtual to Physical mapping according to the processor physical address bits."
#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdShadowPeimOnBoot_HELP  #language en-US "Indicates if to shadow PEIM and PeiCore after memory is ready.<BR><BR>\n"
                                                                                     "This PCD is used on other boot path except for S3 boot.\n"
                                                                                     "TRUE  - Shadow PEIM and PeiCore after memory is ready.<BR>\n"
                                                                                     "FALSE - Not shadow PEIM after memory is ready.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdShadowPeimOnBoot_PROMPT  #language en-US "Shadow Peim on boot"
#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialUseHalfHandshake_PROMPT  #language en-US "Enable Serial device Half Hand Shake"
#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSerialUseHalfHandshake_HELP  #language en-US "Indicates if Serial device uses half hand shake.<BR><BR>\n"
                                                                                           "TRUE  - Serial device uses half hand shake.<BR>\n"
                                                                                           "FALSE - Serial device doesn't use half hand shake.<BR>"
#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciSerialParameters_PROMPT  #language en-US "Pci Serial Parameters"
#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciSerialParameters_HELP  #language en-US "PCI Serial Parameters. It is an array of VendorID, DeviceID, ClockRate, Offset,\n"
                                                                                        "BarIndex, RegisterStride, ReceiveFifoDepth, TransmitFifoDepth information that \n"
                                                                                        "describes the parameters of special PCI serial devices.\n"
                                                                                        "Each array entry is 24-byte in length. The array is terminated\n"
                                                                                        "by an array entry with a PCI Vendor ID of 0xFFFF. If a platform only contains a\n"
                                                                                        "standard 16550 PCI serial device whose class code is 7/0/2, the value is 0xFFFF.\n"
                                                                                        "The C style structure is defined as below:<BR>\n"
                                                                                        "typedef struct {<BR>\n"
                                                                                        "  UINT16  VendorId;          ///< Vendor ID to match the PCI device.  The value 0xFFFF terminates the list of entries.<BR>\n"
                                                                                        "  UINT16  DeviceId;          ///< Device ID to match the PCI device<BR>\n"
                                                                                        "  UINT32  ClockRate;         ///< UART clock rate.  Set to 0 for default clock rate of 1843200 Hz<BR>\n"
                                                                                        "  UINT64  Offset;            ///< The byte offset into to the BAR<BR>\n"
                                                                                        "  UINT8   BarIndex;          ///< Which BAR to get the UART base address<BR>\n"
                                                                                        "  UINT8   RegisterStride;    ///< UART register stride in bytes.  Set to 0 for default register stride of 1 byte.<BR>\n"
                                                                                        "  UINT16  ReceiveFifoDepth;  ///< UART receive FIFO depth in bytes. Set to 0 for a default FIFO depth of 16 bytes.<BR>\n"
                                                                                        "  UINT16  TransmitFifoDepth; ///< UART transmit FIFO depth in bytes. Set to 0 for a default FIFO depth of 16 bytes.<BR>\n"
                                                                                        "  UINT8   Reserved[2];<BR>\n"
                                                                                        "} PCI_SERIAL_PARAMETER;<BR>\n"
                                                                                        "It contains zero or more instances of the above structure.<BR>\n"
                                                                                        "For example, if a PCI device contains two UARTs, PcdPciSerialParameters needs\n"
                                                                                        "to contain  two instances of the above structure, with the VendorId and DeviceId\n"
                                                                                        "equals to the Device ID and Vendor ID of the device; If the PCI device uses the\n"
                                                                                        "first two BARs to support two UARTs, BarIndex of first instance equals to 0 and\n"
                                                                                        "BarIndex of second one equals to 1; If the PCI device uses the first BAR to\n"
                                                                                        "support both UARTs, BarIndex of both instance equals to 0, Offset of first\n"
                                                                                        "instance equals to 0 and Offset of second one equals to a value bigger than or\n"
                                                                                        "equal to 8.<BR>\n"
                                                                                        "For certain UART whose register needs to be accessed in DWORD aligned address,\n"
                                                                                        "RegisterStride equals to 4.\n"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiExposedTableVersions_PROMPT  #language en-US "Exposed ACPI table versions."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdAcpiExposedTableVersions_HELP  #language en-US "Indicates which ACPI versions are targeted by the ACPI tables exposed to the OS\n"
                                                                                             "These values are aligned with the definitions in MdePkg/Include/Protocol/AcpiSystemDescriptionTable.h\n"
                                                                                             "BIT 1 - EFI_ACPI_TABLE_VERSION_1_0B.<BR>\n"
                                                                                             "BIT 2 - EFI_ACPI_TABLE_VERSION_2_0.<BR>\n"
                                                                                             "BIT 3 - EFI_ACPI_TABLE_VERSION_3_0.<BR>\n"
                                                                                             "BIT 4 - EFI_ACPI_TABLE_VERSION_4_0.<BR>\n"
                                                                                             "BIT 5 - EFI_ACPI_TABLE_VERSION_5_0.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHiiOsRuntimeSupport_PROMPT  #language en-US "Enable export HII data and configuration to be used in OS runtime."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHiiOsRuntimeSupport_HELP  #language en-US "Indicates if HII data and configuration has been exported.<BR><BR>\n"
                                                                                        "Add this PCD mainly consider the use case of simulator. This PCD maybe set to FALSE for\n"
                                                                                        "simulator platform because the performance cost for this feature.\n"
                                                                                        "TRUE  - Export HII data and configuration data.<BR>\n"
                                                                                        "FALSE - Does not export HII data and configuration.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPs2KbdExtendedVerification_PROMPT  #language en-US "Turn on PS2 Keyboard Extended Verification"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPs2KbdExtendedVerification_HELP  #language en-US "Indicates if PS2 keyboard does a extended verification during start.\n"
                                                                                               "Add this PCD mainly consider the use case of simulator. This PCD maybe set to FALSE for\n"
                                                                                               "Extended verification will take some performance. It can be set to FALSE for boot performance.<BR><BR>\n"
                                                                                               "TRUE  - Turn on PS2 keyboard extended verification.<BR>\n"
                                                                                               "FALSE - Turn off PS2 keyboard extended verification.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPs2MouseExtendedVerification_PROMPT  #language en-US "Turn on PS2 Mouse Extended Verification"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPs2MouseExtendedVerification_HELP  #language en-US "Indicates if PS2 mouse does a extended verification during start.\n"
                                                                                                 "Extended verification will take some performance. It can be set to FALSE for boot performance.<BR><BR>\n"
                                                                                                 "TRUE  - Turn on PS2 mouse extended verification. <BR>\n"
                                                                                                 "FALSE - Turn off PS2 mouse extended verification. <BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFastPS2Detection_PROMPT  #language en-US "Enable fast PS2 detection"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdFastPS2Detection_HELP  #language en-US "Indicates if to use the optimized timing for best PS2 detection performance.\n"
                                                                                     "Note this PCD could be set to TRUE for best boot performance and set to FALSE for best device compatibility.<BR><BR>\n"
                                                                                     "TRUE  - Use the optimized timing for best PS2 detection performance.<BR>\n"
                                                                                     "FALSE - Use the normal timing to detect PS2.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSdMmcPciHostControllerMmioBase_PROMPT  #language en-US "Mmio base address of pci-based SD/MMC host controller"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSdMmcPciHostControllerMmioBase_HELP  #language en-US "This PCD specifies the PCI-based SD/MMC host controller mmio base address. Define the mmio base address of the pci-based SD/MMC host controller. If there are multiple SD/MMC host controllers, their mmio base addresses are calculated one by one from this base address.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxRepairCount_PROMPT  #language en-US "MAX repair count"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaxRepairCount_HELP  #language en-US "This PCD defines the MAX repair count. The default value is 0 that means infinite.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciDegradeResourceForOptionRom_PROMPT  #language en-US "Degrade 64-bit PCI MMIO BARs for legacy BIOS option ROMs"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPciDegradeResourceForOptionRom_HELP  #language en-US "Indicates whether 64-bit PCI MMIO BARs should degrade to 32-bit in the presence of an option ROM.<BR>"
                                                                                                   "On X64 platforms, Option ROMs may contain code that executes in the context of a legacy BIOS (CSM),"
                                                                                                   "which requires that all PCI MMIO BARs are located below 4 GB.<BR>"
                                                                                                   "TRUE  - All PCI MMIO BARs of a device will be located below 4 GB if it has an option ROM.<BR>"
                                                                                                   "FALSE - PCI MMIO BARs of a device may be located above 4 GB even if it has an option ROM.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeSubClassCapsule_PROMPT  #language en-US "Status Code for Capsule subclass definitions"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeSubClassCapsule_HELP  #language en-US "Status Code for Capsule subclass definitions.<BR><BR>\n"
                                                                                              "EFI_OEM_SPECIFIC_SUBCLASS_CAPSULE  = 0x00810000<BR>\n"
                                                                                              "NOTE: The default value of this PCD may collide with other OEM specific status codes.\n"
                                                                                              "Override the value of this PCD in the platform DSC file as needed."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeProcessCapsulesBegin_PROMPT  #language en-US "Status Code for Capsule Process Begin"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeProcessCapsulesBegin_HELP  #language en-US "Status Code for Capsule Process Begin.<BR><BR>\n"
                                                                                                          "EFI_CAPSULE_PROCESS_CAPSULES_BEGIN  = (EFI_OEM_SPECIFIC | 0x00000001) = 0x00008001<BR>\n"
                                                                                                          "NOTE: The default value of this PCD may collide with other OEM specific status codes.\n"
                                                                                                          "Override the value of this PCD in the platform DSC file as needed."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeProcessCapsulesEnd_PROMPT  #language en-US "Status Code for Capsule Process End"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeProcessCapsulesEnd_HELP  #language en-US "Status Code for Capsule Process End.<BR><BR>\n"
                                                                                                        "EFI_CAPSULE_PROCESS_CAPSULES_END    = (EFI_OEM_SPECIFIC | 0x00000002) = 0x00008002<BR>\n"
                                                                                                        "NOTE: The default value of this PCD may collide with other OEM specific status codes.\n"
                                                                                                        "Override the value of this PCD in the platform DSC file as needed."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeUpdatingFirmware_PROMPT  #language en-US "Status Code for Capsule Process Updating Firmware"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeUpdatingFirmware_HELP  #language en-US "Status Code for Capsule Process Updating Firmware.<BR><BR>\n"
                                                                                                      "EFI_CAPSULE_UPDATING_FIRMWARE       = (EFI_OEM_SPECIFIC | 0x00000003) = 0x00008003<BR>\n"
                                                                                                      "NOTE: The default value of this PCD may collide with other OEM specific status codes.\n"
                                                                                                      "Override the value of this PCD in the platform DSC file as needed."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeUpdateFirmwareSuccess_PROMPT  #language en-US "Status Code for Capsule Process Update Firmware Success"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeUpdateFirmwareSuccess_HELP  #language en-US "Status Code for Capsule Process Update Firmware Success.<BR><BR>\n"
                                                                                                           "EFI_CAPSULE_UPDATE_FIRMWARE_SUCCESS = (EFI_OEM_SPECIFIC | 0x00000004) = 0x00008004<BR>\n"
                                                                                                           "NOTE: The default value of this PCD may collide with other OEM specific status codes.\n"
                                                                                                           "Override the value of this PCD in the platform DSC file as needed."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeUpdateFirmwareFailed_PROMPT  #language en-US "Status Code for Capsule Process Update Firmware Failed"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeUpdateFirmwareFailed_HELP  #language en-US "Status Code for Capsule Process Update Firmware Failed.<BR><BR>\n"
                                                                                                          "EFI_CAPSULE_UPDATE_FIRMWARE_FAILED  = (EFI_OEM_SPECIFIC | 0x00000005) = 0x00008005<BR>\n"
                                                                                                          "NOTE: The default value of this PCD may collide with other OEM specific status codes.\n"
                                                                                                          "Override the value of this PCD in the platform DSC file as needed."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeResettingSystem_PROMPT  #language en-US "Status Code for Capsule Resetting System"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleStatusCodeResettingSystem_HELP  #language en-US "Status Code for Capsule Resetting System.<BR><BR>\n"
                                                                                                     "EFI_CAPSULE_RESETTING_SYSTEM        = (EFI_OEM_SPECIFIC | 0x00000006) = 0x00008006<BR>\n"
                                                                                                     "NOTE: The default value of this PCD may collide with other OEM specific status codes.\n"
                                                                                                     "Override the value of this PCD in the platform DSC file as needed."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleMax_PROMPT  #language en-US "CapsuleMax value in capsule report variable."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCapsuleMax_HELP  #language en-US "CapsuleMax value in capsule report variable."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaximumPeiResetNotifies_PROMPT  #language en-US "Maximum Number of PEI Reset Filters, Reset Notifications or Reset Handlers."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdMaximumPeiResetNotifies_HELP  #language en-US "Indicates the allowable maximum number of Reset Filters, <BR>\n"
                                                                                            "Reset Notifications or Reset Handlers in PEI phase."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryFileName_PROMPT  #language en-US "Recover file name in PEI phase"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdRecoveryFileName_HELP  #language en-US "This is recover file name in PEI phase.\n"
                                                                                     "The file must be in the root directory.\n"
                                                                                     "The file name must be the 8.3 format.\n"
                                                                                     "The PCD data must be in UNICODE format."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSystemFmpCapsuleImageTypeIdGuid_PROMPT  #language en-US "A list of system FMP ImageTypeId GUIDs"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSystemFmpCapsuleImageTypeIdGuid_HELP  #language en-US "This PCD hold a list GUIDs for the ImageTypeId to indicate the\n"
                                                                                                    "FMP capsule is a system FMP."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdTestKeyUsed_PROMPT  #language en-US "If there is any test key used by the platform."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdTestKeyUsed_HELP  #language en-US "This dynamic PCD holds the information if there is any test key used by the platform."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSmiHandlerProfilePropertyMask_PROMPT  #language en-US "SmiHandlerProfile Property."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSmiHandlerProfilePropertyMask_HELP  #language en-US "The mask is used to control SmiHandlerProfile behavior.<BR><BR>\n"
                                                                                                  "BIT0 - Enable SmiHandlerProfile.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdImageProtectionPolicy_PROMPT  #language en-US "Set image protection policy."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdImageProtectionPolicy_HELP  #language en-US "Set image protection policy. The policy is bitwise.\n"
                                                                                          "If a bit is set, the image will be protected by DxeCore if it is aligned.\n"
                                                                                          "The code section becomes read-only, and the data section becomes non-executable.\n"
                                                                                          "If a bit is clear, the image will not be protected.<BR><BR>\n"
                                                                                          "BIT0       - Image from unknown device. <BR>\n"
                                                                                          "BIT1       - Image from firmware volume.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDxeNxMemoryProtectionPolicy_PROMPT  #language en-US "Set DXE memory protection policy."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdDxeNxMemoryProtectionPolicy_HELP  #language en-US "Set DXE memory protection policy. The policy is bitwise.\n"
                                                                                                "If a bit is set, memory regions of the associated type will be mapped\n"
                                                                                                "non-executable.<BR><BR>\n"
                                                                                                "\n"
                                                                                                "Below is bit mask for this PCD: (Order is same as UEFI spec)<BR>\n"
                                                                                                "EfiReservedMemoryType          0x0001<BR>\n"
                                                                                                "EfiLoaderCode                  0x0002<BR>\n"
                                                                                                "EfiLoaderData                  0x0004<BR>\n"
                                                                                                "EfiBootServicesCode            0x0008<BR>\n"
                                                                                                "EfiBootServicesData            0x0010<BR>\n"
                                                                                                "EfiRuntimeServicesCode         0x0020<BR>\n"
                                                                                                "EfiRuntimeServicesData         0x0040<BR>\n"
                                                                                                "EfiConventionalMemory          0x0080<BR>\n"
                                                                                                "EfiUnusableMemory              0x0100<BR>\n"
                                                                                                "EfiACPIReclaimMemory           0x0200<BR>\n"
                                                                                                "EfiACPIMemoryNVS               0x0400<BR>\n"
                                                                                                "EfiMemoryMappedIO              0x0800<BR>\n"
                                                                                                "EfiMemoryMappedIOPortSpace     0x1000<BR>\n"
                                                                                                "EfiPalCode                     0x2000<BR>\n"
                                                                                                "EfiPersistentMemory            0x4000<BR>\n"
                                                                                                "OEM Reserved       0x4000000000000000<BR>\n"
                                                                                                "OS Reserved        0x8000000000000000<BR>\n"
                                                                                                "\n"
                                                                                                "NOTE: User must NOT set NX protection for EfiLoaderCode / EfiBootServicesCode / EfiRuntimeServicesCode. <BR>\n"
                                                                                                "User MUST set the same NX protection for EfiBootServicesData and EfiConventionalMemory. <BR>\n"
                                                                                                "\n"
                                                                                                "e.g. 0x7FD5 can be used for all memory except Code. <BR>\n"
                                                                                                "e.g. 0x7BD4 can be used for all memory except Code and ACPINVS/Reserved. <BR>\n"
                                                                                                ""

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPteMemoryEncryptionAddressOrMask_PROMPT  #language en-US "The address mask when memory encryption is enabled."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdPteMemoryEncryptionAddressOrMask_HELP  #language en-US "This PCD holds the address mask for page table entries when memory encryption is\n"
                                                                                                     "enabled on AMD processors supporting the Secure Encrypted Virtualization (SEV) feature.\n"
                                                                                                     "This mask should be applied when creating 1:1 virtual to physical mapping tables."

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNullPointerDetectionPropertyMask_PROMPT  #language en-US "Enable NULL pointer detection"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNullPointerDetectionPropertyMask_HELP    #language en-US "Mask to control the NULL address detection in code for different phases.\n"
                                                                                                       " If enabled, accessing NULL address in UEFI or SMM code can be caught.\n\n"
                                                                                                       "   BIT0    - Enable NULL pointer detection for UEFI.\n"
                                                                                                       "   BIT1    - Enable NULL pointer detection for SMM.\n"
                                                                                                       "   BIT2..6 - Reserved for future uses.\n"
                                                                                                       "   BIT7    - Disable NULL pointer detection just after EndOfDxe."
                                                                                                       " This is a workaround for those unsolvable NULL access issues in"
                                                                                                       " OptionROM, boot loader, etc. It can also help to avoid unnecessary"
                                                                                                       " exception caused by legacy memory (0-4095) access after EndOfDxe,"
                                                                                                       " such as Windows 7 boot on Qemu.\n"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdInitValueInTempStack_PROMPT  #language en-US "Init Value in Temp Stack"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdInitValueInTempStack_HELP    #language en-US "Init Value in Temp Stack to be shared between SEC and PEI_CORE\n"
                                                                                           "SEC fills the full temp stack with this values. When switch stack, PeiCore can check\n"
                                                                                           "this value in the temp stack to know how many stack has been used.\n"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHeapGuardPageType_PROMPT  #language en-US "The memory type mask for Page Guard"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHeapGuardPageType_HELP    #language en-US "Indicates which type allocation need guard page.\n\n"
                                                                                        " If a bit is set, a head guard page and a tail guard page will be added just\n"
                                                                                        " before and after corresponding type of pages allocated if there's enough\n"
                                                                                        " free pages for all of them. The page allocation for the type related to\n"
                                                                                        " cleared bits keeps the same as ususal.\n\n"
                                                                                        " Below is bit mask for this PCD: (Order is same as UEFI spec)<BR>\n"
                                                                                        "  EfiReservedMemoryType             0x0000000000000001\n"
                                                                                        "  EfiLoaderCode                     0x0000000000000002\n"
                                                                                        "  EfiLoaderData                     0x0000000000000004\n"
                                                                                        "  EfiBootServicesCode               0x0000000000000008\n"
                                                                                        "  EfiBootServicesData               0x0000000000000010\n"
                                                                                        "  EfiRuntimeServicesCode            0x0000000000000020\n"
                                                                                        "  EfiRuntimeServicesData            0x0000000000000040\n"
                                                                                        "  EfiConventionalMemory             0x0000000000000080\n"
                                                                                        "  EfiUnusableMemory                 0x0000000000000100\n"
                                                                                        "  EfiACPIReclaimMemory              0x0000000000000200\n"
                                                                                        "  EfiACPIMemoryNVS                  0x0000000000000400\n"
                                                                                        "  EfiMemoryMappedIO                 0x0000000000000800\n"
                                                                                        "  EfiMemoryMappedIOPortSpace        0x0000000000001000\n"
                                                                                        "  EfiPalCode                        0x0000000000002000\n"
                                                                                        "  EfiPersistentMemory               0x0000000000004000\n"
                                                                                        "  OEM Reserved                      0x4000000000000000\n"
                                                                                        "  OS Reserved                       0x8000000000000000\n"
                                                                                        " e.g. LoaderCode+LoaderData+BootServicesCode+BootServicesData are needed, 0x1E should be used.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHeapGuardPoolType_PROMPT  #language en-US "The memory type mask for Pool Guard"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHeapGuardPoolType_HELP    #language en-US "Indicates which type allocation need guard page.\n\n"
                                                                                        " If a bit is set, a head guard page and a tail guard page will be added just\n"
                                                                                        " before and after corresponding type of pages which the allocated pool occupies,\n"
                                                                                        " if there's enough free memory for all of them. The pool allocation for the\n"
                                                                                        " type related to cleared bits keeps the same as ususal.\n\n"
                                                                                        " Below is bit mask for this PCD: (Order is same as UEFI spec)<BR>\n"
                                                                                        "  EfiReservedMemoryType             0x0000000000000001\n"
                                                                                        "  EfiLoaderCode                     0x0000000000000002\n"
                                                                                        "  EfiLoaderData                     0x0000000000000004\n"
                                                                                        "  EfiBootServicesCode               0x0000000000000008\n"
                                                                                        "  EfiBootServicesData               0x0000000000000010\n"
                                                                                        "  EfiRuntimeServicesCode            0x0000000000000020\n"
                                                                                        "  EfiRuntimeServicesData            0x0000000000000040\n"
                                                                                        "  EfiConventionalMemory             0x0000000000000080\n"
                                                                                        "  EfiUnusableMemory                 0x0000000000000100\n"
                                                                                        "  EfiACPIReclaimMemory              0x0000000000000200\n"
                                                                                        "  EfiACPIMemoryNVS                  0x0000000000000400\n"
                                                                                        "  EfiMemoryMappedIO                 0x0000000000000800\n"
                                                                                        "  EfiMemoryMappedIOPortSpace        0x0000000000001000\n"
                                                                                        "  EfiPalCode                        0x0000000000002000\n"
                                                                                        "  EfiPersistentMemory               0x0000000000004000\n"
                                                                                        "  OEM Reserved                      0x4000000000000000\n"
                                                                                        "  OS Reserved                       0x8000000000000000\n"
                                                                                        " e.g. LoaderCode+LoaderData+BootServicesCode+BootServicesData are needed, 0x1E should be used.<BR>"


#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHeapGuardPropertyMask_PROMPT  #language en-US "The Heap Guard feature mask"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdHeapGuardPropertyMask_HELP    #language en-US "This mask is to control Heap Guard behavior.\n"
                                                                                            "Note that due to the limit of pool memory implementation and the alignment\n"
                                                                                            "requirement of UEFI spec, BIT7 is a try-best setting which cannot guarantee\n"
                                                                                            "that the returned pool is exactly adjacent to head guard page or tail guard\n"
                                                                                            "page.\n"
                                                                                            "   BIT0 - Enable UEFI page guard.<BR>\n"
                                                                                            "   BIT1 - Enable UEFI pool guard.<BR>\n"
                                                                                            "   BIT2 - Enable SMM page guard.<BR>\n"
                                                                                            "   BIT3 - Enable SMM pool guard.<BR>\n"
                                                                                            "   BIT7 - The direction of Guard Page for Pool Guard.\n"
                                                                                            "          0 - The returned pool is near the tail guard page.<BR>\n"
                                                                                            "          1 - The returned pool is near the head guard page.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCpuStackGuard_PROMPT  #language en-US "Enable UEFI Stack Guard"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdCpuStackGuard_HELP    #language en-US "Indicates if UEFI Stack Guard will be enabled.\n"
                                                                                    "  If enabled, stack overflow in UEFI can be caught, preventing chaotic consequences.<BR><BR>\n"
                                                                                    "   TRUE  - UEFI Stack Guard will be enabled.<BR>\n"
                                                                                    "   FALSE - UEFI Stack Guard will be disabled.<BR>"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetNvStoreDefaultId_PROMPT  #language en-US "NV Storage DefaultId"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSetNvStoreDefaultId_HELP    #language en-US "This dynamic PCD enables the default variable setting.\n"
                                                                                    "  Its value is the default store ID value. The default value is zero as Standard default.\n"
                                                                                    "  When its value is set in PEI, it will trig the default setting to be applied as the default EFI variable.\n"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNvStoreDefaultValueBuffer_PROMPT  #language en-US "NV Storage Default Value Buffer"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdNvStoreDefaultValueBuffer_HELP    #language en-US "This dynamic PCD holds the DynamicHii PCD value. Its value is the auto generated.\n"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdEdkiiFpdtStringRecordEnableOnly_PROMPT  #language en-US "String FPDT Record Enable Only"

#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdEdkiiFpdtStringRecordEnableOnly_HELP    #language en-US "Control which FPDT record format will be used to store the performance entry.\n"
                                                                                                      "On TRUE, the string FPDT record will be used to store every performance entry.\n"
                                                                                                      "On FALSE, the different FPDT record will be used to store the different performance entries."
