/** @file\r
HII Config Access protocol implementation of TCG configuration module.\r
\r
-Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
+Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution. The full text of the license may be found at\r
http://opensource.org/licenses/bsd-license.php\r
\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
**/\r
{\r
END_DEVICE_PATH_TYPE,\r
END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
- { \r
+ {\r
(UINT8) (END_DEVICE_PATH_LENGTH),\r
(UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)\r
}\r
UINT8 CmdBuf[64];\r
\r
ASSERT (TcgProtocol != NULL);\r
- \r
+\r
//\r
// Get TPM Permanent flags (TpmEnable, TpmActivate)\r
//\r
*(UINT16*)&CmdBuf[0] = SwapBytes16 (TPM_TAG_RQU_COMMAND);\r
*(UINT32*)&CmdBuf[2] = SwapBytes32 (TpmSendSize);\r
*(UINT32*)&CmdBuf[6] = SwapBytes32 (TPM_ORD_GetCapability);\r
- \r
+\r
*(UINT32*)&CmdBuf[10] = SwapBytes32 (TPM_CAP_FLAG);\r
*(UINT32*)&CmdBuf[14] = SwapBytes32 (sizeof (TPM_CAP_FLAG_PERMANENT));\r
*(UINT32*)&CmdBuf[18] = SwapBytes32 (TPM_CAP_FLAG_PERMANENT);\r
CmdBuf,\r
sizeof (CmdBuf),\r
CmdBuf\r
- ); \r
+ );\r
TpmRsp = (TPM_RSP_COMMAND_HDR *) &CmdBuf[0];\r
if (EFI_ERROR (Status) || (TpmRsp->tag != SwapBytes16 (TPM_TAG_RSP_COMMAND)) || (TpmRsp->returnCode != 0)) {\r
return EFI_DEVICE_ERROR;\r
}\r
- \r
+\r
TpmPermanentFlags = (TPM_PERMANENT_FLAGS *) &CmdBuf[sizeof (TPM_RSP_COMMAND_HDR) + sizeof (UINT32)];\r
\r
if (TpmEnable != NULL) {\r
*TpmActivate = (BOOLEAN) !TpmPermanentFlags->deactivated;\r
}\r
}\r
- \r
- return EFI_SUCCESS; \r
+\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
)\r
{\r
EFI_STATUS Status;\r
- UINTN BufferSize;\r
- TCG_CONFIGURATION Configuration;\r
TCG_CONFIG_PRIVATE_DATA *PrivateData;\r
EFI_STRING ConfigRequestHdr;\r
EFI_STRING ConfigRequest;\r
UINTN Size;\r
BOOLEAN TpmEnable;\r
BOOLEAN TpmActivate;\r
- CHAR16 State[32];\r
\r
if (Progress == NULL || Results == NULL) {\r
return EFI_INVALID_PARAMETER;\r
\r
//\r
// Convert buffer data to <ConfigResp> by helper function BlockToConfig()\r
- // \r
- ZeroMem (&Configuration, sizeof (TCG_CONFIGURATION));\r
-\r
- Configuration.TpmOperation = PHYSICAL_PRESENCE_ENABLE;\r
- Configuration.HideTpm = (BOOLEAN) (PcdGetBool (PcdHideTpmSupport) && PcdGetBool (PcdHideTpm));\r
//\r
- // Read the original value of HideTpm from PrivateData which won't be changed by Setup in this boot.\r
- //\r
- Configuration.OriginalHideTpm = PrivateData->HideTpm;\r
+ PrivateData->Configuration->TpmOperation = PHYSICAL_PRESENCE_ENABLE;\r
\r
//\r
- // Display current TPM state.\r
+ // Get current TPM state.\r
//\r
if (PrivateData->TcgProtocol != NULL) {\r
Status = GetTpmState (PrivateData->TcgProtocol, &TpmEnable, &TpmActivate);\r
return Status;\r
}\r
\r
- UnicodeSPrint (\r
- State,\r
- sizeof (State),\r
- L"%s, and %s",\r
- TpmEnable ? L"Enabled" : L"Disabled",\r
- TpmActivate ? L"Activated" : L"Deactivated"\r
- );\r
- Configuration.TpmEnable = TpmEnable;\r
- Configuration.TpmActivate = TpmActivate;\r
-\r
- HiiSetString (PrivateData->HiiHandle, STRING_TOKEN (STR_TPM_STATE_CONTENT), State, NULL);\r
+ PrivateData->Configuration->TpmEnable = TpmEnable;\r
+ PrivateData->Configuration->TpmActivate = TpmActivate;\r
}\r
\r
- BufferSize = sizeof (Configuration);\r
ConfigRequest = Request;\r
if ((Request == NULL) || (StrStr (Request, L"OFFSET") == NULL)) {\r
//\r
ConfigRequest = AllocateZeroPool (Size);\r
ASSERT (ConfigRequest != NULL);\r
AllocatedRequest = TRUE;\r
- UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64) BufferSize);\r
+ UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, sizeof (TCG_CONFIGURATION));\r
FreePool (ConfigRequestHdr);\r
}\r
\r
Status = gHiiConfigRouting->BlockToConfig (\r
gHiiConfigRouting,\r
ConfigRequest,\r
- (UINT8 *) &Configuration,\r
- BufferSize,\r
+ (UINT8 *) PrivateData->Configuration,\r
+ sizeof (TCG_CONFIGURATION),\r
Results,\r
Progress\r
);\r
return Status;\r
}\r
\r
- PcdSetBool (PcdHideTpm, TcgConfiguration.HideTpm);\r
-\r
return EFI_SUCCESS;\r
}\r
\r
);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
- } \r
- \r
+ }\r
+\r
PpData.PPRequest = PpRequest;\r
Status = gRT->SetVariable (\r
PHYSICAL_PRESENCE_VARIABLE,\r
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest\r
)\r
{\r
+ TCG_CONFIG_PRIVATE_DATA *PrivateData;\r
+ CHAR16 State[32];\r
+\r
if ((This == NULL) || (Value == NULL) || (ActionRequest == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
+ if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {\r
+ if (QuestionId == KEY_TPM_ACTION) {\r
+\r
+ PrivateData = TCG_CONFIG_PRIVATE_DATA_FROM_THIS (This);\r
+ UnicodeSPrint (\r
+ State,\r
+ sizeof (State),\r
+ L"%s, and %s",\r
+ PrivateData->Configuration->TpmEnable ? L"Enabled" : L"Disabled",\r
+ PrivateData->Configuration->TpmActivate ? L"Activated" : L"Deactivated"\r
+ );\r
+ HiiSetString (PrivateData->HiiHandle, STRING_TOKEN (STR_TPM_STATE_CONTENT), State, NULL);\r
+ }\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
if ((Action != EFI_BROWSER_ACTION_CHANGED) || (QuestionId != KEY_TPM_ACTION)) {\r
return EFI_UNSUPPORTED;\r
}\r
\r
SavePpRequest (Value->u8);\r
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
- \r
+\r
return EFI_SUCCESS;\r
}\r
\r
EFI_STATUS Status;\r
EFI_HII_HANDLE HiiHandle;\r
EFI_HANDLE DriverHandle;\r
- VOID *StartOpCodeHandle;\r
- VOID *EndOpCodeHandle;\r
- EFI_IFR_GUID_LABEL *StartLabel;\r
- EFI_IFR_GUID_LABEL *EndLabel;\r
-\r
EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;\r
\r
DriverHandle = NULL;\r
&gEfiHiiConfigAccessProtocolGuid,\r
ConfigAccess,\r
NULL\r
- ); \r
+ );\r
\r
return EFI_OUT_OF_RESOURCES;\r
}\r
- \r
- PrivateData->HiiHandle = HiiHandle;\r
-\r
- //\r
- // Remove the Hide TPM question from the IFR\r
- //\r
- if (!PcdGetBool (PcdHideTpmSupport)) {\r
- //\r
- // Allocate space for creation of UpdateData Buffer\r
- //\r
- StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
- ASSERT (StartOpCodeHandle != NULL);\r
\r
- EndOpCodeHandle = HiiAllocateOpCodeHandle ();\r
- ASSERT (EndOpCodeHandle != NULL);\r
-\r
- //\r
- // Create Hii Extend Label OpCode as the start opcode\r
- //\r
- StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
- StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
- StartLabel->Number = LABEL_TCG_CONFIGURATION_HIDETPM;\r
-\r
- //\r
- // Create Hii Extend Label OpCode as the end opcode\r
- //\r
- EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
- EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
- EndLabel->Number = LABEL_END;\r
- \r
- HiiUpdateForm (HiiHandle, NULL, TCG_CONFIGURATION_FORM_ID, StartOpCodeHandle, EndOpCodeHandle);\r
-\r
- HiiFreeOpCodeHandle (StartOpCodeHandle);\r
- HiiFreeOpCodeHandle (EndOpCodeHandle);\r
- }\r
+ PrivateData->HiiHandle = HiiHandle;\r
\r
- return EFI_SUCCESS; \r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
);\r
PrivateData->DriverHandle = NULL;\r
}\r
- \r
+\r
+ if (PrivateData->Configuration != NULL) {\r
+ FreePool(PrivateData->Configuration);\r
+ }\r
FreePool (PrivateData);\r
}\r