//\r
// Validation\r
//\r
- if (TrEEConfiguration.TpmDevice > TPM_DEVICE_MAX) {\r
- TrEEConfiguration.TpmDevice = TPM_DEVICE_DEFAULT;\r
+ if ((TrEEConfiguration.TpmDevice > TPM_DEVICE_MAX) || (TrEEConfiguration.TpmDevice < TPM_DEVICE_MIN)) {\r
+ TrEEConfiguration.TpmDevice = TPM_DEVICE_DEFAULT;\r
}\r
\r
//\r
\r
if (PcdGetBool (PcdTpmAutoDetection)) {\r
TpmDevice = DetectTpmDevice (TrEEConfiguration.TpmDevice);\r
- DEBUG ((EFI_D_ERROR, "TrEEConfiguration.TpmDevice final: %x\n", TpmDevice));\r
- TrEEConfiguration.TpmDevice = TpmDevice;\r
+ DEBUG ((EFI_D_ERROR, "TpmDevice final: %x\n", TpmDevice));\r
+ if (TpmDevice != TPM_DEVICE_NULL) {\r
+ TrEEConfiguration.TpmDevice = TpmDevice;\r
+ }\r
+ } else {\r
+ TpmDevice = TrEEConfiguration.TpmDevice;\r
}\r
\r
//\r
// This is work-around because there is no gurantee DynamicHiiPcd can return correct value in DXE phase.\r
// Using DynamicPcd instead.\r
//\r
+ // NOTE: TrEEConfiguration variable contains the desired TpmDevice type,\r
+ // while PcdTpmInstanceGuid PCD contains the real detected TpmDevice type\r
+ //\r
for (Index = 0; Index < sizeof(mTpmInstanceId)/sizeof(mTpmInstanceId[0]); Index++) {\r
- if (TrEEConfiguration.TpmDevice == mTpmInstanceId[Index].TpmDevice) {\r
+ if (TpmDevice == mTpmInstanceId[Index].TpmDevice) {\r
Size = sizeof(mTpmInstanceId[Index].TpmInstanceGuid);\r
PcdSetPtr (PcdTpmInstanceGuid, &Size, &mTpmInstanceId[Index].TpmInstanceGuid);\r
- DEBUG ((EFI_D_ERROR, "TrEEConfiguration.TpmDevice PCD: %g\n", &mTpmInstanceId[Index].TpmInstanceGuid));\r
+ DEBUG ((EFI_D_ERROR, "TpmDevice PCD: %g\n", &mTpmInstanceId[Index].TpmInstanceGuid));\r
break;\r
}\r
}\r