/** @file
Dynamic link silicon library service access Protocol
This protocol abstracts silicon static library accesses via a protocol
@copyright
Copyright 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _DYNAMIC_SI_LIBARY_PROTOCOL_H_
#define _DYNAMIC_SI_LIBARY_PROTOCOL_H_
#include
#include
#include
#include
#include
#include
#include
#define DYNAMIC_SI_LIBARY_PROTOCOL_GUID \
{ 0xb235fbed, 0x3b25, 0x4cb3, { 0x98, 0x9c, 0x8c, 0xe7, 0xec, 0x49, 0x8b, 0x7e } }
#define DYNAMIC_SI_LIBARY_PROTOCOL_SIGNATURE SIGNATURE_32('D', 'S', 'L', 'P')
#define DYNAMIC_SI_LIBARY_PROTOCOL_VERSION 0x01
//
// Functions
//
typedef
EFI_STATUS
(EFIAPI *DXE_SET_GPIO_OUTPUT_VALUE) (
IN UINT32 GPioPad,
IN UINT32 Value
);
typedef
BOOLEAN
(EFIAPI *DXE_IsCpuAndRevision) (
IN UINT8 CpuType,
IN UINT16 Revision
);
typedef
CPU_VAR_DATA *
(EFIAPI *DXE_GetCpuVarData) (
);
typedef
UINT8
(EFIAPI *DXE_MaxSataControllerNum) (
VOID
);
typedef
UINTN
(EFIAPI *DXE_MmPciBase) (
IN UINT32 Bus,
IN UINT32 Device,
IN UINT32 Function
);
typedef
CPU_CSR_ACCESS_VAR *
(EFIAPI *DXE_GetSysCpuCsrAccessVar) (
VOID
);
typedef
VOID
(EFIAPI *DXE_IioPciHookBeforeEnumeration) (
IN UINT8 Segment,
IN UINT8 Bus,
IN UINT8 Device,
IN UINT8 Function,
IN UINT32 DidVid
);
typedef
CHAR8*
(EFIAPI *DXE_PchGetSeriesStr) (
);
typedef
EFI_STATUS
(EFIAPI *DXE_PchGetSteppingStr) (
OUT CHAR8 *Buffer,
IN UINT32 BufferSize
);
typedef
CHAR8*
(EFIAPI *DXE_PchGetSkuStr) (
VOID
);
typedef
EFI_STATUS
(EFIAPI *DXE_SaveVariableFromHob) (
IN EFI_GUID HobGuid,
IN CHAR16 *VariableName,
IN EFI_GUID VariableGuid
);
typedef
VOID
(EFIAPI *DXE_SetColdBootSlowRequired) (
IN BOOLEAN ColdBootSlowRequired
);
typedef
SYS_INFO_VAR_NVRAM *
(EFIAPI *DXE_GetSysInfoVarNvramPtr) (
VOID
);
typedef
BOOLEAN
(EFIAPI *DXE_HybridSystemLevelEmulationEnabled) (
VOID
);
typedef
SYSTEM_MEMORY_MAP_HOB *
(EFIAPI *DXE_GetSystemMemoryMapData) (
VOID
);
typedef
BOOLEAN
(EFIAPI *DXE_X2ApicIdDetect) (
IN VOID *Host
);
typedef
RETURN_STATUS
(EFIAPI *DXE_RegisterRead) (
IN USRA_ADDRESS *Address,
IN VOID *Buffer
);
typedef
RETURN_STATUS
(EFIAPI *DXE_RegisterWrite) (
IN USRA_ADDRESS *Address,
IN VOID *Buffer
);
typedef
UINT8
(EFIAPI *DXE_SataDevNumber) (
IN UINT32 SataCtrlIndex
);
typedef
UINT8
(EFIAPI *DXE_SataFuncNumber) (
IN UINT32 SataCtrlIndex
);
typedef
UINT16
(EFIAPI *DXE_PmcGetAcpiBase) (
VOID
);
typedef
UINTN
(EFIAPI *DXE_PchGetPmcBaseByPchId) (
IN UINT8 PchId
);
typedef
VOID
(EFIAPI *DXE_SetBiosInfoFlagWpe) (
VOID
);
typedef
VOID
(EFIAPI *DXE_ProgramGenProtRangeRegs) (
IIO_UDS *IioUds
);
typedef
VOID
(EFIAPI *DXE_ProgramImrRegs) (
IIO_UDS *IioUds
);
typedef
VOID
(EFIAPI *DXE_ProgramImr2Regs) (
IIO_UDS *IioUds
);
typedef
VOID
(EFIAPI *DXE_CheckAndPopulateIedTraceMemory) (
UINTN IedTraceSize,
IIO_UDS *IioUds
);
typedef
UINT32
(EFIAPI *DXE_ReadScratchpad7) (
VOID
);
//
// UBA specific silicon abstraction protocol
//
typedef struct {
UINT32 Signature;
UINT32 Version;
DXE_GetCpuVarData GetCpuVarData;
DXE_IsCpuAndRevision IsCpuAndRevision;
DXE_MaxSataControllerNum MaxSataControllerNum;
DXE_MmPciBase MmPciBase;
DXE_GetSysCpuCsrAccessVar GetSysCpuCsrAccessVar;
DXE_IioPciHookBeforeEnumeration IioPciHookBeforeEnumeration;
DXE_SET_GPIO_OUTPUT_VALUE GpioSetOutputValue;
DXE_PchGetSeriesStr PchGetSeriesStr;
DXE_PchGetSteppingStr PchGetSteppingStr;
DXE_PchGetSkuStr PchGetSkuStr;
DXE_SaveVariableFromHob SaveVariableFromHob;
DXE_SetColdBootSlowRequired SetColdBootSlowRequired;
DXE_GetSysInfoVarNvramPtr GetSysInfoVarNvramPtr;
DXE_X2ApicIdDetect X2ApicIdDetect;
DXE_GetSystemMemoryMapData GetSystemMemoryMapData;
DXE_RegisterRead RegisterRead;
DXE_RegisterWrite RegisterWrite;
DXE_HybridSystemLevelEmulationEnabled HybridSystemLevelEmulationEnabled;
DXE_SataDevNumber SataDevNumber;
DXE_SataFuncNumber SataFuncNumber;
DXE_PmcGetAcpiBase PmcGetAcpiBase;
DXE_PchGetPmcBaseByPchId PchGetPmcBaseByPchId;
DXE_SetBiosInfoFlagWpe SetBiosInfoFlagWpe;
DXE_ProgramGenProtRangeRegs ProgramGenProtRangeRegs;
DXE_ProgramImrRegs ProgramImrRegs;
DXE_ProgramImr2Regs ProgramImr2Regs;
DXE_CheckAndPopulateIedTraceMemory CheckAndPopulateIedTraceMemory;
DXE_ReadScratchpad7 ReadScratchpad7;
} DYNAMIC_SI_LIBARY_PROTOCOL;
extern EFI_GUID gDynamicSiLibraryProtocolGuid;
#endif // _DYNAMIC_SI_LIBARY_PROTOCOL_H_