]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2TbltDevicePkg/PlatformDxe/ExI.c
Vlv2TbltDevicePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Vlv2TbltDevicePkg / PlatformDxe / ExI.c
CommitLineData
3cbfba02
DW
1/** @file\r
2\r
3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
4 \r\r
9dc8036d
MK
5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
3cbfba02
DW
7 \r\r
8\r
9Module Name:\r
10\r
11\r
12 ExI.c\r
13\r
14Abstract:\r
15\r
16 ExI configuration based on setup option\r
17\r
18\r
19--*/\r
20\r
21\r
22#include "PlatformDxe.h"\r
23\r
24#define PchLpcPciCfg32(Register) MmioRead32 (MmPciAddress (0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPC, 0, Register))\r
25\r
26//\r
27// Procedure: GetPmcBase\r
28//\r
29// Description: This function read content of B:D:F 0:31:0, offset 44h (for\r
30// PmcBase)\r
31//\r
32// Input: None\r
33//\r
34// Output: 32 bit PmcBase\r
35//\r
36UINT32\r
37GetPmcBase (\r
38 VOID\r
39 )\r
40{\r
41 return (PchLpcPciCfg32 (R_PCH_LPC_PMC_BASE) & B_PCH_LPC_PMC_BASE_BAR);\r
42}\r
43\r
44/**\r
45 Configure ExI.\r
46\r
47 @param ImageHandle Pointer to the loaded image protocol for this driver\r
48 @param SystemTable Pointer to the EFI System Table\r
49\r
50 @retval EFI_SUCCESS The driver initializes correctly.\r
51**/\r
52VOID\r
53InitExI (\r
54 )\r
55{\r
56 EFI_STATUS Status;\r
57\r
58 SYSTEM_CONFIGURATION SystemConfiguration;\r
59 UINTN VarSize;\r
60\r
61 VarSize = sizeof(SYSTEM_CONFIGURATION);\r
62\r
63 Status = gRT->GetVariable(\r
64 L"Setup",\r
65 &gEfiNormalSetupGuid,\r
66 NULL,\r
67 &VarSize,\r
68 &SystemConfiguration\r
69 );\r
70\r
620f2891
TH
71 if (EFI_ERROR (Status) || VarSize != sizeof(SYSTEM_CONFIGURATION)) {\r
72 //The setup variable is corrupted\r
73 VarSize = sizeof(SYSTEM_CONFIGURATION);\r
74 Status = gRT->GetVariable(\r
75 L"SetupRecovery",\r
76 &gEfiNormalSetupGuid,\r
77 NULL,\r
78 &VarSize,\r
79 &SystemConfiguration\r
80 );\r
81 ASSERT_EFI_ERROR (Status);\r
82 } \r
3cbfba02
DW
83\r
84 if (SystemConfiguration.ExISupport == 1) {\r
85 MmioOr32 ((UINTN) (GetPmcBase() + R_PCH_PMC_MTPMC1), (UINT32) BIT0+BIT1+BIT2);\r
86 } else if (SystemConfiguration.ExISupport == 0) {\r
87 MmioAnd32 ((UINTN) (GetPmcBase() + R_PCH_PMC_MTPMC1), ~((UINT32) BIT0+BIT1+BIT2)); //clear bit 0,1,2\r
88 }\r
89}\r