722 lines
13 KiB
C
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_
|