/** @file
Copyright (c) 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _PCH_INFO_LIB_H_
#define _PCH_INFO_LIB_H_
#include
typedef enum {
PchH = 1,
PchLp,
PchUnknownSeries
} PCH_SERIES;
typedef enum {
SklPch = 1,
PchUnknownGeneration
} PCH_GENERATION;
/**
Return Pch stepping type
@retval PCH_STEPPING Pch stepping type
**/
PCH_STEPPING
EFIAPI
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
EFIAPI
GetPchSeries (
VOID
);
/**
Return Pch Generation
@retval PCH_GENERATION Pch Generation
**/
PCH_GENERATION
EFIAPI
GetPchGeneration (
VOID
);
/**
Get Pch Maximum Pcie Root Port Number
@retval PcieMaxRootPort Pch Maximum Pcie Root Port Number
**/
UINT8
EFIAPI
GetPchMaxPciePortNum (
VOID
);
/**
Get Pch Maximum Sata Port Number
@retval Pch Maximum Sata Port Number
**/
UINT8
EFIAPI
GetPchMaxSataPortNum (
VOID
);
/**
Get Pch Usb Maximum Physical Port Number
@retval Pch Usb Maximum Physical Port Number
**/
UINT8
EFIAPI
GetPchUsbMaxPhysicalPortNum (
VOID
);
/**
Get Pch Maximum Usb2 Port Number of XHCI Controller
@retval Pch Maximum Usb2 Port Number of XHCI Controller
**/
UINT8
EFIAPI
GetPchXhciMaxUsb2PortNum (
VOID
);
/**
Get Pch Maximum Usb3 Port Number of XHCI Controller
@retval Pch Maximum Usb3 Port Number of XHCI Controller
**/
UINT8
EFIAPI
GetPchXhciMaxUsb3PortNum (
VOID
);
/**
Return TRUE if Server Sata is present
@retval BOOLEAN TRUE if sSata device is present
**/
BOOLEAN
EFIAPI
GetIsPchsSataPresent (
VOID
);
/**
Get Pch Maximum sSata Port Number
@param[in] None
@retval Pch Maximum sSata Port Number
**/
UINT8
EFIAPI
GetPchMaxsSataPortNum (
VOID
);
/**
Get Pch Maximum sSata Controller Number
@param[in] None
@retval Pch Maximum sSata Controller Number
**/
UINT8
EFIAPI
GetPchMaxsSataControllerNum (
VOID
);
/**
Return Pch Lpc Device Id
@retval UINT16 Pch DeviceId
**/
UINT16
EFIAPI
GetPchLpcDeviceId (
VOID
);
/**
Get PCH stepping ASCII string
The return string is zero terminated.
@param [in] PchStep Pch stepping
@param [out] Buffer Output buffer of string
@param [in,out] BufferSize Size of input buffer,
and return required string size when buffer is too small.
@retval EFI_SUCCESS String copy 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 (
IN PCH_STEPPING PchStep,
OUT CHAR8 *Buffer,
IN OUT UINT32 *BufferSize
);
/**
Get PCH series ASCII string
The return string is zero terminated.
@param [in] PchSeries Pch series
@param [out] Buffer Output buffer of string
@param [in,out] BufferSize Size of input buffer,
and return required string size when buffer is too small.
@retval EFI_SUCCESS String copy successfully
@retval EFI_INVALID_PARAMETER The series is not supported, or parameters are NULL
@retval EFI_BUFFER_TOO_SMALL Input buffer size is too small
**/
EFI_STATUS
PchGetSeriesStr (
IN PCH_SERIES PchSeries,
OUT CHAR8 *Buffer,
IN OUT UINT32 *BufferSize
);
/**
Get PCH Sku ASCII string
The return string is zero terminated.
@param [in] LpcDid LPC device id
@param [out] Buffer Output buffer of string
@param [in,out] BufferSize Size of input buffer,
and return required string size when buffer is too small.
@retval EFI_SUCCESS String copy successfully
@retval EFI_INVALID_PARAMETER The series is not supported, or parameters are NULL
@retval EFI_BUFFER_TOO_SMALL Input buffer size is too small
**/
EFI_STATUS
PchGetSkuStr (
IN UINT16 LpcDid,
OUT CHAR8 *Buffer,
IN OUT UINT32 *BufferSize
);
#endif // _PCH_INFO_LIB_H_