]> git.proxmox.com Git - mirror_edk2.git/blame - SecurityPkg/Tcg/TrEEConfig/TrEEConfigDriver.c
Remove unused variable attribute flag.
[mirror_edk2.git] / SecurityPkg / Tcg / TrEEConfig / TrEEConfigDriver.c
CommitLineData
c1d93242
JY
1/** @file\r
2 The module entry point for TrEE configuration module.\r
3\r
4Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>\r
5This program and the accompanying materials \r
6are licensed and made available under the terms and conditions of the BSD License \r
7which accompanies this distribution. The full text of the license may be found at \r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#include "TrEEConfigImpl.h"\r
16\r
17extern TPM_INSTANCE_ID mTpmInstanceId[TPM_DEVICE_MAX + 1];\r
18\r
19/**\r
20 The entry point for TrEE configuration driver.\r
21\r
22 @param[in] ImageHandle The image handle of the driver.\r
23 @param[in] SystemTable The system table.\r
24\r
25 @retval EFI_ALREADY_STARTED The driver already exists in system.\r
26 @retval EFI_OUT_OF_RESOURCES Fail to execute entry point due to lack of resources.\r
27 @retval EFI_SUCCES All the related protocols are installed on the driver.\r
28 @retval Others Fail to install protocols as indicated.\r
29\r
30**/\r
31EFI_STATUS\r
32EFIAPI\r
33TrEEConfigDriverEntryPoint (\r
34 IN EFI_HANDLE ImageHandle,\r
35 IN EFI_SYSTEM_TABLE *SystemTable\r
36 )\r
37{\r
38 EFI_STATUS Status;\r
39 TREE_CONFIG_PRIVATE_DATA *PrivateData;\r
40 TREE_CONFIGURATION TrEEConfiguration;\r
41 UINTN Index;\r
42 UINTN DataSize;\r
43\r
44 Status = gBS->OpenProtocol (\r
45 ImageHandle,\r
46 &gEfiCallerIdGuid,\r
47 NULL,\r
48 ImageHandle,\r
49 ImageHandle,\r
50 EFI_OPEN_PROTOCOL_TEST_PROTOCOL\r
51 );\r
52 if (!EFI_ERROR (Status)) {\r
53 return EFI_ALREADY_STARTED;\r
54 }\r
55 \r
56 //\r
57 // Create a private data structure.\r
58 //\r
59 PrivateData = AllocateCopyPool (sizeof (TREE_CONFIG_PRIVATE_DATA), &mTrEEConfigPrivateDateTemplate);\r
60 ASSERT (PrivateData != NULL);\r
61\r
62 //\r
63 // Install private GUID.\r
64 // \r
65 Status = gBS->InstallMultipleProtocolInterfaces (\r
66 &ImageHandle,\r
67 &gEfiCallerIdGuid,\r
68 PrivateData,\r
69 NULL\r
70 );\r
71 ASSERT_EFI_ERROR (Status);\r
72\r
73 DataSize = sizeof(TrEEConfiguration);\r
74 Status = gRT->GetVariable (\r
75 TREE_STORAGE_NAME,\r
76 &gTrEEConfigFormSetGuid,\r
77 NULL,\r
78 &DataSize,\r
79 &TrEEConfiguration\r
80 );\r
81 if (EFI_ERROR (Status)) {\r
82 }\r
83 //\r
84 // We should always reinit PP request.\r
85 //\r
86 TrEEConfiguration.Tpm2Operation = TREE_PHYSICAL_PRESENCE_NO_ACTION;\r
87\r
88 //\r
89 // Sync data from PCD to variable, so that we do not need detect again in S3 phase.\r
90 //\r
91\r
92 //\r
93 // Get data from PCD to make sure data consistant - platform driver is suppose to construct this PCD accroding to Variable\r
94 //\r
95 for (Index = 0; Index < sizeof(mTpmInstanceId)/sizeof(mTpmInstanceId[0]); Index++) {\r
96 if (CompareGuid (PcdGetPtr(PcdTpmInstanceGuid), &mTpmInstanceId[Index].TpmInstanceGuid)) {\r
97 TrEEConfiguration.TpmDevice = mTpmInstanceId[Index].TpmDevice;\r
98 break;\r
99 }\r
100 }\r
101\r
102 //\r
103 // Save to variable so platform driver can get it.\r
104 //\r
105 Status = gRT->SetVariable (\r
106 TREE_STORAGE_NAME,\r
107 &gTrEEConfigFormSetGuid,\r
207256b7 108 EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
c1d93242
JY
109 sizeof(TrEEConfiguration),\r
110 &TrEEConfiguration\r
111 );\r
112 ASSERT_EFI_ERROR (Status);\r
113 \r
114 //\r
115 // Install TrEE configuration form\r
116 //\r
117 Status = InstallTrEEConfigForm (PrivateData);\r
118 if (EFI_ERROR (Status)) {\r
119 goto ErrorExit;\r
120 }\r
121\r
122 return EFI_SUCCESS;\r
123\r
124ErrorExit:\r
125 if (PrivateData != NULL) {\r
126 UninstallTrEEConfigForm (PrivateData);\r
127 } \r
128 \r
129 return Status;\r
130}\r
131\r
132/**\r
133 Unload the TrEE configuration form.\r
134\r
135 @param[in] ImageHandle The driver's image handle.\r
136\r
137 @retval EFI_SUCCESS The TrEE configuration form is unloaded.\r
138 @retval Others Failed to unload the form.\r
139\r
140**/\r
141EFI_STATUS\r
142EFIAPI\r
143TrEEConfigDriverUnload (\r
144 IN EFI_HANDLE ImageHandle\r
145 )\r
146{\r
147 EFI_STATUS Status;\r
148 TREE_CONFIG_PRIVATE_DATA *PrivateData;\r
149\r
150 Status = gBS->HandleProtocol (\r
151 ImageHandle,\r
152 &gEfiCallerIdGuid,\r
153 (VOID **) &PrivateData\r
154 ); \r
155 if (EFI_ERROR (Status)) {\r
156 return Status; \r
157 }\r
158 \r
159 ASSERT (PrivateData->Signature == TREE_CONFIG_PRIVATE_DATA_SIGNATURE);\r
160\r
161 gBS->UninstallMultipleProtocolInterfaces (\r
162 &ImageHandle,\r
163 &gEfiCallerIdGuid,\r
164 PrivateData,\r
165 NULL\r
166 );\r
167 \r
168 UninstallTrEEConfigForm (PrivateData);\r
169\r
170 return EFI_SUCCESS;\r
171}\r