/** @file Header file for PchInfoLib. @copyright INTEL CONFIDENTIAL Copyright 2014 - 2021 Intel Corporation. The source code contained or described herein and all documents related to the source code ("Material") are owned by Intel Corporation or its suppliers or licensors. Title to the Material remains with Intel Corporation or its suppliers and licensors. The Material may contain trade secrets and proprietary and confidential information of Intel Corporation and its suppliers and licensors, and is protected by worldwide copyright and trade secret laws and treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted, transmitted, distributed, or disclosed in any way without Intel's prior express written permission. No license under any patent, copyright, trade secret or other intellectual property right is granted to or conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement, estoppel or otherwise. Any license under such intellectual property rights must be express and approved by Intel in writing. Unless otherwise agreed by Intel in writing, you may not remove or alter this notice or any other notice embedded in Materials by Intel or Intel's suppliers or licensors in any way. This file contains an 'Intel Peripheral Driver' and is uniquely identified as "Intel Reference Module" and is licensed for Intel CPUs and chipsets under the terms of your license agreement with Intel or your vendor. This file may be modified by the user, subject to additional terms of the license agreement. @par Specification Reference: **/ #ifndef _PCH_INFO_LIB_H_ #define _PCH_INFO_LIB_H_ #include #include #include "PchInfoDefs.h" typedef UINT8 PCH_STEPPING; typedef UINT8 PCH_SERIES; typedef UINT8 PCH_GENERATION; typedef enum { RstUnsupported = 0, RstPremium, RstOptane, RstMaxMode } RST_MODE; /** Return LPC Device Id @retval PCH_LPC_DEVICE_ID PCH Lpc Device ID **/ UINT16 PchGetLpcDid ( VOID ); /** Return Pch stepping type @retval PCH_STEPPING Pch stepping type **/ PCH_STEPPING PchStepping ( VOID ); /** Determine if PCH is supported @retval TRUE PCH is supported @retval FALSE PCH is not supported **/ BOOLEAN IsPchSupported ( VOID ); /** Return Pch Series @retval PCH_SERIES Pch Series **/ PCH_SERIES PchSeries ( VOID ); /** Check if this is PCH LP series @retval TRUE It's PCH LP series @retval FALSE It's not PCH LP series **/ BOOLEAN IsPchLp ( VOID ); /** Check if this is PCH H series @retval TRUE It's PCH H series @retval FALSE It's not PCH H series **/ BOOLEAN IsPchH ( VOID ); /** Check if this is PCH N series @retval TRUE It's PCH N series @retval FALSE It's not PCH N series **/ BOOLEAN IsPchN ( VOID ); /** Check if this is PCH P series @retval TRUE It's PCH P series @retval FALSE It's not PCH P series **/ BOOLEAN IsPchP ( VOID ); /** Check if this is PCH M series @retval TRUE It's PCH M series @retval FALSE It's not PCH M series **/ BOOLEAN IsPchM ( VOID ); /** Check if this is PCH S series @retval TRUE It's PCH S series @retval FALSE It's not PCH S series **/ BOOLEAN IsPchS ( VOID ); /** Check if this is Server PCH @retval TRUE It's a Server PCH @retval FALSE It's not a Server PCH **/ BOOLEAN IsPchServer ( VOID ); /** Return Pch Generation @retval PCH_GENERATION Pch Generation **/ PCH_GENERATION PchGeneration ( VOID ); /** Check if this is EBG PCH generation @retval TRUE It's EBG PCH @retval FALSE It's not EBG PCH **/ BOOLEAN IsEbgPch ( VOID ); /** Check if this is ADL PCH generation @retval TRUE It's ADL PCH @retval FALSE It's not ADL PCH **/ BOOLEAN IsAdlPch ( VOID ); /** Check if this is S3m2.0 IBL generation @retval TRUE It's S3m 2.0 IBL @retval FALSE It's not S3m 2.0 IBL **/ BOOLEAN IsS3m2Ibl ( VOID ); /** Get Pch Maximum Pcie Root Port Number @retval PcieMaxRootPort Pch Maximum Pcie Root Port Number **/ UINT8 GetPchMaxPciePortNum ( VOID ); /** Get Pch Maximum Pcie Controller Number @retval Pch Maximum Pcie Controller Number **/ UINT8 GetPchMaxPcieControllerNum ( VOID ); /** Get Pch Maximum Pcie Clock Number @retval Pch Maximum Pcie Clock Number **/ UINT8 GetPchMaxPcieClockNum ( VOID ); /** Get Pch Maximum Pcie ClockReq Number @retval Pch Maximum Pcie ClockReq Number **/ UINT8 GetPchMaxPcieClockReqNum ( VOID ); /** Get Pch Usb2 Maximum Physical Port Number @retval Pch Usb2 Maximum Physical Port Number **/ UINT8 GetPchUsb2MaxPhysicalPortNum ( VOID ); /** Get Pch Maximum Usb2 Port Number of XHCI Controller @retval Pch Maximum Usb2 Port Number of XHCI Controller **/ UINT8 GetPchXhciMaxUsb2PortNum ( VOID ); /** Get Pch Usb3 Maximum Physical Port Number @retval Pch Usb3 Maximum Physical Port Number **/ UINT8 GetPchUsb3MaxPhysicalPortNum ( VOID ); /** Get Pch Maximum Usb3 Port Number of XHCI Controller @retval Pch Maximum Usb3 Port Number of XHCI Controller **/ UINT8 GetPchXhciMaxUsb3PortNum ( VOID ); /** Get Pch USB-R Port Number for KVM session @retval Pch USB-R Port Number for KVM session **/ UINT8 GetPchUsbrKvmPortNum ( VOID ); /** Get Pch USB-R Port Number for Storage session @retval Pch USB-R Port Number for Storage session **/ UINT8 GetPchUsbrStoragePortNum ( VOID ); /** Get Pch Maximum Serial IO I2C controllers number @retval Pch Maximum Serial IO I2C controllers number **/ UINT8 GetPchMaxSerialIoI2cControllersNum ( VOID ); /** Get Pch Maximum Serial IO I3C controllers number @retval Pch Maximum Serial IO I3C controllers number **/ UINT8 GetPchMaxSerialIoI3cControllersNum ( VOID ); /** Get Pch Maximum Serial IO SPI controllers number @retval Pch Maximum Serial IO SPI controllers number **/ UINT8 GetPchMaxSerialIoSpiControllersNum ( VOID ); /** Get Pch Maximum Serial IO UART controllers number @retval Pch Maximum Serial IO UART controllers number **/ UINT8 GetPchMaxSerialIoUartControllersNum ( VOID ); /** Get Pch Maximum Serial IO SPI Chip Selects count @retval Pch Maximum Serial IO SPI Chip Selects nu,ber **/ UINT8 GetPchMaxSerialIoSpiChipSelectsNum ( VOID ); /** Get Pch Maximum ISH UART Controller number @retval Pch Maximum ISH UART controllers number **/ UINT8 GetPchMaxIshUartControllersNum ( VOID ); /** Get Pch Maximum ISH I2C Controller number @retval Pch Maximum ISH I2C controllers number **/ UINT8 GetPchMaxIshI2cControllersNum ( VOID ); /** Get Pch Maximum ISH SPI Controller number @retval Pch Maximum ISH SPI controllers number **/ UINT8 GetPchMaxIshSpiControllersNum ( VOID ); /** Get Pch Maximum ISH SPI Controller Cs pins number @retval Pch Maximum ISH SPI controller Cs pins number **/ UINT8 GetPchMaxIshSpiControllerCsPinsNum ( VOID ); /** Get Pch Maximum ISH GP number @retval Pch Maximum ISH GP number **/ UINT8 GetPchMaxIshGpNum ( VOID ); /** Get Pch Maximum ME Applet count @retval Pch Maximum ME Applet number **/ UINT8 GetPchMaxMeAppletCount ( VOID ); /** Get Pch Maximum ME Session count @retval Pch Maximum ME Sesion number **/ UINT8 GetPchMaxMeSessionCount( VOID ); /** Get Pch Maximum Type C Port Number @retval Pch Maximum Type C Port Number **/ UINT8 GetPchMaxTypeCPortNum ( VOID ); #define PCH_STEPPING_STR_LENGTH_MAX 3 /** Get PCH stepping ASCII string. Function determines major and minor stepping versions and writes them into a buffer. The return string is zero terminated @param [out] Buffer Output buffer of string @param [in] BufferSize Buffer size. Must not be less then PCH_STEPPING_STR_LENGTH_MAX @retval EFI_SUCCESS String copied successfully @retval EFI_INVALID_PARAMETER The stepping is not supported, or parameters are NULL @retval EFI_BUFFER_TOO_SMALL Input buffer size is too small **/ EFI_STATUS PchGetSteppingStr ( OUT CHAR8 *Buffer, IN UINT32 BufferSize ); /** Get PCH series ASCII string. The return string is zero terminated. @retval Static ASCII string of PCH Series **/ CHAR8* PchGetSeriesStr ( ); /** Get PCH Sku ASCII string The return string is zero terminated. @retval Static ASCII string of PCH Sku **/ CHAR8* PchGetSkuStr ( VOID ); /** Check if this chipset supports eMMC controller @retval BOOLEAN TRUE if supported, FALSE otherwise **/ BOOLEAN IsPchEmmcSupported ( VOID ); /** Check if this chipset supports SD controller @retval BOOLEAN TRUE if supported, FALSE otherwise **/ BOOLEAN IsPchSdCardSupported ( VOID ); /** Check if this chipset supports THC controller @retval BOOLEAN TRUE if supported, FALSE otherwise **/ BOOLEAN IsPchThcSupported ( VOID ); /** Check if this chipset supports HSIO BIOS Sync @retval BOOLEAN TRUE if supported, FALSE otherwise **/ BOOLEAN IsPchChipsetInitSyncSupported ( VOID ); /** Gets the maximum number of UFS controller supported by this chipset. @return Number of supported UFS controllers **/ UINT8 PchGetMaxUfsNum ( VOID ); /** Get RST mode supported by the silicon @retval RST_MODE RST mode supported by silicon **/ RST_MODE PchGetSupportedRstMode ( VOID ); /** Check whether integrated LAN controller is supported. @retval TRUE GbE is supported in PCH @retval FALSE GbE is not supported by PCH **/ BOOLEAN PchIsGbeSupported ( VOID ); /** Check whether integrated TSN is supported. @retval TRUE TSN is supported in current PCH @retval FALSE TSN is not supported on current PCH **/ BOOLEAN PchIsTsnSupported ( VOID ); /** Check whether ISH is supported. @retval TRUE ISH is supported in PCH @retval FALSE ISH is not supported by PCH **/ BOOLEAN PchIsIshSupported ( VOID ); /** Check whether ATX Shutdown (PS_ON) is supported. @retval TRUE ATX Shutdown (PS_ON) is supported in PCH @retval FALSE ATX Shutdown (PS_ON) is not supported by PCH **/ BOOLEAN IsPchPSOnSupported ( VOID ); /** Get Pch Maximum Hda Sndw Link @retval Pch Maximum Hda Sndw Link **/ UINT8 GetPchHdaMaxSndwLinkNum ( VOID ); /** Get Pch Maximum Hda Ssp Link @retval Pch Maximum Hda Ssp Link **/ UINT8 GetPchHdaMaxSspLinkNum ( VOID ); /** Get Pch Maximum Hda Dmic Link @retval Pch Maximum Hda Dmic Link **/ UINT8 GetPchHdaMaxDmicLinkNum ( VOID ); /** Check if given Audio Interface is supported @param[in] AudioLinkType Link type support to be checked @param[in] AudioLinkIndex Link number @retval TRUE Link supported @retval FALSE Link not supported **/ BOOLEAN IsAudioInterfaceSupported ( IN HDAUDIO_LINK_TYPE AudioLinkType, IN UINT32 AudioLinkIndex ); /** Check if link between PCH and CPU is an P-DMI @retval TRUE P-DMI link @retval FALSE Not an P-DMI link **/ BOOLEAN IsPchWithPdmi ( VOID ); /** Check if link between PCH and CPU is an OP-DMI @retval TRUE OP-DMI link @retval FALSE Not an OP-DMI link **/ BOOLEAN IsPchWithOpdmi ( VOID ); /** Check if link between PCH and CPU is an F-DMI @retval TRUE F-DMI link @retval FALSE Not an F-DMI link **/ BOOLEAN IsPchWithFdmi ( VOID ); /** Get Pch Maximum THC count @retval Pch Maximum THC count number **/ UINT8 GetPchMaxThcCount ( VOID ); /** Check if this generation supports THC controller in HID over SPI mode @retval THC HID Mode support **/ BOOLEAN IsPchThcHidModeSupported ( VOID ); /** return support status for P2SB PCR 20-bit addressing @retval TRUE @retval FALSE **/ BOOLEAN IsP2sb20bPcrSupported ( VOID ); /** Check if SPI in a given PCH generation supports an Extended BIOS Range Decode @retval TRUE or FALSE if PCH supports Extended BIOS Range Decode **/ BOOLEAN IsExtendedBiosRangeDecodeSupported ( VOID ); /** Returns DMI target for current PCH SPI @retval PCH SPI DMI target **/ UINT16 GetPchSpiDmiTarget ( VOID ); #endif // _PCH_INFO_LIB_H_