123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738 |
- /** @file
- This file is PeiPchPolicy library.
- Copyright (c) 2019 - 2020 Intel Corporation. All rights reserved. <BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include "PeiPchPolicyLibrary.h"
- #include <Library/PchPcieRpLib.h>
- #include <Library/CpuPlatformLib.h>
- #include <Register/PchRegsLpcCnl.h>
- #include <Library/ConfigBlockLib.h>
- /**
- mPxRcConfig[] table contains data for 8259 routing (how PIRQx is mapped to IRQy).
- This information is used by systems which choose to use legacy PIC
- interrupt controller. Only IRQ3-7,9-12,14,15 are valid. Values from this table
- will be programmed into ITSS.PxRC registers.
- **/
- GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mPxRcConfig[] = {
- 11, // PARC: PIRQA -> IRQ11
- 10, // PBRC: PIRQB -> IRQ10
- 11, // PCRC: PIRQC -> IRQ11
- 11, // PDRC: PIRQD -> IRQ11
- 11, // PERC: PIRQE -> IRQ11
- 11, // PFRC: PIRQF -> IRQ11
- 11, // PGRC: PIRQG -> IRQ11
- 11 // PHRC: PIRQH -> IRQ11
- };
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadPchGeneralConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_GENERAL_CONFIG *PchGeneralConfig;
- PchGeneralConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "PchGeneralConfig->Header.GuidHob.Name = %g\n", &PchGeneralConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "PchGeneralConfig->Header.GuidHob.Header.HobLength = 0x%x\n", PchGeneralConfig->Header.GuidHob.Header.HobLength));
- /********************************
- PCH general configuration
- ********************************/
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadPcieRpConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- UINTN Index;
- PCH_PCIE_CONFIG *PcieRpConfig;
- PcieRpConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "PcieRpConfig->Header.GuidHob.Name = %g\n", &PcieRpConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "PcieRpConfig->Header.GuidHob.Header.HobLength = 0x%x\n", PcieRpConfig->Header.GuidHob.Header.HobLength));
- /********************************
- PCI Express related settings
- ********************************/
- PcieRpConfig->RpFunctionSwap = TRUE;
- for (Index = 0; Index < GetPchMaxPciePortNum (); Index++) {
- PcieRpConfig->RootPort[Index].Aspm = PchPcieAspmAutoConfig;
- PcieRpConfig->RootPort[Index].PmSci = TRUE;
- PcieRpConfig->RootPort[Index].AcsEnabled = TRUE;
- PcieRpConfig->RootPort[Index].PtmEnabled = TRUE;
- PcieRpConfig->RootPort[Index].DpcEnabled = TRUE;
- PcieRpConfig->RootPort[Index].RpDpcExtensionsEnabled = TRUE;
- PcieRpConfig->RootPort[Index].MaxPayload = PchPcieMaxPayload256;
- PcieRpConfig->RootPort[Index].SlotImplemented = TRUE;
- PcieRpConfig->RootPort[Index].PhysicalSlotNumber = (UINT8) Index;
- PcieRpConfig->RootPort[Index].L1Substates = PchPcieL1SubstatesL1_1_2;
- PcieRpConfig->RootPort[Index].EnableCpm = TRUE;
- PcieRpConfig->RootPort[Index].Gen3EqPh3Method = PchPcieEqHardware;
- //
- // PCIe LTR Configuration.
- //
- PcieRpConfig->RootPort[Index].LtrEnable = TRUE;
- PcieRpConfig->RootPort[Index].LtrMaxSnoopLatency = 0x1003;
- PcieRpConfig->RootPort[Index].LtrMaxNoSnoopLatency = 0x1003;
- PcieRpConfig->RootPort[Index].SnoopLatencyOverrideMode = 2;
- PcieRpConfig->RootPort[Index].SnoopLatencyOverrideMultiplier = 2;
- PcieRpConfig->RootPort[Index].SnoopLatencyOverrideValue = 60;
- PcieRpConfig->RootPort[Index].NonSnoopLatencyOverrideMode = 2;
- PcieRpConfig->RootPort[Index].NonSnoopLatencyOverrideMultiplier = 2;
- PcieRpConfig->RootPort[Index].NonSnoopLatencyOverrideValue = 60;
- PcieRpConfig->RootPort[Index].Uptp = 5;
- PcieRpConfig->RootPort[Index].Dptp = 7;
- PcieRpConfig->EqPh3LaneParam[Index].Cm = 6;
- PcieRpConfig->EqPh3LaneParam[Index].Cp = 2;
- }
- PcieRpConfig->SwEqCoeffList[0].Cm = 4;
- PcieRpConfig->SwEqCoeffList[0].Cp = 8;
- PcieRpConfig->SwEqCoeffList[1].Cm = 6;
- PcieRpConfig->SwEqCoeffList[1].Cp = 2;
- PcieRpConfig->SwEqCoeffList[2].Cm = 8;
- PcieRpConfig->SwEqCoeffList[2].Cp = 6;
- PcieRpConfig->SwEqCoeffList[3].Cm = 10;
- PcieRpConfig->SwEqCoeffList[3].Cp = 8;
- PcieRpConfig->SwEqCoeffList[4].Cm = 12;
- PcieRpConfig->SwEqCoeffList[4].Cp = 2;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadSataConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- UINTN PortIndex;
- UINTN Index;
- UINT32 SataCtrlIndex;
- PCH_SATA_CONFIG *SataConfig;
- SataConfig = (PCH_SATA_CONFIG *)ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "SataConfig->Header.GuidHob.Name = %g\n", &SataConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "SataConfig->Header.GuidHob.Header.HobLength = 0x%x\n", SataConfig->Header.GuidHob.Header.HobLength));
- for (SataCtrlIndex = 0; SataCtrlIndex < GetPchMaxSataControllerNum (); SataCtrlIndex++, SataConfig++) {
- /********************************
- SATA related settings
- ********************************/
- SataConfig->Enable = TRUE;
- SataConfig->SalpSupport = TRUE;
- SataConfig->SataMode = PchSataModeAhci;
- for (PortIndex = 0; PortIndex < GetPchMaxSataPortNum (SataCtrlIndex); PortIndex++) {
- SataConfig->PortSettings[PortIndex].Enable = TRUE;
- SataConfig->PortSettings[PortIndex].DmVal = 15;
- SataConfig->PortSettings[PortIndex].DitoVal = 625;
- }
- SataConfig->Rst.Raid0 = TRUE;
- SataConfig->Rst.Raid1 = TRUE;
- SataConfig->Rst.Raid10 = TRUE;
- SataConfig->Rst.Raid5 = TRUE;
- SataConfig->Rst.Irrt = TRUE;
- SataConfig->Rst.OromUiBanner = TRUE;
- SataConfig->Rst.OromUiDelay = PchSataOromDelay2sec;
- SataConfig->Rst.HddUnlock = TRUE;
- SataConfig->Rst.LedLocate = TRUE;
- SataConfig->Rst.IrrtOnly = TRUE;
- SataConfig->Rst.SmartStorage = TRUE;
- SataConfig->Rst.OptaneMemory = TRUE;
- SataConfig->Rst.CpuAttachedStorage = TRUE;
- for (Index = 0; Index < PCH_MAX_RST_PCIE_STORAGE_CR; Index++) {
- SataConfig->RstPcieStorageRemap[Index].DeviceResetDelay = 100;
- }
- SataConfig->PwrOptEnable = TRUE;
- SataConfig->ThermalThrottling.SuggestedSetting = TRUE;
- }
- }
- /**
- Get Sata Config Policy
- @param[in] SiPolicy The RC Policy PPI instance
- @param[in] SataCtrlIndex SATA controller index
- @retval SataConfig Pointer to Sata Config Policy
- **/
- PCH_SATA_CONFIG *
- GetPchSataConfig (
- IN SI_POLICY_PPI *SiPolicy,
- IN UINT32 SataCtrlIndex
- )
- {
- PCH_SATA_CONFIG *SataConfig;
- EFI_STATUS Status;
- ASSERT (SataCtrlIndex < GetPchMaxSataControllerNum ());
- Status = GetConfigBlock ((VOID *) SiPolicy, &gSataConfigGuid, (VOID *) &SataConfig);
- ASSERT_EFI_ERROR (Status);
- SataConfig += SataCtrlIndex;
- return SataConfig;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadIoApicConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_IOAPIC_CONFIG *IoApicConfig;
- IoApicConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "IoApicConfig->Header.GuidHob.Name = %g\n", &IoApicConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "IoApicConfig->Header.GuidHob.Header.HobLength = 0x%x\n", IoApicConfig->Header.GuidHob.Header.HobLength));
- /********************************
- Io Apic configuration
- ********************************/
- IoApicConfig->IoApicId = 0x02;
- IoApicConfig->IoApicEntry24_119 = TRUE;
- IoApicConfig->Enable8254ClockGating = TRUE;
- IoApicConfig->Enable8254ClockGatingOnS3 = TRUE;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadDmiConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_DMI_CONFIG *DmiConfig;
- DmiConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "DmiConfig->Header.GuidHob.Name = %g\n", &DmiConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "DmiConfig->Header.GuidHob.Header.HobLength = 0x%x\n", DmiConfig->Header.GuidHob.Header.HobLength));
- /********************************
- DMI related settings
- ********************************/
- DmiConfig->DmiAspmCtrl = PchPcieAspmAutoConfig;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadFlashProtectionConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_FLASH_PROTECTION_CONFIG *FlashProtectionConfig;
- FlashProtectionConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "FlashProtectionConfig->Header.GuidHob.Name = %g\n", &FlashProtectionConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "FlashProtectionConfig->Header.GuidHob.Header.HobLength = 0x%x\n", FlashProtectionConfig->Header.GuidHob.Header.HobLength));
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadHdAudioConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_HDAUDIO_CONFIG *HdAudioConfig;
- HdAudioConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "HdAudioConfig->Header.GuidHob.Name = %g\n", &HdAudioConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "HdAudioConfig->Header.GuidHob.Header.HobLength = 0x%x\n", HdAudioConfig->Header.GuidHob.Header.HobLength));
- /********************************
- HD-Audio configuration
- ********************************/
- HdAudioConfig->DspEnable = TRUE;
- HdAudioConfig->HdAudioLinkFrequency = PchHdaLinkFreq24MHz;
- HdAudioConfig->IDispLinkFrequency = PchHdaLinkFreq96MHz;
- HdAudioConfig->IDispLinkTmode = PchHdaIDispMode2T;
- HdAudioConfig->ResetWaitTimer = 600; // Must be at least 521us (25 frames)
- HdAudioConfig->AudioLinkHda = TRUE;
- HdAudioConfig->AudioLinkDmic0 = TRUE;
- HdAudioConfig->AudioLinkDmic1 = TRUE;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadInterruptConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_INTERRUPT_CONFIG *InterruptConfig;
- InterruptConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "InterruptConfig->Header.GuidHob.Name = %g\n", &InterruptConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "InterruptConfig->Header.GuidHob.Header.HobLength = 0x%x\n", InterruptConfig->Header.GuidHob.Header.HobLength));
- LoadDeviceInterruptConfig (InterruptConfig);
- ASSERT ((sizeof (mPxRcConfig) / sizeof (UINT8)) <= PCH_MAX_PXRC_CONFIG);
- CopyMem (
- InterruptConfig->PxRcConfig,
- mPxRcConfig,
- sizeof (mPxRcConfig)
- );
- InterruptConfig->GpioIrqRoute = 14;
- InterruptConfig->SciIrqSelect = 9;
- InterruptConfig->TcoIrqSelect = 9;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadIshConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_ISH_CONFIG *IshConfig;
- IshConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "IshConfig->Header.GuidHob.Name = %g\n", &IshConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "IshConfig->Header.GuidHob.Header.HobLength = 0x%x\n", IshConfig->Header.GuidHob.Header.HobLength));
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadLanConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_LAN_CONFIG *LanConfig;
- LanConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "LanConfig->Header.GuidHob.Name = %g\n", &LanConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "LanConfig->Header.GuidHob.Header.HobLength = 0x%x\n", LanConfig->Header.GuidHob.Header.HobLength));
- /********************************
- Lan configuration
- ********************************/
- LanConfig->Enable = TRUE;
- LanConfig->LtrEnable = TRUE;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadLockDownConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_LOCK_DOWN_CONFIG *LockDownConfig;
- LockDownConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "LockDownConfig->Header.GuidHob.Name = %g\n", &LockDownConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "LockDownConfig->Header.GuidHob.Header.HobLength = 0x%x\n", LockDownConfig->Header.GuidHob.Header.HobLength));
- /********************************
- Lockdown configuration
- ********************************/
- LockDownConfig->GlobalSmi = TRUE;
- LockDownConfig->BiosInterface = TRUE;
- LockDownConfig->RtcMemoryLock = TRUE;
- LockDownConfig->BiosLock = TRUE;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadP2sbConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_P2SB_CONFIG *P2sbConfig;
- P2sbConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "P2sbConfig->Header.GuidHob.Name = %g\n", &P2sbConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "P2sbConfig->Header.GuidHob.Header.HobLength = 0x%x\n", P2sbConfig->Header.GuidHob.Header.HobLength));
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadPmConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_PM_CONFIG *PmConfig;
- PmConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "PmConfig->Header.GuidHob.Name = %g\n", &PmConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "PmConfig->Header.GuidHob.Header.HobLength = 0x%x\n", PmConfig->Header.GuidHob.Header.HobLength));
- /********************************
- MiscPm Configuration
- ********************************/
- PmConfig->MeWakeSts = TRUE;
- PmConfig->WolOvrWkSts = TRUE;
- PmConfig->WakeConfig.WolEnableOverride = TRUE;
- PmConfig->WakeConfig.LanWakeFromDeepSx = TRUE;
- PmConfig->PchSlpS3MinAssert = PchSlpS350ms;
- PmConfig->PchSlpS4MinAssert = PchSlpS41s;
- PmConfig->PchSlpSusMinAssert = PchSlpSus4s;
- PmConfig->PchSlpAMinAssert = PchSlpA2s;
- PmConfig->SlpLanLowDc = TRUE;
- PmConfig->PciePllSsc = 0xFF;
- PmConfig->LpcClockRun = TRUE;
- PmConfig->SlpS0Enable = TRUE;
- PmConfig->CpuC10GatePinEnable = TRUE;
- if (IsWhlCpu () && (GetCpuStepping () == EnumCflV0)) {
- PmConfig->SlpS0WithGbeSupport = FALSE;
- } else {
- PmConfig->SlpS0WithGbeSupport = TRUE;
- }
- if (IsPchLp ()) {
- PmConfig->ModPhySusPgEnable = TRUE;
- }
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadScsConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_SCS_CONFIG *ScsConfig;
- ScsConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "ScsConfig->Header.GuidHob.Name = %g\n", &ScsConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "ScsConfig->Header.GuidHob.Header.HobLength = 0x%x\n", ScsConfig->Header.GuidHob.Header.HobLength));
- /********************************
- SCS Configuration
- ********************************/
- ScsConfig->ScsEmmcEnabled = IsPchLp () ? TRUE : FALSE; // eMMC present on PCH-LP only
- ScsConfig->ScsEmmcHs400DriverStrength = DriverStrength40Ohm;
- //Enable Sd Card controller for Non-Desktop sku platforms
- if (GetCpuSku () != EnumCpuTrad) {
- ScsConfig->ScsSdcardEnabled = TRUE;
- }
- ScsConfig->SdCardPowerEnableActiveHigh = TRUE;
- ScsConfig->ScsUfsEnabled = TRUE;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadSerialIoConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- UINTN Index;
- PCH_SERIAL_IO_CONFIG *SerialIoConfig;
- SerialIoConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "SerialIoConfig->Header.GuidHob.Name = %g\n", &SerialIoConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "SerialIoConfig->Header.GuidHob.Header.HobLength = 0x%x\n", SerialIoConfig->Header.GuidHob.Header.HobLength));
- /********************************
- SerialIo Configuration
- ********************************/
- for (Index = 0; Index < GetPchMaxSerialIoControllersNum (); Index++) {
- SerialIoConfig->DevMode[Index] = PchSerialIoPci;
- }
- SerialIoConfig->DebugUartNumber = PcdGet8 (PcdSerialIoUartNumber);
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadSerialIrqConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_LPC_SIRQ_CONFIG *SerialIrqConfig;
- SerialIrqConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "SerialIrqConfig->Header.GuidHob.Name = %g\n", &SerialIrqConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "SerialIrqConfig->Header.GuidHob.Header.HobLength = 0x%x\n", SerialIrqConfig->Header.GuidHob.Header.HobLength));
- /********************************
- Serial IRQ Configuration
- ********************************/
- SerialIrqConfig->SirqEnable = TRUE;
- SerialIrqConfig->SirqMode = PchQuietMode;
- SerialIrqConfig->StartFramePulse = PchSfpw4Clk;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadThermalConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_THERMAL_CONFIG *ThermalConfig;
- ThermalConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "ThermalConfig->Header.GuidHob.Name = %g\n", &ThermalConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "ThermalConfig->Header.GuidHob.Header.HobLength = 0x%x\n", ThermalConfig->Header.GuidHob.Header.HobLength));
- /********************************
- Thermal configuration.
- ********************************/
- ThermalConfig->TsmicLock = TRUE;
- ThermalConfig->PchHotLevel = 0x154;
- ThermalConfig->TTLevels.SuggestedSetting = TRUE;
- ThermalConfig->TTLevels.PchCrossThrottling = TRUE;
- ThermalConfig->DmiHaAWC.SuggestedSetting = TRUE;
- ThermalConfig->MemoryThrottling.TsGpioPinSetting[TsGpioC].PmsyncEnable = TRUE;
- ThermalConfig->MemoryThrottling.TsGpioPinSetting[TsGpioC].C0TransmitEnable = TRUE;
- ThermalConfig->MemoryThrottling.TsGpioPinSetting[TsGpioD].PmsyncEnable = TRUE;
- ThermalConfig->MemoryThrottling.TsGpioPinSetting[TsGpioD].C0TransmitEnable = TRUE;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadUsbConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- UINTN PortIndex;
- USB_CONFIG *UsbConfig;
- UsbConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "UsbConfig->Header.GuidHob.Name = %g\n", &UsbConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "UsbConfig->Header.GuidHob.Header.HobLength = 0x%x\n", UsbConfig->Header.GuidHob.Header.HobLength));
- /********************************
- USB related configuration
- ********************************/
- for (PortIndex = 0; PortIndex < GetPchXhciMaxUsb2PortNum (); PortIndex++) {
- UsbConfig->PortUsb20[PortIndex].Enable = TRUE;
- }
- for (PortIndex = 0; PortIndex < GetPchXhciMaxUsb3PortNum (); PortIndex++) {
- UsbConfig->PortUsb30[PortIndex].Enable = TRUE;
- }
- //
- // BIOS should program PDO in PEI phase by default
- //
- UsbConfig->PdoProgramming = TRUE;
- //
- // Default values of USB2 AFE settings.
- //
- UsbConfig->Usb2PhySusPgEnable = TRUE;
- for (PortIndex = 0; PortIndex < GetPchXhciMaxUsb2PortNum (); PortIndex++) {
- UsbConfig->PortUsb20[PortIndex].Afe.Petxiset = 3;
- UsbConfig->PortUsb20[PortIndex].Afe.Txiset = 2;
- UsbConfig->PortUsb20[PortIndex].Afe.Predeemp = 1;
- UsbConfig->PortUsb20[PortIndex].Afe.Pehalfbit = 1;
- }
- for (PortIndex = 0; PortIndex < GetPchXhciMaxUsb3PortNum (); PortIndex++) {
- UsbConfig->PortUsb30HsioRx[PortIndex].HsioOlfpsCfgPullUpDwnRes = 3;
- }
- UsbConfig->XhciOcLock = TRUE;
- //
- // xDCI configuration
- //
- UsbConfig->XdciConfig.Enable = FALSE;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadEspiConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_ESPI_CONFIG *EspiConfig;
- EspiConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "EspiConfig->Header.GuidHob.Name = %g\n", &EspiConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "EspiConfig->Header.GuidHob.Header.HobLength = 0x%x\n", EspiConfig->Header.GuidHob.Header.HobLength));
- /********************************
- Espi configuration.
- ********************************/
- EspiConfig->BmeMasterSlaveEnabled = TRUE;
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadCnviConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_CNVI_CONFIG *CnviConfig;
- CnviConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "CnviConfig->Header.GuidHob.Name = %g\n", &CnviConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "CnviConfig->Header.GuidHob.Header.HobLength = 0x%x\n", CnviConfig->Header.GuidHob.Header.HobLength));
- /********************************
- Cnvi configuration.
- ********************************/
- CnviConfig->Mode = CnviModeAuto; // Automatic detection
- }
- /**
- Load Config block default
- @param[in] ConfigBlockPointer Pointer to config block
- **/
- VOID
- LoadHsioConfigDefault (
- IN VOID *ConfigBlockPointer
- )
- {
- PCH_HSIO_CONFIG *HsioConfig;
- HsioConfig = ConfigBlockPointer;
- DEBUG ((DEBUG_INFO, "HsioConfig->Header.GuidHob.Name = %g\n", &HsioConfig->Header.GuidHob.Name));
- DEBUG ((DEBUG_INFO, "HsioConfig->Header.GuidHob.Header.HobLength = 0x%x\n", HsioConfig->Header.GuidHob.Header.HobLength));
- }
- GLOBAL_REMOVE_IF_UNREFERENCED COMPONENT_BLOCK_ENTRY mPchIpBlocks [] = {
- {&gPchGeneralConfigGuid, sizeof (PCH_GENERAL_CONFIG), PCH_GENERAL_CONFIG_REVISION, LoadPchGeneralConfigDefault},
- {&gPcieRpConfigGuid, sizeof (PCH_PCIE_CONFIG), PCIE_RP_CONFIG_REVISION, LoadPcieRpConfigDefault},
- {&gSataConfigGuid, sizeof (PCH_SATA_CONFIG), SATA_CONFIG_REVISION, LoadSataConfigDefault},
- {&gIoApicConfigGuid, sizeof (PCH_IOAPIC_CONFIG), IOAPIC_CONFIG_REVISION, LoadIoApicConfigDefault},
- {&gDmiConfigGuid, sizeof (PCH_DMI_CONFIG), DMI_CONFIG_REVISION, LoadDmiConfigDefault},
- {&gFlashProtectionConfigGuid, sizeof (PCH_FLASH_PROTECTION_CONFIG), FLASH_PROTECTION_CONFIG_REVISION, LoadFlashProtectionConfigDefault},
- {&gHdAudioConfigGuid, sizeof (PCH_HDAUDIO_CONFIG), HDAUDIO_CONFIG_REVISION, LoadHdAudioConfigDefault},
- {&gInterruptConfigGuid, sizeof (PCH_INTERRUPT_CONFIG), INTERRUPT_CONFIG_REVISION, LoadInterruptConfigDefault},
- {&gIshConfigGuid, sizeof (PCH_ISH_CONFIG), ISH_CONFIG_REVISION, LoadIshConfigDefault},
- {&gLanConfigGuid, sizeof (PCH_LAN_CONFIG), LAN_CONFIG_REVISION, LoadLanConfigDefault},
- {&gLockDownConfigGuid, sizeof (PCH_LOCK_DOWN_CONFIG), LOCK_DOWN_CONFIG_REVISION, LoadLockDownConfigDefault},
- {&gP2sbConfigGuid, sizeof (PCH_P2SB_CONFIG), P2SB_CONFIG_REVISION, LoadP2sbConfigDefault},
- {&gPmConfigGuid, sizeof (PCH_PM_CONFIG), PM_CONFIG_REVISION, LoadPmConfigDefault},
- {&gScsConfigGuid, sizeof (PCH_SCS_CONFIG), SCS_CONFIG_REVISION, LoadScsConfigDefault},
- {&gSerialIoConfigGuid, sizeof (PCH_SERIAL_IO_CONFIG), SERIAL_IO_CONFIG_REVISION, LoadSerialIoConfigDefault},
- {&gSerialIrqConfigGuid, sizeof (PCH_LPC_SIRQ_CONFIG), SERIAL_IRQ_CONFIG_REVISION, LoadSerialIrqConfigDefault},
- {&gThermalConfigGuid, sizeof (PCH_THERMAL_CONFIG), THERMAL_CONFIG_REVISION, LoadThermalConfigDefault},
- {&gUsbConfigGuid, sizeof (USB_CONFIG), USB_CONFIG_REVISION, LoadUsbConfigDefault},
- {&gEspiConfigGuid, sizeof (PCH_ESPI_CONFIG), ESPI_CONFIG_REVISION, LoadEspiConfigDefault},
- {&gCnviConfigGuid, sizeof (PCH_CNVI_CONFIG), CNVI_CONFIG_REVISION, LoadCnviConfigDefault},
- {&gHsioConfigGuid, sizeof (PCH_HSIO_CONFIG), HSIO_CONFIG_REVISION, LoadHsioConfigDefault},
- };
- /**
- Get PCH config block table total size.
- @retval Size of PCH config block table
- **/
- UINT16
- EFIAPI
- PchGetConfigBlockTotalSize (
- VOID
- )
- {
- return GetComponentConfigBlockTotalSize (&mPchIpBlocks[0], sizeof (mPchIpBlocks) / sizeof (COMPONENT_BLOCK_ENTRY));
- }
- /**
- PchAddConfigBlocks add all PCH config blocks.
- @param[in] ConfigBlockTableAddress The pointer to add PCH config blocks
- @retval EFI_SUCCESS The policy default is initialized.
- @retval EFI_OUT_OF_RESOURCES Insufficient resources to create buffer
- **/
- EFI_STATUS
- EFIAPI
- PchAddConfigBlocks (
- IN VOID *ConfigBlockTableAddress
- )
- {
- DEBUG ((DEBUG_INFO, "PCH AddConfigBlocks\n"));
- return AddComponentConfigBlocks (ConfigBlockTableAddress, &mPchIpBlocks[0], sizeof (mPchIpBlocks) / sizeof (COMPONENT_BLOCK_ENTRY));
- }
|