// /** @file
// Public definitions for PcAtChipset package.
//
// This package is designed to public interfaces and implementation which follows
// PcAt defacto standard.
//
// Copyright (c) 2009 - 2015, 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
// which 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 "Public definitions for PcAtChipset package"

#string STR_PACKAGE_DESCRIPTION         #language en-US "This package is designed to public interfaces and implementation which follows PcAt de facto standard."



#string STR_gPcAtChipsetPkgTokenSpaceGuid_Pcd8259LegacyModeMask_PROMPT  #language en-US "8259 Legacy Mode mask"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_Pcd8259LegacyModeMask_HELP  #language en-US "Pcd8259LegacyModeMask defines the default mask value for platform. This value is determined<BR><BR>\n"
                                                                                      "1) If platform only support pure UEFI, value should be set to 0xFFFF or 0xFFFE; Because only clock interrupt is allowed in legacy mode in pure UEFI platform.<BR>\n"
                                                                                      "2) If platform install CSM and use thunk module:<BR>\n"
                                                                                      "a) If thunk call provided by CSM binary requires some legacy interrupt support, the corresponding bit should be opened as 0.<BR>\n"
                                                                                      "For example, if keyboard interfaces provided CSM binary use legacy keyboard interrupt in 8259 bit 1, then the value should be set to 0xFFFC.<BR>\n"
                                                                                      "b) If all thunk call provided by CSM binary do not require legacy interrupt support, value should be set to 0xFFFF or 0xFFFE.<BR>\n"
                                                                                      "The default value of legacy mode mask could be changed by EFI_LEGACY_8259_PROTOCOL->SetMask(). But it is rarely need change it except some special cases such as when initializing the CSM binary, it should be set to 0xFFFF to mask all legacy interrupt. Please restore the original legacy mask value if changing is made for these special case.<BR>"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_Pcd8259LegacyModeEdgeLevel_PROMPT  #language en-US "8259 Legacy Mode edge level"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_Pcd8259LegacyModeEdgeLevel_HELP  #language en-US "Pcd8259LegacyModeEdgeLevel defines the default edge level for legacy mode's interrupt controller.\"                                                                                           \"For the corresponding bits, 0 = Edge triggered and 1 = Level triggered."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiCom1Enable_PROMPT  #language en-US "Enable IsaAcpiCom1 device"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiCom1Enable_HELP  #language en-US "Indicates if we need enable IsaAcpiCom1 device.<BR><BR>\n"
                                                                                     "TRUE  - Enables IsaAcpiCom1 device.<BR>\n"
                                                                                     "FALSE - Doesn't enable IsaAcpiCom1 device.<BR>"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiCom2Enable_PROMPT  #language en-US "Enable IsaAcpiCom12 device"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiCom2Enable_HELP  #language en-US "Indicates if we need enable IsaAcpiCom2 device.<BR><BR>\n"
                                                                                     "TRUE  - Enables IsaAcpiCom2 device.<BR>\n"
                                                                                     "FALSE - Doesn't enable IsaAcpiCom2 device.<BR>"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiPs2KeyboardEnable_PROMPT  #language en-US "Enable IsaAcpiPs2Keyboard device"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiPs2KeyboardEnable_HELP  #language en-US "Indicates if we need enable IsaAcpiPs2Keyboard device.<BR><BR>\n"
                                                                                            "TRUE  - Enables IsaAcpiPs2Keyboard device.<BR>\n"
                                                                                            "FALSE - Doesn't enable IsaAcpiPs2Keyboard device.<BR>"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiPs2MouseEnable_PROMPT  #language en-US "Enable IsaAcpiPs2Mouse device"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiPs2MouseEnable_HELP  #language en-US "Indicates if we need enable IsaAcpiPs2Mouse device.<BR><BR>\n"
                                                                                         "TRUE  - Enables IsaAcpiPs2Mouse device.<BR>\n"
                                                                                         "FALSE - Doesn't enable IsaAcpiPs2Mouse device.<BR>"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiFloppyAEnable_PROMPT  #language en-US "Enable IsaAcpiFloppyA device"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiFloppyAEnable_HELP  #language en-US "Indicates if we need enable IsaAcpiFloppyA device.<BR><BR>\n"
                                                                                        "TRUE  - Enables IsaAcpiFloppyA device.<BR>\n"
                                                                                        "FALSE - Doesn't enable IsaAcpiFloppyA device.<BR>"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiFloppyBEnable_PROMPT  #language en-US "Enable IsaAcpiFloppyB device"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIsaAcpiFloppyBEnable_HELP  #language en-US "Indicates if we need enable IsaAcpiFloppyB device.<BR><BR>\n"
                                                                                        "TRUE  - Enables IsaAcpiFloppyB device.<BR>\n"
                                                                                        "FALSE - Doesn't enable IsaAcpiFloppyB device.<BR>"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdHpetBaseAddress_PROMPT  #language en-US "HPET base address"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdHpetBaseAddress_HELP  #language en-US "This PCD specifies the base address of the HPET timer."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdHpetLocalApicVector_PROMPT  #language en-US "HPET local APIC vector"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdHpetLocalApicVector_HELP  #language en-US "This PCD specifies the Local APIC Interrupt Vector for the HPET Timer."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdHpetDefaultTimerPeriod_PROMPT  #language en-US "Default period of HPET timer"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdHpetDefaultTimerPeriod_HELP  #language en-US "This PCD specifies the default period of the HPET Timer in 100 ns units. The value of 100000 (in 100 ns units) is equal to 10 ms."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIoApicBaseAddress_PROMPT  #language en-US "IO APIC base address"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdIoApicBaseAddress_HELP  #language en-US "This PCD specifies the base address of the IO APIC."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPortBaseAddress_PROMPT  #language en-US "ACPI Timer IO Port Address"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPortBaseAddress_HELP  #language en-US "Defines the ACPI register set base address. The invalid 0xFFFF is as its default value. It must be configured to the real value."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciBusNumber_PROMPT  #language en-US "ACPI Hardware PCI Bus Number"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciBusNumber_HELP  #language en-US "Defines the PCI Bus Number of the PCI device that contains the BAR and Enable for ACPI hardware registers."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciDeviceNumber_PROMPT  #language en-US "ACPI Hardware PCI Device Number"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciDeviceNumber_HELP  #language en-US "Defines the PCI Device Number of the PCI device that contains the BAR and Enable for ACPI hardware registers. The invalid 0xFF is as its default value. It must be configured to the real value."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciFunctionNumber_PROMPT  #language en-US "ACPI Hardware PCI Function Number"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciFunctionNumber_HELP  #language en-US "Defines the PCI Function Number of the PCI device that contains the BAR and Enable for ACPI hardware registers. The invalid 0xFF is as its default value. It must be configured to the real value."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciEnableRegisterOffset_PROMPT  #language en-US "ACPI Hardware PCI Register Offset"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciEnableRegisterOffset_HELP  #language en-US "Defines the PCI Register Offset of the PCI device that contains the Enable for ACPI hardware registers. The invalid 0xFFFF is as its default value. It must be configured to the real value."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoBarEnableMask_PROMPT  #language en-US "ACPI Hardware PCI Bar Enable BitMask"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoBarEnableMask_HELP  #language en-US "Defines the bit mask that must be set to enable the APIC hardware register BAR."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciBarRegisterOffset_PROMPT  #language en-US "ACPI Hardware PCI Bar Register Offset"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPciBarRegisterOffset_HELP  #language en-US "Defines the PCI Register Offset of the PCI device that contains the BAR for ACPI hardware registers. The invalid 0xFFFF is as its default value. It must be configured to the real value."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiPm1TmrOffset_PROMPT  #language en-US "Offset to 32-bit Timer register in ACPI BAR"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiPm1TmrOffset_HELP  #language en-US "Defines the offset to the 32-bit Timer Value register that resides within the ACPI BAR."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdHpetMsiEnable_PROMPT  #language en-US "Configure HPET to use MSI"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdHpetMsiEnable_HELP  #language en-US "Indicates the HPET Timer will be configured to use MSI interrupts if the HPET timer supports them, or use I/O APIC interrupts.<BR><BR>\n"
                                                                                 "TRUE  - Configures the HPET Timer to use MSI interrupts if the HPET Timer supports them.<BR>\n"
                                                                                 "FALSE - Configures the HPET Timer to use I/O APIC interrupts.<BR>"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdMinimalValidYear_PROMPT  #language en-US "Minimal valid year in RTC"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdMinimalValidYear_HELP    #language en-US "This PCD specifies the minimal valid year in RTC."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdMaximalValidYear_PROMPT  #language en-US "Maximal valid year in RTC"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdMaximalValidYear_HELP    #language en-US "This PCD specifies the maximal valid year in RTC."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPortBaseAddressMask_PROMPT   #language en-US  "ACPI IO Port Base Address Mask"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdAcpiIoPortBaseAddressMask_HELP     #language en-US  "Defines the bit mask to retrieve ACPI IO Port Base Address."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_ERR_80000001  #language en-US "Invalid value provided."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdResetControlRegister_PROMPT
#language en-US
"Reset Control Register address"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdResetControlRegister_HELP
#language en-US
"Reset Control Register address in I/O space."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdResetControlValueColdReset_PROMPT
#language en-US
"Reset Control Register value for cold reset"

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdResetControlValueColdReset_HELP
#language en-US
"8bit Reset Control Register value for cold reset."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdInitialValueRtcRegisterA_PROMPT  #language en-US "Initial value for Register_A in RTC."
#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdInitialValueRtcRegisterA_HELP    #language en-US "Specifies the initial value for Register_A in RTC."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdInitialValueRtcRegisterB_PROMPT  #language en-US "Initial value for Register_B in RTC."
#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdInitialValueRtcRegisterB_HELP    #language en-US "Specifies the initial value for Register_B in RTC."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdInitialValueRtcRegisterD_PROMPT  #language en-US "Initial value for Register_D in RTC."
#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdInitialValueRtcRegisterD_HELP    #language en-US "Specifies the initial value for Register_D in RTC."
