/** @file Header file for PchInfoLib. Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _PCH_INFO_LIB_H_ #define _PCH_INFO_LIB_H_ #include typedef UINT8 PCH_STEPPING; #define PCH_A0 0x00 #define PCH_A1 0x01 #define PCH_B0 0x10 #define PCH_B1 0x11 #define PCH_C0 0x20 #define PCH_C1 0x21 #define PCH_D0 0x30 #define PCH_D1 0x31 #define PCH_STEPPING_MAX 0xFF typedef UINT8 PCH_SERIES; #define PCH_H 1 #define PCH_LP 2 #define PCH_SERVER 0x80 #define PCH_UNKNOWN_SERIES 0xFF typedef UINT8 PCH_GENERATION; #define CNL_PCH 3 #define CDF_PCH 0x80 #define PCH_UNKNOWN_GENERATION 0xFF 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 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 CDF PCH generation @retval TRUE It's CDF PCH @retval FALSE It's not CDF PCH **/ BOOLEAN IsCdfPch ( VOID ); /** @retval TRUE It's CNL PCH @retval FALSE It's not CNL PCH **/ BOOLEAN IsCnlPch ( VOID ); /** Check if this is Server SKU @retval TRUE It's PCH Server SKU @retval FALSE It's not PCH Server SKU **/ BOOLEAN IsPchServerSku ( 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 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 Maximum Usb3 Port Number of XHCI Controller @retval Pch Maximum Usb3 Port Number of XHCI Controller **/ UINT8 GetPchXhciMaxUsb3PortNum ( VOID ); /** Get Pch Maximum Serial IO controllers number @retval Pch Maximum Serial IO controllers number **/ UINT8 GetPchMaxSerialIoControllersNum ( 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 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 ); #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 UFS controller @retval BOOLEAN TRUE if supported, FALSE otherwise **/ BOOLEAN IsPchUfsSupported ( 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 if given Display Audio Link T-Mode is supported @param[in] Tmode T-mode support to be checked @retval TRUE T-mode supported @retval FALSE T-mode not supported **/ BOOLEAN IsAudioIDispTmodeSupported ( IN PCH_HDAUDIO_IDISP_TMODE Tmode ); /** 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 ); #endif // _PCH_INFO_LIB_H_