/** @file
SA Platform Lib implementation.
Copyright (c) 2019 Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include "SaPlatformLibrary.h"
#include
#include
#include
/**
Determine if PCH Link is DMI/OPI
@param[in] CpuModel CPU model
@retval TRUE DMI
@retval FALSE OPI
**/
BOOLEAN
IsPchLinkDmi (
IN CPU_FAMILY CpuModel
)
{
if ((CpuModel == EnumCpuCflDtHalo) || (CpuModel == EnumCpuCnlDtHalo)) {
return TRUE; // DMI
}
return FALSE; // OPI
}
/**
Returns the number of DMI lanes for current CPU
@retval UINT8
**/
UINT8
GetMaxDmiLanes (
)
{
return SA_DMI_CFL_MAX_LANE;
}
/**
Returns the number of DMI bundles for current CPU
@retval UINT8
**/
UINT8
GetMaxDmiBundles (
)
{
return SA_DMI_CFL_MAX_BUNDLE;
}
/**
Returns the function numbers for current CPU
@retval UINT8
**/
UINT8
GetMaxPegFuncs (
)
{
if (GetCpuFamily() == EnumCpuCnlDtHalo) {
return SA_PEG_CNL_H_MAX_FUN;
} else {
return SA_PEG_NON_CNL_H_MAX_FUN;
}
}
/**
Returns the number of PEG lanes for current CPU
@retval UINT8
**/
UINT8
GetMaxPegLanes (
)
{
if (GetCpuFamily() == EnumCpuCnlDtHalo) {
return SA_PEG_CNL_H_MAX_LANE;
} else {
return SA_PEG_NON_CNL_H_MAX_LANE;
}
}
/**
Returns the number of PEG bundles for current CPU
@retval UINT8
**/
UINT8
GetMaxPegBundles (
)
{
if (GetCpuFamily() == EnumCpuCnlDtHalo) {
return SA_PEG_CNL_H_MAX_BUNDLE;
} else {
return SA_PEG_NON_CNL_H_MAX_BUNDLE;
}
}
/**
Checks if PEG port is present
@retval TRUE PEG is presented
@retval FALSE PEG is not presented
**/
BOOLEAN
IsPegPresent (
VOID
)
{
UINT64 PegBaseAddress;
PegBaseAddress = PCI_SEGMENT_LIB_ADDRESS (SA_SEG_NUM, SA_PEG_BUS_NUM, SA_PEG_DEV_NUM, 0, 0);
if (PciSegmentRead16 (PegBaseAddress) != 0xFFFF) {
return TRUE;
}
return FALSE;
}