diff options
author | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
---|---|---|
committer | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
commit | b7c51c9cf4864df6aabb99a1ae843becd577237c (patch) | |
tree | eebe9b0d0ca03062955223097e57da84dd618b9a /Core/EM/SMBIOS/SmbiosPeim | |
download | zprj-master.tar.xz |
Diffstat (limited to 'Core/EM/SMBIOS/SmbiosPeim')
-rw-r--r-- | Core/EM/SMBIOS/SmbiosPeim/SmbiosPei.c | 201 | ||||
-rw-r--r-- | Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.cif | 11 | ||||
-rw-r--r-- | Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.dxs | 66 | ||||
-rw-r--r-- | Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.mak | 89 | ||||
-rw-r--r-- | Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.sdl | 32 |
5 files changed, 399 insertions, 0 deletions
diff --git a/Core/EM/SMBIOS/SmbiosPeim/SmbiosPei.c b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPei.c new file mode 100644 index 0000000..e5869b0 --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPei.c @@ -0,0 +1,201 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2014, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** + +//********************************************************************** +// $Header: /Alaska/SOURCE/Modules/SMBIOS/SmbiosPeim/SmbiosPei.c 1 5/27/14 1:44p Davidd $ +// +// $Revision: 1 $ +// +// $Date: 5/27/14 1:44p $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SMBIOS/SmbiosPeim/SmbiosPei.c $ +// +// 1 5/27/14 1:44p Davidd +// [TAG] EIP103526 +// [Category] Improvement +// [Files] SmbiosPeim.cif +// SmbiosPeim.sdl +// SmbiosPeim.mak +// SmbiosPeim.dxs +// SmbiosPei.c +// +// 1 4/29/14 4:44p Davidd +// [TAG] EIP103526 +// [Category] Improvement +// [Description] We should update Wake-up Type in SMBIOS type 1 +// dynamically +// [Files] Core\EM\SMBios\SmbiosPeim\SmbiosPeim.cif +// Core\EM\SMBios\SmbiosPeim\SmbiosPeim.sdl +// Core\EM\SMBios\SmbiosPeim\SmbiosPeim.mak +// Core\EM\SMBios\SmbiosPeim\SmbiosPeim.dxs +// Core\EM\SMBios\SmbiosPeim\SmbiosPei.c +// +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: SmbiosPei.c +// +// Description: +// +//<AMI_FHDR_END> +//********************************************************************** + +#include <AmiPeiLib.h> +#include <Ppi\ReadOnlyVariable2.h> +#include "Core\Ppi\MemoryDiscovered.h" + +extern VOID OemRuntimeShadowRamWrite(IN BOOLEAN Enable); +extern UINT8 getWakeupTypeForSmbios(VOID); + +EFI_STATUS +SmbiosAfterInitMemory( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *NullPpi +); + +static EFI_GUID gPeiPermanentMemInstalledPpiGuid = PEI_PERMANENT_MEMORY_INSTALLED_PPI_GUID; + +static EFI_PEI_NOTIFY_DESCRIPTOR SmbiosPeiNotify[] = +{ + { + EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST, + &gPeiPermanentMemInstalledPpiGuid, + SmbiosAfterInitMemory + } +}; + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: UpdateSmbiosWakeupType +// +// Description: Detect and update SMBIOS Type 1 structure "Wake-up Type" +// data field +// +// Input:IN EFI_PEI_SERVICES **PeiServices, +// +// Output: Updated SMBIOS Type 1 "Wake-up Type" +// +// Notes: +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +VOID +UpdateSmbiosWakeupType( + IN EFI_PEI_SERVICES **PeiServices +) +{ + EFI_STATUS Status; + EFI_PEI_READ_ONLY_VARIABLE2_PPI *ReadOnlyVariable; + EFI_GUID EfiPeiReadOnlyVariablePpiGuid = \ + {0x2ab86ef5, 0xecb5, 0x4134, {0xb5, 0x56, 0x38, 0x54, 0xca, 0x1f, 0xe1, 0xb4}}; + EFI_GUID EfiSmbiosNvramGuid = \ + {0x4b3082a3, 0x80c6, 0x4d7e, {0x9c, 0xd0, 0x58, 0x39, 0x17, 0x26, 0x5d, 0xf1}}; + UINTN DataSize = 4; + UINT32 WakeupTypePtr; + + Status = (*PeiServices)->LocatePpi( + PeiServices, + &EfiPeiReadOnlyVariablePpiGuid, + 0, + NULL, + &ReadOnlyVariable); + ASSERT_PEI_ERROR(PeiServices, Status); + + if (Status == EFI_SUCCESS){ + Status = ReadOnlyVariable->GetVariable( + ReadOnlyVariable, + L"WakeUpType", + &EfiSmbiosNvramGuid, + NULL, + &DataSize, + &WakeupTypePtr); + if (Status == EFI_SUCCESS) { + if (WakeupTypePtr > 0xf0000) { + *(UINT8*)WakeupTypePtr = getWakeupTypeForSmbios(); + } + else { + OemRuntimeShadowRamWrite(TRUE); + *(UINT8*)WakeupTypePtr = getWakeupTypeForSmbios(); + OemRuntimeShadowRamWrite(FALSE); + } + } + } +} + +//<AMI_PHDR_START> +//---------------------------------------------------------------------------- +// Procedure: SmbiosAfterInitMemory +// +// Description: +// +// Input: IN EFI_PEI_SERVICES **PeiServices, +// IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, +// IN VOID *NullPpi +// +// Output: +// +//---------------------------------------------------------------------------- +//<AMI_PHDR_END> +EFI_STATUS +SmbiosAfterInitMemory( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *NullPpi +) +{ + EFI_STATUS Status; + EFI_BOOT_MODE BootMode; + + // Determine boot mode + Status = (*PeiServices)->GetBootMode(PeiServices, &BootMode); + ASSERT_PEI_ERROR(PeiServices, Status); + + if (BootMode == BOOT_ON_S3_RESUME) { + UpdateSmbiosWakeupType(PeiServices); + } + + return EFI_SUCCESS; +} + +EFI_STATUS +SmbiosPeiEntryPoint( + IN EFI_FFS_FILE_HEADER *FfsHeader, + IN EFI_PEI_SERVICES **PeiServices +) +{ + EFI_STATUS Status; + + // Set the Smbios Notify PPI + Status = (*PeiServices)->NotifyPpi(PeiServices, SmbiosPeiNotify); + ASSERT_PEI_ERROR(PeiServices, Status); + + return EFI_SUCCESS; +} + +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2014, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//**********************************************************************
\ No newline at end of file diff --git a/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.cif b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.cif new file mode 100644 index 0000000..d13b0a1 --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.cif @@ -0,0 +1,11 @@ +<component> + name = "SmbiosPeim" + category = ModulePart + LocalRoot = "Core\EM\SMBIOS\SmbiosPeim" + RefName = "SmbiosPeim" +[files] +"SmbiosPeim.sdl" +"SmbiosPeim.mak" +"SmbiosPeim.dxs" +"SmbiosPei.c" +<endComponent> diff --git a/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.dxs b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.dxs new file mode 100644 index 0000000..c769128 --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.dxs @@ -0,0 +1,66 @@ +//**********************************************************************// +//**********************************************************************// +//** **// +//** (C)Copyright 1985-2014, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//**********************************************************************// +//**********************************************************************// + +//**********************************************************************// +// $Header: /Alaska/SOURCE/Modules/SMBIOS/SmbiosPeim/SmbiosPeim.dxs 1 5/27/14 1:44p Davidd $ +// +// $Revision: 1 $ +// +// $Date: 5/27/14 1:44p $ +//**********************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/SMBIOS/SmbiosPeim/SmbiosPeim.dxs $ +// +// 1 5/27/14 1:44p Davidd +// [TAG] EIP103526 +// [Category] Improvement +// [Files] SmbiosPeim.cif +// SmbiosPeim.sdl +// SmbiosPeim.mak +// SmbiosPeim.dxs +// SmbiosPei.c +// +// 1 4/29/14 4:44p Davidd +// [TAG] EIP103526 +// [Category] Improvement +// [Description] We should update Wake-up Type in SMBIOS type 1 +// dynamically +// [Files] Core\EM\SMBios\SmbiosPeim\SmbiosPeim.cif +// Core\EM\SMBios\SmbiosPeim\SmbiosPeim.sdl +// Core\EM\SMBios\SmbiosPeim\SmbiosPeim.mak +// Core\EM\SMBios\SmbiosPeim\SmbiosPeim.dxs +// Core\EM\SMBios\SmbiosPeim\SmbiosPei.c +// +//**********************************************************************// + +#include "ppi\ReadOnlyVariable2.h" + +DEPENDENCY_START + EFI_PEI_READ_ONLY_VARIABLE2_PPI_GUID +DEPENDENCY_END + +//**********************************************************************// +//**********************************************************************// +//** **// +//** (C)Copyright 1985-2014, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//**********************************************************************// +//**********************************************************************// diff --git a/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.mak b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.mak new file mode 100644 index 0000000..e73289c --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.mak @@ -0,0 +1,89 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2010, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SMBIOS/SmbiosPeim/SmbiosPeim.mak 1 5/27/14 1:44p Davidd $ +# +# $Revision: 1 $ +# +# $Date: 5/27/14 1:44p $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SMBIOS/SmbiosPeim/SmbiosPeim.mak $ +# +# 1 5/27/14 1:44p Davidd +# [TAG] EIP103526 +# [Category] Improvement +# [Files] SmbiosPeim.cif +# SmbiosPeim.sdl +# SmbiosPeim.mak +# SmbiosPeim.dxs +# SmbiosPei.c +# +# 1 4/29/14 4:44p Davidd +# [TAG] EIP103526 +# [Category] Improvement +# [Description] We should update Wake-up Type in SMBIOS type 1 +# dynamically +# [Files] Core\EM\SMBios\SmbiosPeim\SmbiosPeim.cif +# Core\EM\SMBios\SmbiosPeim\SmbiosPeim.sdl +# Core\EM\SMBios\SmbiosPeim\SmbiosPeim.mak +# Core\EM\SMBios\SmbiosPeim\SmbiosPeim.dxs +# Core\EM\SMBios\SmbiosPeim\SmbiosPei.c +# +# 6 1/13/10 2:13p Felixp +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: <SmbiosPeim>.mak +# +# Description: +# +#<AMI_FHDR_END> +#********************************************************************** +all : SmbiosPeim + +SmbiosPeim : $(BUILD_DIR)\SmbiosPeim.mak SmbiosPeimBin + +$(BUILD_DIR)\SmbiosPeim.mak : $(SMBIOS_PEIM_DIR)\$(@B).cif $(SMBIOS_PEIM_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(SMBIOS_PEIM_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +SMBIOS_PEIM_OBJECTS = $$(BUILD_DIR)\$(SMBIOS_PEIM_DIR)\SmbiosPei.obj + +SmbiosPeimBin : $(AMIPEILIB) $(AMICSPLib) + $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\ + /f $(BUILD_DIR)\SmbiosPeim.mak all\ + NAME=SmbiosPeim\ + OBJECTS="$(SMBIOS_PEIM_OBJECTS)" \ + GUID=AC836A8E-B69A-470b-BECF-912A01B794F4\ + ENTRY_POINT=SmbiosPeiEntryPoint\ + DEPEX1=$(SMBIOS_PEIM_DIR)\SmbiosPeim.dxs DEPEX1_TYPE=EFI_SECTION_PEI_DEPEX \ + TYPE=PEIM \ + COMPRESS=0 + +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2010, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#**********************************************************************
\ No newline at end of file diff --git a/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.sdl b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.sdl new file mode 100644 index 0000000..d8ba7cc --- /dev/null +++ b/Core/EM/SMBIOS/SmbiosPeim/SmbiosPeim.sdl @@ -0,0 +1,32 @@ +TOKEN + Name = "SmbiosPeim_SUPPORT" + Value = "1" + Help = "Main switch to enable SmbiosPeim support in Project" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes + Token = "SB_WAKEUP_TYPE_FN" "=" "1" +End + +PATH + Name = "SMBIOS_PEIM_DIR" +End + +MODULE + Help = "Includes SmbiosPeim.mak to Project" + File = "SmbiosPeim.mak" +End + +ELINK + Name = "$(BUILD_DIR)\SmbiosPeim.ffs" + Parent = "FV_BB" + InvokeOrder = AfterParent +End + +ELINK + Name = "$(BUILD_DIR)\SmbiosPeim.ffs" + Parent = "FT_FV_BB" + InvokeOrder = AfterParent + Token = "FtRecovery_SUPPORT" "=" "1" +End
\ No newline at end of file |