/** @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_