]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1. Add Max Try Times check to clear Ps2Kbd status register. If exceed the max try...
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 21 Nov 2008 05:55:40 +0000 (05:55 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 21 Nov 2008 05:55:40 +0000 (05:55 +0000)
2. To follow PI spec, PciCfg PPI doesn't require ASSERT for the unalign PCI IO access.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6659 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KbdCtrller.c
IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2Keyboard.h
IntelFrameworkModulePkg/Universal/PcatSingleSegmentPciCfgPei/PcatSingleSegmentPciCfgPei.inf
MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei.inf

index 7fa0fb4d21a21cb6d17087a31094a2ab3199def9..973cf24afb8f5748da49ad2e25d0b6a6a0a435ec 100644 (file)
@@ -1642,18 +1642,20 @@ InitKeyboard (
   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
@@ -1663,10 +1665,18 @@ InitKeyboard (
 \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
index 95c036d7405ca11b4fee263065fb978d7a5506f5..d7cf700efad533607609d9dace101024fba6e7b1 100644 (file)
@@ -155,6 +155,7 @@ InstallPs2KeyboardDriver (
 #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
index 010d84021010c217a0f06b0b93d9c8f7a0ac7306..eb29457ebd2123e0e1ee1460ca812939ded027db 100644 (file)
   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
index 6bb9d897bdb98364d43c1cc7ab9edb0de9a01ea8..516d212728b44264a65201dd3f324ac7bf97cc35 100644 (file)
@@ -51,3 +51,9 @@
 [Depex]\r
   TRUE\r
 \r
+[FixedPcd.common]\r
+  ##\r
+  #  Disable ASSERT for unalign PCI IO access according to PI Spec Volume 1\r
+  #  Spec has not this requirement.\r
+  ##\r
+       gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0E\r