/** @file
Header file for PchPcieRpLib.
Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _PCH_PCIERP_LIB_H_
#define _PCH_PCIERP_LIB_H_
#include
/**
PCIe controller bifurcation configuration.
**/
typedef enum {
PcieBifurcationDefault = 0,
PcieBifurcation4x1,
PcieBifurcation1x2_2x1,
PcieBifurcation2x2,
PcieBifurcation1x4,
PcieBifurcation4x2,
PcieBifurcation1x4_2x2,
PcieBifurcation2x2_1x4,
PcieBifurcation2x4,
PcieBifurcation1x8,
PcieBifurcationUnknown,
PcieBifurcationMax
} PCIE_BIFURCATION_CONFIG;
/**
This function returns PID according to PCIe controller index
@param[in] ControllerIndex PCIe controller index
@retval PCH_SBI_PID Returns PID for SBI Access
**/
PCH_SBI_PID
PchGetPcieControllerSbiPid (
IN UINT32 ControllerIndex
);
/**
This function returns PID according to Root Port Number
@param[in] RpIndex Root Port Index (0-based)
@retval PCH_SBI_PID Returns PID for SBI Access
**/
PCH_SBI_PID
GetRpSbiPid (
IN UINTN RpIndex
);
/**
Get Pch Pcie Root Port Device and Function Number by Root Port physical Number
@param[in] RpNumber Root port physical number. (0-based)
@param[out] RpDev Return corresponding root port device number.
@param[out] RpFun Return corresponding root port function number.
@retval EFI_SUCCESS
**/
EFI_STATUS
EFIAPI
GetPchPcieRpDevFun (
IN UINTN RpNumber,
OUT UINTN *RpDev,
OUT UINTN *RpFun
);
/**
Get Root Port physical Number by Pch Pcie Root Port Device and Function Number
@param[in] RpDev Root port device number.
@param[in] RpFun Root port function number.
@param[out] RpNumber Return corresponding physical Root Port index (0-based)
@retval EFI_SUCCESS Physical root port is retrieved
@retval EFI_INVALID_PARAMETER RpDev and/or RpFun are invalid
@retval EFI_UNSUPPORTED Root port device and function is not assigned to any physical root port
**/
EFI_STATUS
EFIAPI
GetPchPcieRpNumber (
IN UINTN RpDev,
IN UINTN RpFun,
OUT UINTN *RpNumber
);
/**
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
);
/**
Determines whether L0s is supported on current stepping.
@return TRUE if L0s is supported, FALSE otherwise
**/
BOOLEAN
PchIsPcieL0sSupported (
VOID
);
/**
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
);
#endif // _PCH_PCIERP_LIB_H_