/** @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_