alder_lake_bios/Intel/AlderLake/ClientOneSiliconPkg/Pch/Include/Library/PchInfoLib.h

722 lines
13 KiB
C

/** @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 <Hda.h>
#include <Uefi/UefiBaseType.h>
#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_