EFI_STATUS Status1;\r
UINT8 CommandByte;\r
EFI_PS2_POLICY_PROTOCOL *Ps2Policy;\r
+ UINT32 TryTime;\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
mEnableMouseInterface = TRUE;\r
+ TryTime = 0;\r
\r
//\r
// Get Ps2 policy to set this\r
//\r
- Status = gBS->LocateProtocol (\r
- &gEfiPs2PolicyProtocolGuid,\r
- NULL,\r
- (VOID **) &Ps2Policy\r
- );\r
+ gBS->LocateProtocol (\r
+ &gEfiPs2PolicyProtocolGuid,\r
+ NULL,\r
+ (VOID **) &Ps2Policy\r
+ );\r
\r
REPORT_STATUS_CODE_WITH_DEVICE_PATH (\r
EFI_PROGRESS_CODE,\r
\r
//\r
// Perform a read to cleanup the Status Register's\r
- // output buffer full bits\r
+ // output buffer full bits within MAX TRY times\r
//\r
- while (!EFI_ERROR (Status)) {\r
+ while (!EFI_ERROR (Status) && TryTime < KEYBOARD_MAX_TRY) {\r
Status = KeyboardRead (ConsoleIn, &CommandByte);\r
+ TryTime ++;\r
+ }\r
+ //\r
+ // Exceed the max try times. The device may be error.\r
+ //\r
+ if (TryTime == KEYBOARD_MAX_TRY) {\r
+ Status = EFI_DEVICE_ERROR;\r
+ goto Done;\r
}\r
//\r
// We should disable mouse interface during the initialization process\r
#define KEYBOARD_KBEN 0xF4\r
#define KEYBOARD_CMDECHO_ACK 0xFA\r
\r
+#define KEYBOARD_MAX_TRY 256 // 256\r
#define KEYBOARD_TIMEOUT 65536 // 0.07s\r
#define KEYBOARD_WAITFORVALUE_TIMEOUT 1000000 // 1s\r
#define KEYBOARD_BAT_TIMEOUT 4000000 // 4s\r
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciCfgDisable\r
gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPciCfg2Disable\r
\r
+[FixedPcd.common]\r
+ ##\r
+ # Disable ASSERT for unalign PCI IO access according to PI Volume 1 and PeiCis Spec\r
+ # Spec has not this requirement.\r
+ ##\r
+ gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0E\r
+\r
[Depex]\r
TRUE\r
\r