/** @file Header file for PchInfoLib. Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _PCH_INFO_LIB_H_ #define _PCH_INFO_LIB_H_ #include #include typedef UINT8 PCH_STEPPING; typedef UINT8 PCH_SERIES; #define PCH_LP 2 typedef UINT8 PCH_GENERATION; #define TGL_PCH 5 typedef enum { RstUnsupported = 0, RstPremium, RstOptane, RstMaxMode } RST_MODE; /** Return Pch stepping type @retval PCH_STEPPING Pch stepping type **/ PCH_STEPPING PchStepping ( VOID ); /** Return Pch Series @retval PCH_SERIES Pch Series **/ PCH_SERIES PchSeries ( VOID ); /** Return Pch Generation @retval PCH_GENERATION Pch Generation **/ PCH_GENERATION PchGeneration ( VOID ); /** Check if this is TGL PCH generation @retval TRUE It's TGL PCH @retval FALSE It's not TGL PCH **/ BOOLEAN IsTglPch ( 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 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 ); /** 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 I3C Controller number @retval Pch Maximum ISH I3C controllers number **/ UINT8 GetPchMaxIshI3cControllersNum ( 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 ( ); /** 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 ); /** 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 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 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 ); /** Get Pch Maximum THC count @retval Pch Maximum THC count number **/ UINT8 GetPchMaxThcCount ( VOID ); typedef enum { SataSosc125Mhz = 0, SataSosc120Mhz, SataSosc100Mhz, SataSosc25Mhz, SataSosc19p2Mhz, SataSoscUnsupported } SATA_SOSC_CLK_FREQ; /** Returns a frequency of the sosc_clk signal. All SATA controllers on the system are assumed to work on the same sosc_clk frequency. @retval Frequency of the sosc_clk signal. **/ SATA_SOSC_CLK_FREQ GetSataSoscClkFreq ( VOID ); /** Check if SATA support should be awake after function disable @retval TRUE @retval FALSE **/ BOOLEAN IsSataSupportWakeAfterFunctionDisable ( VOID ); // // USB2 PHY reference frequencies values (MHz) // typedef enum { FREQ_19_2 = 0u, FREQ_24_0, FREQ_96_0, FREQ_MAX } USB2_PHY_REF_FREQ; /** Returns USB2 PHY Reference Clock frequency value used by PCH This defines what electrical tuning parameters shall be used during USB2 PHY initialization programming @retval Frequency reference clock for USB2 PHY **/ USB2_PHY_REF_FREQ GetUsb2PhyRefFreq ( 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_