//\r
// Physical Presence Interface Version supported by Platform\r
//\r
-#define PHYSICAL_PRESENCE_VERSION_TAG "$PV"\r
-#define PHYSICAL_PRESENCE_VERSION_SIZE 4\r
+#define PHYSICAL_PRESENCE_VERSION_TAG "$PV"\r
+#define PHYSICAL_PRESENCE_VERSION_SIZE 4\r
\r
//\r
// PNP _HID for TPM2 device\r
//\r
-#define TPM_HID_TAG "NNNN0000"\r
-#define TPM_HID_PNP_SIZE 8\r
-#define TPM_HID_ACPI_SIZE 9\r
+#define TPM_HID_TAG "NNNN0000"\r
+#define TPM_HID_PNP_SIZE 8\r
+#define TPM_HID_ACPI_SIZE 9\r
\r
-#define TPM_PRS_RESL "RESL"\r
-#define TPM_PRS_RESS "RESS"\r
-#define TPM_PRS_RES_NAME_SIZE 4\r
+#define TPM_PRS_RESL "RESL"\r
+#define TPM_PRS_RESS "RESS"\r
+#define TPM_PRS_RES_NAME_SIZE 4\r
//\r
// Minimum PRS resource template size\r
// 1 byte for BufferOp\r
// 5 bytes for Interrupt descriptor\r
// 2 bytes for END Tag\r
//\r
-#define TPM_POS_RES_TEMPLATE_MIN_SIZE (1 + 1 + 2 + 12 + 5 + 2)\r
+#define TPM_POS_RES_TEMPLATE_MIN_SIZE (1 + 1 + 2 + 12 + 5 + 2)\r
\r
//\r
// Max Interrupt buffer size for PRS interrupt resource\r
// Now support 15 interrupts in maxmum\r
//\r
-#define MAX_PRS_INT_BUF_SIZE (15*4)\r
+#define MAX_PRS_INT_BUF_SIZE (15*4)\r
\r
#pragma pack(1)\r
\r
typedef struct {\r
- EFI_ACPI_DESCRIPTION_HEADER Header;\r
+ EFI_ACPI_DESCRIPTION_HEADER Header;\r
// Flags field is replaced in version 4 and above\r
// BIT0~15: PlatformClass This field is only valid for version 4 and above\r
// BIT16~31: Reserved\r
- UINT32 Flags;\r
- UINT64 AddressOfControlArea;\r
- UINT32 StartMethod;\r
- UINT8 PlatformSpecificParameters[12]; // size up to 12\r
- UINT32 Laml; // Optional\r
- UINT64 Lasa; // Optional\r
+ UINT32 Flags;\r
+ UINT64 AddressOfControlArea;\r
+ UINT32 StartMethod;\r
+ UINT8 PlatformSpecificParameters[12]; // size up to 12\r
+ UINT32 Laml; // Optional\r
+ UINT64 Lasa; // Optional\r
} EFI_TPM2_ACPI_TABLE_V4;\r
\r
#pragma pack()\r
},\r
0, // BIT0~15: PlatformClass\r
// BIT16~31: Reserved\r
- 0, // Control Area\r
+ 0, // Control Area\r
EFI_TPM2_ACPI_TABLE_START_METHOD_TIS, // StartMethod\r
};\r
\r
-TCG_NVS *mTcgNvs;\r
+TCG_NVS *mTcgNvs;\r
\r
/**\r
Find the operation region in TCG ACPI table by given Name and Size,\r
**/\r
VOID *\r
AssignOpRegion (\r
- EFI_ACPI_DESCRIPTION_HEADER *Table,\r
- UINT32 Name,\r
- UINT16 Size\r
+ EFI_ACPI_DESCRIPTION_HEADER *Table,\r
+ UINT32 Name,\r
+ UINT16 Size\r
)\r
{\r
- EFI_STATUS Status;\r
- AML_OP_REGION_32_8 *OpRegion;\r
- EFI_PHYSICAL_ADDRESS MemoryAddress;\r
+ EFI_STATUS Status;\r
+ AML_OP_REGION_32_8 *OpRegion;\r
+ EFI_PHYSICAL_ADDRESS MemoryAddress;\r
\r
MemoryAddress = SIZE_4GB - 1;\r
\r
//\r
// Patch some pointers for the ASL code before loading the SSDT.\r
//\r
- for (OpRegion = (AML_OP_REGION_32_8 *) (Table + 1);\r
- OpRegion <= (AML_OP_REGION_32_8 *) ((UINT8 *) Table + Table->Length);\r
- OpRegion = (AML_OP_REGION_32_8 *) ((UINT8 *) OpRegion + 1)) {\r
+ for (OpRegion = (AML_OP_REGION_32_8 *)(Table + 1);\r
+ OpRegion <= (AML_OP_REGION_32_8 *)((UINT8 *)Table + Table->Length);\r
+ OpRegion = (AML_OP_REGION_32_8 *)((UINT8 *)OpRegion + 1))\r
+ {\r
if ((OpRegion->OpRegionOp == AML_EXT_REGION_OP) &&\r
(OpRegion->NameString == Name) &&\r
(OpRegion->DWordPrefix == AML_DWORD_PREFIX) &&\r
- (OpRegion->BytePrefix == AML_BYTE_PREFIX)) {\r
-\r
- Status = gBS->AllocatePages(AllocateMaxAddress, EfiACPIMemoryNVS, EFI_SIZE_TO_PAGES (Size), &MemoryAddress);\r
+ (OpRegion->BytePrefix == AML_BYTE_PREFIX))\r
+ {\r
+ Status = gBS->AllocatePages (AllocateMaxAddress, EfiACPIMemoryNVS, EFI_SIZE_TO_PAGES (Size), &MemoryAddress);\r
ASSERT_EFI_ERROR (Status);\r
ZeroMem ((VOID *)(UINTN)MemoryAddress, Size);\r
- OpRegion->RegionOffset = (UINT32) (UINTN) MemoryAddress;\r
- OpRegion->RegionLen = (UINT8) Size;\r
+ OpRegion->RegionOffset = (UINT32)(UINTN)MemoryAddress;\r
+ OpRegion->RegionLen = (UINT8)Size;\r
// Request to unblock this region from MM core\r
Status = MmUnblockMemoryRequest (MemoryAddress, EFI_SIZE_TO_PAGES (Size));\r
- if (Status != EFI_UNSUPPORTED && EFI_ERROR (Status)) {\r
+ if ((Status != EFI_UNSUPPORTED) && EFI_ERROR (Status)) {\r
ASSERT_EFI_ERROR (Status);\r
}\r
+\r
break;\r
}\r
}\r
\r
- return (VOID *) (UINTN) MemoryAddress;\r
+ return (VOID *)(UINTN)MemoryAddress;\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
ExchangeCommonBuffer (\r
- IN OUT TCG_NVS *TcgNvs\r
-)\r
+ IN OUT TCG_NVS *TcgNvs\r
+ )\r
{\r
- EFI_STATUS Status;\r
- EFI_MM_COMMUNICATION_PROTOCOL *MmCommunication;\r
- EDKII_PI_SMM_COMMUNICATION_REGION_TABLE *PiSmmCommunicationRegionTable;\r
- EFI_MEMORY_DESCRIPTOR *MmCommMemRegion;\r
- EFI_MM_COMMUNICATE_HEADER *CommHeader;\r
- TPM_NVS_MM_COMM_BUFFER *CommBuffer;\r
- UINTN CommBufferSize;\r
- UINTN Index;\r
+ EFI_STATUS Status;\r
+ EFI_MM_COMMUNICATION_PROTOCOL *MmCommunication;\r
+ EDKII_PI_SMM_COMMUNICATION_REGION_TABLE *PiSmmCommunicationRegionTable;\r
+ EFI_MEMORY_DESCRIPTOR *MmCommMemRegion;\r
+ EFI_MM_COMMUNICATE_HEADER *CommHeader;\r
+ TPM_NVS_MM_COMM_BUFFER *CommBuffer;\r
+ UINTN CommBufferSize;\r
+ UINTN Index;\r
\r
// Step 0: Sanity check for input argument\r
if (TcgNvs == NULL) {\r
}\r
\r
// Step 1: Grab the common buffer header\r
- Status = EfiGetSystemConfigurationTable (&gEdkiiPiSmmCommunicationRegionTableGuid, (VOID**) &PiSmmCommunicationRegionTable);\r
+ Status = EfiGetSystemConfigurationTable (&gEdkiiPiSmmCommunicationRegionTableGuid, (VOID **)&PiSmmCommunicationRegionTable);\r
if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_ERROR, "%a - Failed to locate SMM communciation common buffer - %r!\n", __FUNCTION__, Status));\r
return Status;\r
}\r
\r
// Step 2: Grab one that is large enough to hold TPM_NVS_MM_COMM_BUFFER, the IPL one should be sufficient\r
- CommBufferSize = 0;\r
- MmCommMemRegion = (EFI_MEMORY_DESCRIPTOR*) (PiSmmCommunicationRegionTable + 1);\r
+ CommBufferSize = 0;\r
+ MmCommMemRegion = (EFI_MEMORY_DESCRIPTOR *)(PiSmmCommunicationRegionTable + 1);\r
for (Index = 0; Index < PiSmmCommunicationRegionTable->NumberOfEntries; Index++) {\r
if (MmCommMemRegion->Type == EfiConventionalMemory) {\r
CommBufferSize = EFI_PAGES_TO_SIZE ((UINTN)MmCommMemRegion->NumberOfPages);\r
break;\r
}\r
}\r
- MmCommMemRegion = (EFI_MEMORY_DESCRIPTOR*)((UINT8*)MmCommMemRegion + PiSmmCommunicationRegionTable->DescriptorSize);\r
+\r
+ MmCommMemRegion = (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)MmCommMemRegion + PiSmmCommunicationRegionTable->DescriptorSize);\r
}\r
\r
if (Index >= PiSmmCommunicationRegionTable->NumberOfEntries) {\r
\r
// Step 3: Start to populate contents\r
// Step 3.1: MM Communication common header\r
- CommHeader = (EFI_MM_COMMUNICATE_HEADER *) (UINTN) MmCommMemRegion->PhysicalStart;\r
+ CommHeader = (EFI_MM_COMMUNICATE_HEADER *)(UINTN)MmCommMemRegion->PhysicalStart;\r
CommBufferSize = sizeof (TPM_NVS_MM_COMM_BUFFER) + OFFSET_OF (EFI_MM_COMMUNICATE_HEADER, Data);\r
ZeroMem (CommHeader, CommBufferSize);\r
CopyGuid (&CommHeader->HeaderGuid, &gTpmNvsMmGuid);\r
CommHeader->MessageLength = sizeof (TPM_NVS_MM_COMM_BUFFER);\r
\r
// Step 3.2: TPM_NVS_MM_COMM_BUFFER content per our needs\r
- CommBuffer = (TPM_NVS_MM_COMM_BUFFER *) (CommHeader->Data);\r
- CommBuffer->Function = TpmNvsMmExchangeInfo;\r
- CommBuffer->TargetAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) TcgNvs;\r
+ CommBuffer = (TPM_NVS_MM_COMM_BUFFER *)(CommHeader->Data);\r
+ CommBuffer->Function = TpmNvsMmExchangeInfo;\r
+ CommBuffer->TargetAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)TcgNvs;\r
\r
// Step 4: Locate the protocol and signal Mmi.\r
- Status = gBS->LocateProtocol (&gEfiMmCommunicationProtocolGuid, NULL, (VOID**) &MmCommunication);\r
+ Status = gBS->LocateProtocol (&gEfiMmCommunicationProtocolGuid, NULL, (VOID **)&MmCommunication);\r
if (!EFI_ERROR (Status)) {\r
Status = MmCommunication->Communicate (MmCommunication, CommHeader, &CommBufferSize);\r
DEBUG ((DEBUG_INFO, "%a - Communicate() = %r\n", __FUNCTION__, Status));\r
- }\r
- else {\r
+ } else {\r
DEBUG ((DEBUG_ERROR, "%a - Failed to locate MmCommunication protocol - %r\n", __FUNCTION__, Status));\r
return Status;\r
}\r
// Step 5: If everything goes well, populate the channel number\r
if (!EFI_ERROR (CommBuffer->ReturnStatus)) {\r
// Need to demote to UINT8 according to SMI value definition\r
- TcgNvs->PhysicalPresence.SoftwareSmi = (UINT8) CommBuffer->RegisteredPpSwiValue;\r
- TcgNvs->MemoryClear.SoftwareSmi = (UINT8) CommBuffer->RegisteredMcSwiValue;\r
+ TcgNvs->PhysicalPresence.SoftwareSmi = (UINT8)CommBuffer->RegisteredPpSwiValue;\r
+ TcgNvs->MemoryClear.SoftwareSmi = (UINT8)CommBuffer->RegisteredMcSwiValue;\r
DEBUG ((\r
DEBUG_INFO,\r
"%a Communication returned software SMI value. PP: 0x%x; MC: 0x%x.\n",\r
));\r
}\r
\r
- return (EFI_STATUS) CommBuffer->ReturnStatus;\r
+ return (EFI_STATUS)CommBuffer->ReturnStatus;\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
UpdatePPVersion (\r
- EFI_ACPI_DESCRIPTION_HEADER *Table,\r
- CHAR8 *PPVer\r
+ EFI_ACPI_DESCRIPTION_HEADER *Table,\r
+ CHAR8 *PPVer\r
)\r
{\r
EFI_STATUS Status;\r
// Patch some pointers for the ASL code before loading the SSDT.\r
//\r
for (DataPtr = (UINT8 *)(Table + 1);\r
- DataPtr <= (UINT8 *) ((UINT8 *) Table + Table->Length - PHYSICAL_PRESENCE_VERSION_SIZE);\r
- DataPtr += 1) {\r
- if (AsciiStrCmp((CHAR8 *)DataPtr, PHYSICAL_PRESENCE_VERSION_TAG) == 0) {\r
- Status = AsciiStrCpyS((CHAR8 *)DataPtr, PHYSICAL_PRESENCE_VERSION_SIZE, PPVer);\r
- DEBUG((DEBUG_INFO, "TPM2 Physical Presence Interface Version update status 0x%x\n", Status));\r
+ DataPtr <= (UINT8 *)((UINT8 *)Table + Table->Length - PHYSICAL_PRESENCE_VERSION_SIZE);\r
+ DataPtr += 1)\r
+ {\r
+ if (AsciiStrCmp ((CHAR8 *)DataPtr, PHYSICAL_PRESENCE_VERSION_TAG) == 0) {\r
+ Status = AsciiStrCpyS ((CHAR8 *)DataPtr, PHYSICAL_PRESENCE_VERSION_SIZE, PPVer);\r
+ DEBUG ((DEBUG_INFO, "TPM2 Physical Presence Interface Version update status 0x%x\n", Status));\r
return Status;\r
}\r
}\r
**/\r
EFI_STATUS\r
UpdatePossibleResource (\r
- IN OUT EFI_ACPI_DESCRIPTION_HEADER *Table,\r
- IN UINT32 *IrqBuffer,\r
- IN UINT32 IrqBuffserSize,\r
- OUT BOOLEAN *IsShortFormPkgLength\r
+ IN OUT EFI_ACPI_DESCRIPTION_HEADER *Table,\r
+ IN UINT32 *IrqBuffer,\r
+ IN UINT32 IrqBuffserSize,\r
+ OUT BOOLEAN *IsShortFormPkgLength\r
)\r
{\r
- UINT8 *DataPtr;\r
- UINT8 *DataEndPtr;\r
- UINT32 NewPkgLength;\r
- UINT32 OrignalPkgLength;\r
+ UINT8 *DataPtr;\r
+ UINT8 *DataEndPtr;\r
+ UINT32 NewPkgLength;\r
+ UINT32 OrignalPkgLength;\r
\r
NewPkgLength = 0;\r
OrignalPkgLength = 0;\r
// <bit 5-4: Only used if PkgLength <= 63 >\r
// <bit 3-0: Least significant package length nybble>\r
//\r
- //==============BufferSize==================\r
+ // ==============BufferSize==================\r
// BufferSize := Integer\r
// Integer := ByteConst|WordConst|DwordConst....\r
//\r
// ByteConst := BytePrefix ByteData\r
//\r
- //==============ByteList===================\r
+ // ==============ByteList===================\r
// ByteList := ByteData ByteList\r
//\r
- //=========================================\r
+ // =========================================\r
\r
//\r
// 1. Check TPM_PRS_RESS with PkgLength <=63 can hold the input interrupt number buffer for patching\r
//\r
for (DataPtr = (UINT8 *)(Table + 1);\r
- DataPtr < (UINT8 *) ((UINT8 *) Table + Table->Length - (TPM_PRS_RES_NAME_SIZE + TPM_POS_RES_TEMPLATE_MIN_SIZE));\r
- DataPtr += 1) {\r
- if (CompareMem(DataPtr, TPM_PRS_RESS, TPM_PRS_RES_NAME_SIZE) == 0) {\r
+ DataPtr < (UINT8 *)((UINT8 *)Table + Table->Length - (TPM_PRS_RES_NAME_SIZE + TPM_POS_RES_TEMPLATE_MIN_SIZE));\r
+ DataPtr += 1)\r
+ {\r
+ if (CompareMem (DataPtr, TPM_PRS_RESS, TPM_PRS_RES_NAME_SIZE) == 0) {\r
//\r
// Jump over object name & BufferOp\r
//\r
} else if (*(DataPtr + 1) == AML_DWORD_PREFIX) {\r
NewPkgLength += 5;\r
} else {\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
return EFI_UNSUPPORTED;\r
}\r
} else {\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
return EFI_UNSUPPORTED;\r
}\r
\r
}\r
\r
if (NewPkgLength > OrignalPkgLength) {\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
NewPkgLength = 0;\r
OrignalPkgLength = 0;\r
for (DataPtr = (UINT8 *)(Table + 1);\r
- DataPtr < (UINT8 *) ((UINT8 *) Table + Table->Length - (TPM_PRS_RES_NAME_SIZE + TPM_POS_RES_TEMPLATE_MIN_SIZE));\r
- DataPtr += 1) {\r
- if (CompareMem(DataPtr, TPM_PRS_RESL, TPM_PRS_RES_NAME_SIZE) == 0) {\r
+ DataPtr < (UINT8 *)((UINT8 *)Table + Table->Length - (TPM_PRS_RES_NAME_SIZE + TPM_POS_RES_TEMPLATE_MIN_SIZE));\r
+ DataPtr += 1)\r
+ {\r
+ if (CompareMem (DataPtr, TPM_PRS_RESL, TPM_PRS_RES_NAME_SIZE) == 0) {\r
//\r
// Jump over object name & BufferOp\r
//\r
} else if (*(DataPtr + NewPkgLength) == AML_DWORD_PREFIX) {\r
NewPkgLength += 5;\r
} else {\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
return EFI_UNSUPPORTED;\r
}\r
} else {\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
return EFI_UNSUPPORTED;\r
}\r
\r
NewPkgLength += 19 + IrqBuffserSize;\r
\r
if (NewPkgLength > OrignalPkgLength) {\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
//\r
// 2.1 Patch PkgLength. Only patch PkgLeadByte and first ByteData\r
//\r
- *DataPtr = (UINT8)((*DataPtr) & 0xF0) | (NewPkgLength & 0x0F);\r
+ *DataPtr = (UINT8)((*DataPtr) & 0xF0) | (NewPkgLength & 0x0F);\r
*(DataPtr + 1) = (UINT8)((NewPkgLength & 0xFF0) >> 4);\r
\r
//\r
}\r
}\r
\r
- if (DataPtr >= (UINT8 *) ((UINT8 *) Table + Table->Length - (TPM_PRS_RES_NAME_SIZE + TPM_POS_RES_TEMPLATE_MIN_SIZE))) {\r
+ if (DataPtr >= (UINT8 *)((UINT8 *)Table + Table->Length - (TPM_PRS_RES_NAME_SIZE + TPM_POS_RES_TEMPLATE_MIN_SIZE))) {\r
return EFI_NOT_FOUND;\r
}\r
\r
//\r
// 3.2 Patch Interrupt Table Length\r
//\r
- *(DataPtr + 4) = (UINT8)(IrqBuffserSize / sizeof(UINT32));\r
+ *(DataPtr + 4) = (UINT8)(IrqBuffserSize / sizeof (UINT32));\r
//\r
// 3.3 Copy patched InterruptNumBuffer\r
//\r
- CopyMem(DataPtr + 5, IrqBuffer, IrqBuffserSize);\r
+ CopyMem (DataPtr + 5, IrqBuffer, IrqBuffserSize);\r
\r
//\r
// 4. Jump over Interrupt descriptor and Patch END Tag, set Checksum field to 0\r
//\r
DataPtr += 2;\r
if (DataPtr < DataEndPtr) {\r
- SetMem(DataPtr, (UINTN)DataEndPtr - (UINTN)DataPtr, AML_NOOP_OP);\r
+ SetMem (DataPtr, (UINTN)DataEndPtr - (UINTN)DataPtr, AML_NOOP_OP);\r
}\r
\r
return EFI_SUCCESS;\r
**/\r
EFI_STATUS\r
UpdateHID (\r
- EFI_ACPI_DESCRIPTION_HEADER *Table\r
+ EFI_ACPI_DESCRIPTION_HEADER *Table\r
)\r
{\r
EFI_STATUS Status;\r
//\r
// Initialize HID with Default PNP string\r
//\r
- ZeroMem(Hid, TPM_HID_ACPI_SIZE);\r
+ ZeroMem (Hid, TPM_HID_ACPI_SIZE);\r
\r
//\r
// Get Manufacturer ID\r
//\r
- Status = Tpm2GetCapabilityManufactureID(&ManufacturerID);\r
- if (!EFI_ERROR(Status)) {\r
- DEBUG((DEBUG_INFO, "TPM_PT_MANUFACTURER 0x%08x\n", ManufacturerID));\r
+ Status = Tpm2GetCapabilityManufactureID (&ManufacturerID);\r
+ if (!EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_INFO, "TPM_PT_MANUFACTURER 0x%08x\n", ManufacturerID));\r
//\r
// ManufacturerID defined in TCG Vendor ID Registry\r
// may tailed with 0x00 or 0x20\r
//\r
- if ((ManufacturerID >> 24) == 0x00 || ((ManufacturerID >> 24) == 0x20)) {\r
+ if (((ManufacturerID >> 24) == 0x00) || ((ManufacturerID >> 24) == 0x20)) {\r
//\r
// HID containing PNP ID "NNN####"\r
// NNN is uppercase letter for Vendor ID specified by manufacturer\r
//\r
- CopyMem(Hid, &ManufacturerID, 3);\r
+ CopyMem (Hid, &ManufacturerID, 3);\r
} else {\r
//\r
// HID containing ACP ID "NNNN####"\r
// NNNN is uppercase letter for Vendor ID specified by manufacturer\r
//\r
- CopyMem(Hid, &ManufacturerID, 4);\r
+ CopyMem (Hid, &ManufacturerID, 4);\r
PnpHID = FALSE;\r
}\r
} else {\r
DEBUG ((DEBUG_ERROR, "Get TPM_PT_MANUFACTURER failed %x!\n", Status));\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
return Status;\r
}\r
\r
- Status = Tpm2GetCapabilityFirmwareVersion(&FirmwareVersion1, &FirmwareVersion2);\r
- if (!EFI_ERROR(Status)) {\r
- DEBUG((DEBUG_INFO, "TPM_PT_FIRMWARE_VERSION_1 0x%x\n", FirmwareVersion1));\r
- DEBUG((DEBUG_INFO, "TPM_PT_FIRMWARE_VERSION_2 0x%x\n", FirmwareVersion2));\r
+ Status = Tpm2GetCapabilityFirmwareVersion (&FirmwareVersion1, &FirmwareVersion2);\r
+ if (!EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_INFO, "TPM_PT_FIRMWARE_VERSION_1 0x%x\n", FirmwareVersion1));\r
+ DEBUG ((DEBUG_INFO, "TPM_PT_FIRMWARE_VERSION_2 0x%x\n", FirmwareVersion2));\r
//\r
// #### is Firmware Version 1\r
//\r
if (PnpHID) {\r
- AsciiSPrint(Hid + 3, TPM_HID_PNP_SIZE - 3, "%02d%02d", ((FirmwareVersion1 & 0xFFFF0000) >> 16), (FirmwareVersion1 & 0x0000FFFF));\r
+ AsciiSPrint (Hid + 3, TPM_HID_PNP_SIZE - 3, "%02d%02d", ((FirmwareVersion1 & 0xFFFF0000) >> 16), (FirmwareVersion1 & 0x0000FFFF));\r
} else {\r
- AsciiSPrint(Hid + 4, TPM_HID_ACPI_SIZE - 4, "%02d%02d", ((FirmwareVersion1 & 0xFFFF0000) >> 16), (FirmwareVersion1 & 0x0000FFFF));\r
+ AsciiSPrint (Hid + 4, TPM_HID_ACPI_SIZE - 4, "%02d%02d", ((FirmwareVersion1 & 0xFFFF0000) >> 16), (FirmwareVersion1 & 0x0000FFFF));\r
}\r
-\r
} else {\r
DEBUG ((DEBUG_ERROR, "Get TPM_PT_FIRMWARE_VERSION_X failed %x!\n", Status));\r
- ASSERT(FALSE);\r
+ ASSERT (FALSE);\r
return Status;\r
}\r
\r
// Patch HID in ASL code before loading the SSDT.\r
//\r
for (DataPtr = (UINT8 *)(Table + 1);\r
- DataPtr <= (UINT8 *) ((UINT8 *) Table + Table->Length - TPM_HID_PNP_SIZE);\r
- DataPtr += 1) {\r
- if (AsciiStrCmp((CHAR8 *)DataPtr, TPM_HID_TAG) == 0) {\r
+ DataPtr <= (UINT8 *)((UINT8 *)Table + Table->Length - TPM_HID_PNP_SIZE);\r
+ DataPtr += 1)\r
+ {\r
+ if (AsciiStrCmp ((CHAR8 *)DataPtr, TPM_HID_TAG) == 0) {\r
if (PnpHID) {\r
- CopyMem(DataPtr, Hid, TPM_HID_PNP_SIZE);\r
+ CopyMem (DataPtr, Hid, TPM_HID_PNP_SIZE);\r
//\r
// if HID is PNP ID, patch the last byte in HID TAG to Noop\r
//\r
*(DataPtr + TPM_HID_PNP_SIZE) = AML_NOOP_OP;\r
} else {\r
-\r
- CopyMem(DataPtr, Hid, TPM_HID_ACPI_SIZE);\r
+ CopyMem (DataPtr, Hid, TPM_HID_ACPI_SIZE);\r
}\r
- DEBUG((DEBUG_INFO, "TPM2 ACPI _HID is patched to %a\n", DataPtr));\r
+\r
+ DEBUG ((DEBUG_INFO, "TPM2 ACPI _HID is patched to %a\n", DataPtr));\r
\r
return Status;\r
}\r
}\r
\r
- DEBUG((DEBUG_ERROR, "TPM2 ACPI HID TAG for patch not found!\n"));\r
+ DEBUG ((DEBUG_ERROR, "TPM2 ACPI HID TAG for patch not found!\n"));\r
return EFI_NOT_FOUND;\r
}\r
\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_ACPI_TABLE_PROTOCOL *AcpiTable;\r
- UINTN TableKey;\r
- EFI_ACPI_DESCRIPTION_HEADER *Table;\r
- UINTN TableSize;\r
- UINT32 *PossibleIrqNumBuf;\r
- UINT32 PossibleIrqNumBufSize;\r
- BOOLEAN IsShortFormPkgLength;\r
+ EFI_STATUS Status;\r
+ EFI_ACPI_TABLE_PROTOCOL *AcpiTable;\r
+ UINTN TableKey;\r
+ EFI_ACPI_DESCRIPTION_HEADER *Table;\r
+ UINTN TableSize;\r
+ UINT32 *PossibleIrqNumBuf;\r
+ UINT32 PossibleIrqNumBufSize;\r
+ BOOLEAN IsShortFormPkgLength;\r
\r
IsShortFormPkgLength = FALSE;\r
\r
&gEfiCallerIdGuid,\r
EFI_SECTION_RAW,\r
0,\r
- (VOID **) &Table,\r
+ (VOID **)&Table,\r
&TableSize\r
);\r
ASSERT_EFI_ERROR (Status);\r
// Otherwise, the PCR record would be different after TPM FW update\r
// or the PCD configuration change.\r
//\r
- TpmMeasureAndLogData(\r
+ TpmMeasureAndLogData (\r
0,\r
EV_POST_CODE,\r
EV_POSTCODE_INFO_ACPI_DATA,\r
//\r
// Update Table version before measuring it to PCR\r
//\r
- Status = UpdatePPVersion(Table, (CHAR8 *)PcdGetPtr(PcdTcgPhysicalPresenceInterfaceVer));\r
+ Status = UpdatePPVersion (Table, (CHAR8 *)PcdGetPtr (PcdTcgPhysicalPresenceInterfaceVer));\r
ASSERT_EFI_ERROR (Status);\r
\r
DEBUG ((\r
DEBUG_INFO,\r
"Current physical presence interface version - %a\n",\r
- (CHAR8 *) PcdGetPtr(PcdTcgPhysicalPresenceInterfaceVer)\r
+ (CHAR8 *)PcdGetPtr (PcdTcgPhysicalPresenceInterfaceVer)\r
));\r
\r
//\r
// Update TPM2 HID after measuring it to PCR\r
//\r
- Status = UpdateHID(Table);\r
- if (EFI_ERROR(Status)) {\r
+ Status = UpdateHID (Table);\r
+ if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
- if (PcdGet32(PcdTpm2CurrentIrqNum) != 0) {\r
+ if (PcdGet32 (PcdTpm2CurrentIrqNum) != 0) {\r
//\r
// Patch _PRS interrupt resource only when TPM interrupt is supported\r
//\r
- PossibleIrqNumBuf = (UINT32 *)PcdGetPtr(PcdTpm2PossibleIrqNumBuf);\r
- PossibleIrqNumBufSize = (UINT32)PcdGetSize(PcdTpm2PossibleIrqNumBuf);\r
+ PossibleIrqNumBuf = (UINT32 *)PcdGetPtr (PcdTpm2PossibleIrqNumBuf);\r
+ PossibleIrqNumBufSize = (UINT32)PcdGetSize (PcdTpm2PossibleIrqNumBuf);\r
\r
- if (PossibleIrqNumBufSize <= MAX_PRS_INT_BUF_SIZE && (PossibleIrqNumBufSize % sizeof(UINT32)) == 0) {\r
- Status = UpdatePossibleResource(Table, PossibleIrqNumBuf, PossibleIrqNumBufSize, &IsShortFormPkgLength);\r
+ if ((PossibleIrqNumBufSize <= MAX_PRS_INT_BUF_SIZE) && ((PossibleIrqNumBufSize % sizeof (UINT32)) == 0)) {\r
+ Status = UpdatePossibleResource (Table, PossibleIrqNumBuf, PossibleIrqNumBufSize, &IsShortFormPkgLength);\r
DEBUG ((\r
DEBUG_INFO,\r
"UpdatePossibleResource status - %x. TPM2 service may not ready in OS.\n",\r
DEBUG_INFO,\r
"PcdTpm2PossibleIrqNumBuf size %x is not correct. TPM2 service may not ready in OS.\n",\r
PossibleIrqNumBufSize\r
- ));\r
+ ));\r
}\r
}\r
\r
ASSERT (Table->OemTableId == SIGNATURE_64 ('T', 'p', 'm', '2', 'T', 'a', 'b', 'l'));\r
- CopyMem (Table->OemId, PcdGetPtr (PcdAcpiDefaultOemId), sizeof (Table->OemId) );\r
- mTcgNvs = AssignOpRegion (Table, SIGNATURE_32 ('T', 'N', 'V', 'S'), (UINT16) sizeof (TCG_NVS));\r
+ CopyMem (Table->OemId, PcdGetPtr (PcdAcpiDefaultOemId), sizeof (Table->OemId));\r
+ mTcgNvs = AssignOpRegion (Table, SIGNATURE_32 ('T', 'N', 'V', 'S'), (UINT16)sizeof (TCG_NVS));\r
ASSERT (mTcgNvs != NULL);\r
- mTcgNvs->TpmIrqNum = PcdGet32(PcdTpm2CurrentIrqNum);\r
+ mTcgNvs->TpmIrqNum = PcdGet32 (PcdTpm2CurrentIrqNum);\r
mTcgNvs->IsShortFormPkgLength = IsShortFormPkgLength;\r
\r
Status = ExchangeCommonBuffer (mTcgNvs);\r
//\r
// Publish the TPM ACPI table. Table is re-checksummed.\r
//\r
- Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **) &AcpiTable);\r
+ Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **)&AcpiTable);\r
ASSERT_EFI_ERROR (Status);\r
\r
TableKey = 0;\r
- Status = AcpiTable->InstallAcpiTable (\r
- AcpiTable,\r
- Table,\r
- TableSize,\r
- &TableKey\r
- );\r
+ Status = AcpiTable->InstallAcpiTable (\r
+ AcpiTable,\r
+ Table,\r
+ TableSize,\r
+ &TableKey\r
+ );\r
ASSERT_EFI_ERROR (Status);\r
\r
return Status;\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_ACPI_TABLE_PROTOCOL *AcpiTable;\r
- UINTN TableKey;\r
- UINT64 OemTableId;\r
- EFI_TPM2_ACPI_CONTROL_AREA *ControlArea;\r
- TPM2_PTP_INTERFACE_TYPE InterfaceType;\r
+ EFI_STATUS Status;\r
+ EFI_ACPI_TABLE_PROTOCOL *AcpiTable;\r
+ UINTN TableKey;\r
+ UINT64 OemTableId;\r
+ EFI_TPM2_ACPI_CONTROL_AREA *ControlArea;\r
+ TPM2_PTP_INTERFACE_TYPE InterfaceType;\r
\r
//\r
// Measure to PCR[0] with event EV_POST_CODE ACPI DATA.\r
// Otherwise, the PCR record would be different after event log update\r
// or the PCD configuration change.\r
//\r
- TpmMeasureAndLogData(\r
+ TpmMeasureAndLogData (\r
0,\r
EV_POST_CODE,\r
EV_POSTCODE_INFO_ACPI_DATA,\r
mTpm2AcpiTemplate.Header.Length\r
);\r
\r
- mTpm2AcpiTemplate.Header.Revision = PcdGet8(PcdTpm2AcpiTableRev);\r
- DEBUG((DEBUG_INFO, "Tpm2 ACPI table revision is %d\n", mTpm2AcpiTemplate.Header.Revision));\r
+ mTpm2AcpiTemplate.Header.Revision = PcdGet8 (PcdTpm2AcpiTableRev);\r
+ DEBUG ((DEBUG_INFO, "Tpm2 ACPI table revision is %d\n", mTpm2AcpiTemplate.Header.Revision));\r
\r
//\r
// PlatformClass is only valid for version 4 and above\r
// BIT16~31: Reserved\r
//\r
if (mTpm2AcpiTemplate.Header.Revision >= EFI_TPM2_ACPI_TABLE_REVISION_4) {\r
- mTpm2AcpiTemplate.Flags = (mTpm2AcpiTemplate.Flags & 0xFFFF0000) | PcdGet8(PcdTpmPlatformClass);\r
- DEBUG((DEBUG_INFO, "Tpm2 ACPI table PlatformClass is %d\n", (mTpm2AcpiTemplate.Flags & 0x0000FFFF)));\r
+ mTpm2AcpiTemplate.Flags = (mTpm2AcpiTemplate.Flags & 0xFFFF0000) | PcdGet8 (PcdTpmPlatformClass);\r
+ DEBUG ((DEBUG_INFO, "Tpm2 ACPI table PlatformClass is %d\n", (mTpm2AcpiTemplate.Flags & 0x0000FFFF)));\r
}\r
\r
- mTpm2AcpiTemplate.Laml = PcdGet32(PcdTpm2AcpiTableLaml);\r
- mTpm2AcpiTemplate.Lasa = PcdGet64(PcdTpm2AcpiTableLasa);\r
+ mTpm2AcpiTemplate.Laml = PcdGet32 (PcdTpm2AcpiTableLaml);\r
+ mTpm2AcpiTemplate.Lasa = PcdGet64 (PcdTpm2AcpiTableLasa);\r
if ((mTpm2AcpiTemplate.Header.Revision < EFI_TPM2_ACPI_TABLE_REVISION_4) ||\r
- (mTpm2AcpiTemplate.Laml == 0) || (mTpm2AcpiTemplate.Lasa == 0)) {\r
+ (mTpm2AcpiTemplate.Laml == 0) || (mTpm2AcpiTemplate.Lasa == 0))\r
+ {\r
//\r
// If version is smaller than 4 or Laml/Lasa is not valid, rollback to original Length.\r
//\r
- mTpm2AcpiTemplate.Header.Length = sizeof(EFI_TPM2_ACPI_TABLE);\r
+ mTpm2AcpiTemplate.Header.Length = sizeof (EFI_TPM2_ACPI_TABLE);\r
}\r
\r
- InterfaceType = PcdGet8(PcdActiveTpmInterfaceType);\r
+ InterfaceType = PcdGet8 (PcdActiveTpmInterfaceType);\r
switch (InterfaceType) {\r
- case Tpm2PtpInterfaceCrb:\r
- mTpm2AcpiTemplate.StartMethod = EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE;\r
- mTpm2AcpiTemplate.AddressOfControlArea = PcdGet64 (PcdTpmBaseAddress) + 0x40;\r
- ControlArea = (EFI_TPM2_ACPI_CONTROL_AREA *)(UINTN)mTpm2AcpiTemplate.AddressOfControlArea;\r
- ControlArea->CommandSize = 0xF80;\r
- ControlArea->ResponseSize = 0xF80;\r
- ControlArea->Command = PcdGet64 (PcdTpmBaseAddress) + 0x80;\r
- ControlArea->Response = PcdGet64 (PcdTpmBaseAddress) + 0x80;\r
- break;\r
- case Tpm2PtpInterfaceFifo:\r
- case Tpm2PtpInterfaceTis:\r
- break;\r
- default:\r
- DEBUG((DEBUG_ERROR, "TPM2 InterfaceType get error! %d\n", InterfaceType));\r
- break;\r
+ case Tpm2PtpInterfaceCrb:\r
+ mTpm2AcpiTemplate.StartMethod = EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE;\r
+ mTpm2AcpiTemplate.AddressOfControlArea = PcdGet64 (PcdTpmBaseAddress) + 0x40;\r
+ ControlArea = (EFI_TPM2_ACPI_CONTROL_AREA *)(UINTN)mTpm2AcpiTemplate.AddressOfControlArea;\r
+ ControlArea->CommandSize = 0xF80;\r
+ ControlArea->ResponseSize = 0xF80;\r
+ ControlArea->Command = PcdGet64 (PcdTpmBaseAddress) + 0x80;\r
+ ControlArea->Response = PcdGet64 (PcdTpmBaseAddress) + 0x80;\r
+ break;\r
+ case Tpm2PtpInterfaceFifo:\r
+ case Tpm2PtpInterfaceTis:\r
+ break;\r
+ default:\r
+ DEBUG ((DEBUG_ERROR, "TPM2 InterfaceType get error! %d\n", InterfaceType));\r
+ break;\r
}\r
\r
CopyMem (mTpm2AcpiTemplate.Header.OemId, PcdGetPtr (PcdAcpiDefaultOemId), sizeof (mTpm2AcpiTemplate.Header.OemId));\r
OemTableId = PcdGet64 (PcdAcpiDefaultOemTableId);\r
CopyMem (&mTpm2AcpiTemplate.Header.OemTableId, &OemTableId, sizeof (UINT64));\r
- mTpm2AcpiTemplate.Header.OemRevision = PcdGet32 (PcdAcpiDefaultOemRevision);\r
- mTpm2AcpiTemplate.Header.CreatorId = PcdGet32 (PcdAcpiDefaultCreatorId);\r
- mTpm2AcpiTemplate.Header.CreatorRevision = PcdGet32 (PcdAcpiDefaultCreatorRevision);\r
+ mTpm2AcpiTemplate.Header.OemRevision = PcdGet32 (PcdAcpiDefaultOemRevision);\r
+ mTpm2AcpiTemplate.Header.CreatorId = PcdGet32 (PcdAcpiDefaultCreatorId);\r
+ mTpm2AcpiTemplate.Header.CreatorRevision = PcdGet32 (PcdAcpiDefaultCreatorRevision);\r
\r
//\r
// Construct ACPI table\r
//\r
- Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **) &AcpiTable);\r
+ Status = gBS->LocateProtocol (&gEfiAcpiTableProtocolGuid, NULL, (VOID **)&AcpiTable);\r
ASSERT_EFI_ERROR (Status);\r
\r
Status = AcpiTable->InstallAcpiTable (\r
EFI_STATUS\r
EFIAPI\r
InitializeTcgAcpi (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
- if (!CompareGuid (PcdGetPtr(PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceTpm20DtpmGuid)){\r
+ if (!CompareGuid (PcdGetPtr (PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceTpm20DtpmGuid)) {\r
DEBUG ((DEBUG_ERROR, "No TPM2 DTPM instance required!\n"));\r
return EFI_UNSUPPORTED;\r
}\r
\r
return EFI_SUCCESS;\r
}\r
-\r