/** @file Header file for PchPcieRpLib. Copyright (c) 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _PCH_PCIERP_LIB_H_ #define _PCH_PCIERP_LIB_H_ #define RST_PCIE_STORAGE_CR_1 0 #define RST_PCIE_STORAGE_CR_2 1 #define RST_PCIE_STORAGE_CR_3 2 #define RST_PCIE_STORAGE_CR_INVALID 99 typedef struct { UINT8 DevNum; UINT8 Pid; UINT8 RpNumBase; } PCH_PCIE_CONTROLLER_INFO; /** 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 base address of PCIe root port. @param RpIndex Root Port Index (0 based) @return PCIe port base address. **/ UINTN 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 SKL 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 ); /** Check the RST PCIe Storage Cycle Router number according to the root port number and PCH type @param[in] RootPortNum Root Port Number @retval UINT32 The RST PCIe Storage Cycle Router Number **/ UINT32 RstGetCycleRouterNumber ( IN UINT32 RootPortNum ); #endif // _PCH_PCIERP_LIB_H_