-/** @file\r
-\r
- Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
- \r\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
- \r\r
-\r
-Module Name:\r
-\r
-\r
- ExI.c\r
-\r
-Abstract:\r
-\r
- ExI configuration based on setup option\r
-\r
-\r
---*/\r
-\r
-\r
-#include "PlatformDxe.h"\r
-\r
-#define PchLpcPciCfg32(Register) MmioRead32 (MmPciAddress (0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPC, 0, Register))\r
-\r
-//\r
-// Procedure: GetPmcBase\r
-//\r
-// Description: This function read content of B:D:F 0:31:0, offset 44h (for\r
-// PmcBase)\r
-//\r
-// Input: None\r
-//\r
-// Output: 32 bit PmcBase\r
-//\r
-UINT32\r
-GetPmcBase (\r
- VOID\r
- )\r
-{\r
- return (PchLpcPciCfg32 (R_PCH_LPC_PMC_BASE) & B_PCH_LPC_PMC_BASE_BAR);\r
-}\r
-\r
-/**\r
- Configure ExI.\r
-\r
- @param ImageHandle Pointer to the loaded image protocol for this driver\r
- @param SystemTable Pointer to the EFI System Table\r
-\r
- @retval EFI_SUCCESS The driver initializes correctly.\r
-**/\r
-VOID\r
-InitExI (\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- SYSTEM_CONFIGURATION SystemConfiguration;\r
- UINTN VarSize;\r
-\r
- VarSize = sizeof(SYSTEM_CONFIGURATION);\r
-\r
- Status = gRT->GetVariable(\r
- L"Setup",\r
- &gEfiNormalSetupGuid,\r
- NULL,\r
- &VarSize,\r
- &SystemConfiguration\r
- );\r
-\r
- if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {\r
- //The setup variable is corrupted\r
- VarSize = sizeof(SYSTEM_CONFIGURATION);\r
- Status = gRT->GetVariable(\r
- L"SetupRecovery",\r
- &gEfiNormalSetupGuid,\r
- NULL,\r
- &VarSize,\r
- &SystemConfiguration\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
- } \r
-\r
- if (SystemConfiguration.ExISupport == 1) {\r
- MmioOr32 ((UINTN) (GetPmcBase() + R_PCH_PMC_MTPMC1), (UINT32) BIT0+BIT1+BIT2);\r
- } else if (SystemConfiguration.ExISupport == 0) {\r
- MmioAnd32 ((UINTN) (GetPmcBase() + R_PCH_PMC_MTPMC1), ~((UINT32) BIT0+BIT1+BIT2)); //clear bit 0,1,2\r
- }\r
-}\r