// /** @file
// Public definitions for PcAtChipset package.
//
// This package is designed to public interfaces and implementation which follows
// PcAt defacto standard.
//
// Copyright (c) 2009 - 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
// 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."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdRtcIndexRegister_PROMPT          #language en-US "RTC Index Register address"
#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdRtcIndexRegister_HELP            #language en-US "Specifies RTC Index Register address in I/O space."

#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdRtcTargetRegister_PROMPT         #language en-US "RTC Target Register address"
#string STR_gPcAtChipsetPkgTokenSpaceGuid_PcdRtcTargetRegister_HELP           #language en-US "Specifies RTC Target Register address in I/O space."
