/** @file
|
PCIE root port library.
|
All function in this library is available for PEI, DXE, and SMM,
|
But do not support UEFI RUNTIME environment call.
|
|
Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
**/
|
|
#include <Base.h>
|
#include <Uefi/UefiBaseType.h>
|
#include <Library/IoLib.h>
|
#include <Library/DebugLib.h>
|
#include <Library/BaseLib.h>
|
#include <Library/PciSegmentLib.h>
|
#include <Library/PchInfoLib.h>
|
#include <Library/PchPcrLib.h>
|
#include <Library/PchPcieRpLib.h>
|
#include <PcieRegs.h>
|
#include <Register/PchRegs.h>
|
#include <PchPcieRpInfo.h>
|
#include <Register/PchPcieRpRegs.h>
|
#include <Register/PchPcrRegs.h>
|
#include <Library/PchPciBdfLib.h>
|
|
#include "PchPcieRpLibInternal.h"
|
|
/**
|
Gets pci segment base address of PCIe root port.
|
|
@param RpIndex Root Port Index (0 based)
|
@return PCIe port base address.
|
**/
|
UINT64
|
PchPcieBase (
|
IN UINT32 RpIndex
|
)
|
{
|
return PchPcieRpPciCfgBase (RpIndex);
|
}
|
|
/**
|
Determines whether L0s is supported on current stepping.
|
|
@return TRUE if L0s is supported, FALSE otherwise
|
**/
|
BOOLEAN
|
PchIsPcieL0sSupported (
|
VOID
|
)
|
{
|
return TRUE;
|
}
|
|
/**
|
Some early PCH steppings require Native ASPM to be disabled due to hardware issues:
|
- RxL0s exit causes recovery
|
- Disabling PCIe L0s capability disables L1
|
Use this function to determine affected steppings.
|
|
@return TRUE if Native ASPM is supported, FALSE otherwise
|
**/
|
BOOLEAN
|
PchIsPcieNativeAspmSupported (
|
VOID
|
)
|
{
|
return PchIsPcieL0sSupported ();
|
}
|