SecurityPkg: Tpm2DeviceLib: Enable CapCRBIdleBypass support
Directly transition from CMD completion to CMD Ready state if device supports IdleByPass Cc: Long Qin <qin.long@intel.com> Cc: Yao Jiewen <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Chao Zhang <chao.b.zhang@intel.com> Reviewed-by: Long Qin <qin.long@intel.com>
This commit is contained in:
@@ -31,6 +31,18 @@ Tpm2GetPtpInterface (
|
||||
IN VOID *Register
|
||||
);
|
||||
|
||||
/**
|
||||
Return PTP CRB interface IdleByPass state.
|
||||
|
||||
@param[in] Register Pointer to PTP register.
|
||||
|
||||
@return PTP CRB interface IdleByPass state.
|
||||
**/
|
||||
UINT8
|
||||
Tpm2GetIdleByPass (
|
||||
IN VOID *Register
|
||||
);
|
||||
|
||||
/**
|
||||
This service enables the sending of commands to the TPM2.
|
||||
|
||||
@@ -140,6 +152,7 @@ Tpm2DeviceLibConstructor (
|
||||
)
|
||||
{
|
||||
TPM2_PTP_INTERFACE_TYPE PtpInterface;
|
||||
UINT8 IdleByPass;
|
||||
|
||||
//
|
||||
// Cache current active TpmInterfaceType only when needed
|
||||
@@ -148,5 +161,11 @@ Tpm2DeviceLibConstructor (
|
||||
PtpInterface = Tpm2GetPtpInterface ((VOID *) (UINTN) PcdGet64 (PcdTpmBaseAddress));
|
||||
PcdSet8S(PcdActiveTpmInterfaceType, PtpInterface);
|
||||
}
|
||||
|
||||
if (PcdGet8(PcdActiveTpmInterfaceType) == PtpInterfaceCrb && PcdGet8(PcdCRBIdleByPass) == 0xFF) {
|
||||
IdleByPass = Tpm2GetIdleByPass((VOID *) (UINTN) PcdGet64 (PcdTpmBaseAddress));
|
||||
PcdSet8S(PcdCRBIdleByPass, IdleByPass);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
Reference in New Issue
Block a user