123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /** @file
- This file is SampleCode of the library for Intel PCH PEI Policy initialization.
- Copyright (c) 2019 - 2020 Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include "PeiPchPolicyUpdate.h"
- #include <Library/BaseMemoryLib.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/HobLib.h>
- #include <Library/PchInfoLib.h>
- #include <Library/SataLib.h>
- #include <Library/PchPcrLib.h>
- #include <Library/PchPcieRpLib.h>
- #include <Library/DebugLib.h>
- #include <Library/PchPolicyLib.h>
- #include <Library/ConfigBlockLib.h>
- //
- // Sawtooth Peak
- // Single SPD EEPROM at 0xA2 serves both C0D0 and C1D0 (LPDDR is 1DPC only)
- //
- #define DIMM_SMB_SPD_P0C0D0_STP 0xA2
- #define DIMM_SMB_SPD_P0C0D1_STP 0xA0
- #define DIMM_SMB_SPD_P0C1D0_STP 0xA2
- #define DIMM_SMB_SPD_P0C1D1_STP 0xA0
- GLOBAL_REMOVE_IF_UNREFERENCED UINT8 mSmbusSTPRsvdAddresses[] = {
- DIMM_SMB_SPD_P0C0D0_STP,
- DIMM_SMB_SPD_P0C0D1_STP,
- DIMM_SMB_SPD_P0C1D0_STP,
- DIMM_SMB_SPD_P0C1D1_STP
- };
- /**
- This function performs PCH PEI Policy initialization.
- @param[in, out] SiPreMemPolicy The SI PREMEM Policy PPI instance
- @retval EFI_SUCCESS The PPI is installed and initialized.
- @retval EFI ERRORS The PPI is not successfully installed.
- @retval EFI_OUT_OF_RESOURCES Do not have enough resources to initialize the driver
- **/
- EFI_STATUS
- EFIAPI
- UpdatePeiPchPolicyPreMem (
- IN OUT SI_PREMEM_POLICY_PPI *SiPreMemPolicy
- )
- {
- EFI_STATUS Status;
- UINT8 *SmBusReservedTable;
- UINT8 SmBusReservedNum;
- PCH_GENERAL_PREMEM_CONFIG *PchGeneralPreMemConfig;
- PCH_TRACE_HUB_PREMEM_CONFIG *PchTraceHubPreMemConfig;
- PCH_SMBUS_PREMEM_CONFIG *SmbusPreMemConfig;
- PCH_LPC_PREMEM_CONFIG *LpcPreMemConfig;
- PCH_WDT_PREMEM_CONFIG *WatchDogPreMemConfig;
- PCH_DCI_PREMEM_CONFIG *DciPreMemConfig;
- PCH_PCIE_RP_PREMEM_CONFIG *PcieRpPreMemConfig;
- PCH_HDAUDIO_PREMEM_CONFIG *HdaPreMemConfig;
- PCH_ISH_PREMEM_CONFIG *IshPreMemConfig;
- Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gPchGeneralPreMemConfigGuid, (VOID *) &PchGeneralPreMemConfig);
- ASSERT_EFI_ERROR (Status);
- Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gPchTraceHubPreMemConfigGuid, (VOID *) &PchTraceHubPreMemConfig);
- ASSERT_EFI_ERROR (Status);
- Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gSmbusPreMemConfigGuid, (VOID *) &SmbusPreMemConfig);
- ASSERT_EFI_ERROR (Status);
- Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gLpcPreMemConfigGuid, (VOID *) &LpcPreMemConfig);
- ASSERT_EFI_ERROR (Status);
- Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gWatchDogPreMemConfigGuid, (VOID *) &WatchDogPreMemConfig);
- ASSERT_EFI_ERROR (Status);
- Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gDciPreMemConfigGuid, (VOID *) &DciPreMemConfig);
- ASSERT_EFI_ERROR (Status);
- Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gPcieRpPreMemConfigGuid, (VOID *) &PcieRpPreMemConfig);
- ASSERT_EFI_ERROR (Status);
- Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gHdAudioPreMemConfigGuid, (VOID *) &HdaPreMemConfig);
- ASSERT_EFI_ERROR (Status);
- Status = GetConfigBlock ((VOID *) SiPreMemPolicy, &gIshPreMemConfigGuid, (VOID *) &IshPreMemConfig);
- ASSERT_EFI_ERROR (Status);
- DciPreMemConfig->DciUsb3TypecUfpDbg = 2;
- PchTraceHubPreMemConfig->MemReg0Size = 3;
- PchTraceHubPreMemConfig->MemReg1Size = 3;
- //
- // SMBUS
- //
- SmbusPreMemConfig->Enable = TRUE;
- SmbusPreMemConfig->SmbAlertEnable = PcdGetBool (PcdSmbusAlertEnable);
- //
- // SMBUS reserved addresses
- //
- SmBusReservedTable = NULL;
- SmBusReservedNum = 0;
- SmbusPreMemConfig->SmbusIoBase = PcdGet16 (PcdSmbusBaseAddress);
- SmBusReservedTable = mSmbusSTPRsvdAddresses;
- SmBusReservedNum = sizeof (mSmbusSTPRsvdAddresses);
- if (SmBusReservedTable != NULL) {
- SmbusPreMemConfig->NumRsvdSmbusAddresses = SmBusReservedNum;
- CopyMem (
- SmbusPreMemConfig->RsvdSmbusAddressTable,
- SmBusReservedTable,
- SmBusReservedNum
- );
- }
- return Status;
- }
|