+ //\r
+ // Command Completion check timeout. Cancel the currently executing command by writing TPM_CRB_CTRL_CANCEL,\r
+ // Expect TPM_RC_CANCELLED or successfully completed response.\r
+ //\r
+ MmioWrite32((UINTN)&CrbReg->CrbControlCancel, PTP_CRB_CONTROL_CANCEL);\r
+ Status = PtpCrbWaitRegisterBits (\r
+ &CrbReg->CrbControlStart,\r
+ 0,\r
+ PTP_CRB_CONTROL_START,\r
+ PTP_TIMEOUT_B\r
+ );\r
+ MmioWrite32((UINTN)&CrbReg->CrbControlCancel, 0);\r
+\r
+ if (EFI_ERROR(Status)) {\r
+ //\r
+ // Still in Command Execution state. Try to goIdle, the behavior is agnostic.\r
+ //\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto GoIdle_Exit;\r
+ }\r