From d3ce92cab255985b4f395c80592b26320d0f24ac Mon Sep 17 00:00:00 2001 From: timhe Date: Fri, 4 Dec 2015 08:00:53 +0000 Subject: Vlv2TbltDevicePkg/Vlv2DeviceRefCodePkg: Reset BIOS Setup when the jumper is present on Turbot board. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Shifei Lu Reviewed-by: Tim He git-svn-id: https://svn.code.sf.net/p/edk2/code/branches/UDK2014.SP1@19122 6f19259b-4bc3-4df7-8a09-765794883524 --- Vlv2TbltDevicePkg/PlatformInitPei/BootMode.c | 6 ++++-- Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'Vlv2TbltDevicePkg/PlatformInitPei') diff --git a/Vlv2TbltDevicePkg/PlatformInitPei/BootMode.c b/Vlv2TbltDevicePkg/PlatformInitPei/BootMode.c index 3b94e3b54f..d0e9f3d772 100644 --- a/Vlv2TbltDevicePkg/PlatformInitPei/BootMode.c +++ b/Vlv2TbltDevicePkg/PlatformInitPei/BootMode.c @@ -148,6 +148,7 @@ UpdateBootMode ( volatile UINT32 GpioValue; BOOLEAN IsFirstBoot; UINT32 Data32; + UINT32 PeiGpioValue; Status = (*PeiServices)->GetBootMode( PeiServices, @@ -168,6 +169,7 @@ UpdateBootMode ( // When this boot is WDT reset, the system needs booting with CrashDump function eanbled. // Data32 = IoRead32 (ACPI_BASE_ADDRESS + R_PCH_TCO_STS); + PeiGpioValue = DetectGpioPinValue(); // // Check Power Button, click the power button, the system will boot in fast boot mode, @@ -202,8 +204,8 @@ UpdateBootMode ( &VarSize, &SystemConfiguration ); - if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) { - //The setup variable is corrupted + if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION) || PeiGpioValue == 0) { + //The setup variable is corrupted or detect GPIO_S5_17 Pin is low VarSize = sizeof(SYSTEM_CONFIGURATION); Status = Variable->GetVariable( Variable, diff --git a/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c b/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c index 6e2d592f5f..27a6b078fc 100644 --- a/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c +++ b/Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c @@ -170,6 +170,9 @@ GetSetupVariable ( UINTN VariableSize; EFI_STATUS Status; EFI_PEI_READ_ONLY_VARIABLE2_PPI *Variable; + UINT32 PeiGpioValue; + + PeiGpioValue = DetectGpioPinValue(); VariableSize = sizeof (SYSTEM_CONFIGURATION); ZeroMem (SystemConfiguration, sizeof (SYSTEM_CONFIGURATION)); @@ -196,8 +199,8 @@ GetSetupVariable ( &VariableSize, SystemConfiguration ); - if (EFI_ERROR (Status) || VariableSize != sizeof(SYSTEM_CONFIGURATION)) { - //The setup variable is corrupted + if (EFI_ERROR (Status) || VariableSize != sizeof(SYSTEM_CONFIGURATION) || PeiGpioValue == 0) { + //The setup variable is corrupted or detect GPIO_S5_17 Pin is low VariableSize = sizeof(SYSTEM_CONFIGURATION); Status = Variable->GetVariable( Variable, -- cgit v1.2.3