]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2Keyboard.h
Remove extra #includes where possible to make build more efficient
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / Ps2KeyboardDxe / Ps2Keyboard.h
index 7953b2bc745998098b126eff7523b5a349cbc19c..1027f0ca10b34287284bd4018a50dc6177fddbb3 100644 (file)
@@ -1,7 +1,7 @@
-/**@file\r
+/** @file\r
   PS/2 keyboard driver header file\r
 \r
-Copyright (c) 2006 - 2007, Intel Corporation\r
+Copyright (c) 2006 - 2009, Intel Corporation\r
 All rights reserved. This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -12,11 +12,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 **/\r
 \r
-#ifndef _PS2KEYBOARD_H\r
-#define _PS2KEYBOARD_H\r
+#ifndef _PS2KEYBOARD_H_\r
+#define _PS2KEYBOARD_H_\r
 \r
-#include <PiDxe.h>\r
-#include <Framework/StatusCode.h>\r
+#include <FrameworkDxe.h>\r
 \r
 #include <Protocol/SimpleTextIn.h>\r
 #include <Protocol/SimpleTextInEx.h>\r
@@ -33,13 +32,21 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/BaseLib.h>\r
 #include <Library/BaseMemoryLib.h>\r
+#include <Library/TimerLib.h>\r
+\r
+//\r
+// Global Variables\r
+//\r
+extern EFI_DRIVER_BINDING_PROTOCOL   gKeyboardControllerDriver;\r
+extern EFI_COMPONENT_NAME_PROTOCOL   gPs2KeyboardComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL  gPs2KeyboardComponentName2;\r
 \r
 //\r
 // Driver Private Data\r
 //\r
 #define KEYBOARD_BUFFER_MAX_COUNT         32\r
-#define KEYBOARD_CONSOLE_IN_DEV_SIGNATURE EFI_SIGNATURE_32 ('k', 'k', 'e', 'y')\r
-#define KEYBOARD_CONSOLE_IN_EX_NOTIFY_SIGNATURE EFI_SIGNATURE_32 ('k', 'c', 'e', 'n')\r
+#define KEYBOARD_CONSOLE_IN_DEV_SIGNATURE SIGNATURE_32 ('k', 'k', 'e', 'y')\r
+#define KEYBOARD_CONSOLE_IN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('k', 'c', 'e', 'n')\r
 \r
 typedef struct _KEYBOARD_CONSOLE_IN_EX_NOTIFY {\r
   UINTN                                 Signature;\r
@@ -119,15 +126,6 @@ typedef struct {
 \r
 #define TABLE_END 0x0\r
 \r
-//\r
-// Global Variables\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL   gKeyboardControllerDriver;\r
-extern EFI_COMPONENT_NAME_PROTOCOL   gPs2KeyboardComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL  gPs2KeyboardComponentName2;\r
-\r
-extern EFI_GUID                      gSimpleTextInExNotifyGuid;\r
-\r
 //\r
 // Driver entry point\r
 //\r
@@ -146,8 +144,7 @@ EFIAPI
 InstallPs2KeyboardDriver (\r
   IN EFI_HANDLE           ImageHandle,\r
   IN EFI_SYSTEM_TABLE     *SystemTable\r
-  )\r
-;\r
+  );\r
 \r
 #define KEYBOARD_8042_DATA_REGISTER     0x60\r
 #define KEYBOARD_8042_STATUS_REGISTER   0x64\r
@@ -156,6 +153,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
@@ -182,6 +180,38 @@ InstallPs2KeyboardDriver (
 #define SCANCODE_SYS_REQ_MAKE           0x37\r
 #define SCANCODE_MAX_MAKE               0x60\r
 \r
+#define KEYBOARD_STATUS_REGISTER_HAS_OUTPUT_DATA     BIT0        ///< 0 - Output register has no data; 1 - Output register has data\r
+#define KEYBOARD_STATUS_REGISTER_HAS_INPUT_DATA      BIT1        ///< 0 - Input register has no data;  1 - Input register has data\r
+#define KEYBOARD_STATUS_REGISTER_SYSTEM_FLAG         BIT2        ///< Set to 0 after power on reset\r
+#define KEYBOARD_STATUS_REGISTER_INPUT_DATA_TYPE     BIT3        ///< 0 - Data in input register is data; 1 - Data in input register is command\r
+#define KEYBOARD_STATUS_REGISTER_ENABLE_FLAG         BIT4        ///< 0 - Keyboard is disable; 1 - Keyboard is enable\r
+#define KEYBOARD_STATUS_REGISTER_TRANSMIT_TIMEOUT    BIT5        ///< 0 - Transmit is complete without timeout; 1 - Transmit is timeout without complete\r
+#define KEYBOARD_STATUS_REGISTER_RECEIVE_TIMEOUT     BIT6        ///< 0 - Receive is complete without timeout; 1 - Receive is timeout without complete\r
+#define KEYBOARD_STATUS_REGISTER_PARITY              BIT7        ///< 0 - Odd parity; 1 - Even parity\r
+\r
+#define KEYBOARD_8042_COMMAND_READ                          0x20\r
+#define KEYBOARD_8042_COMMAND_WRITE                         0x60\r
+#define KEYBOARD_8042_COMMAND_DISABLE_MOUSE_INTERFACE       0xA7\r
+#define KEYBOARD_8042_COMMAND_ENABLE_MOUSE_INTERFACE        0xA8\r
+#define KEYBOARD_8042_COMMAND_CONTROLLER_SELF_TEST          0xAA\r
+#define KEYBOARD_8042_COMMAND_KEYBOARD_INTERFACE_SELF_TEST  0xAB\r
+#define KEYBOARD_8042_COMMAND_DISABLE_KEYBOARD_INTERFACE    0xAD\r
+\r
+#define KEYBOARD_8048_COMMAND_CLEAR_OUTPUT_DATA             0xF4\r
+#define KEYBOARD_8048_COMMAND_RESET                         0xFF\r
+#define KEYBOARD_8048_COMMAND_SELECT_SCAN_CODE_SET          0xF0\r
+\r
+#define KEYBOARD_8048_RETURN_8042_BAT_SUCCESS               0xAA\r
+#define KEYBOARD_8048_RETURN_8042_BAT_ERROR                 0xFC\r
+#define KEYBOARD_8048_RETURN_8042_ACK                       0xFA\r
+\r
+\r
+//\r
+// Keyboard Controller Status\r
+//\r
+#define KBC_PARE  0x80  // Parity Error\r
+#define KBC_TIM   0x40  // General Time Out\r
+\r
 //\r
 // Other functions that are used among .c files\r
 //\r
@@ -197,11 +227,10 @@ InstallPs2KeyboardDriver (
 EFI_STATUS\r
 UpdateStatusLights (\r
   IN KEYBOARD_CONSOLE_IN_DEV *ConsoleIn\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  write key to keyboard\r
+  write key to keyboard.\r
 \r
   @param ConsoleIn Pointer to instance of KEYBOARD_CONSOLE_IN_DEV\r
   @param Data      value wanted to be written\r
@@ -214,8 +243,7 @@ EFI_STATUS
 KeyboardRead (\r
   IN KEYBOARD_CONSOLE_IN_DEV  *ConsoleIn,\r
   OUT UINT8                   *Data\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Get scancode from scancode buffer\r
@@ -231,11 +259,10 @@ KeyboardRead (
 EFI_STATUS\r
 KeyGetchar (\r
   IN OUT KEYBOARD_CONSOLE_IN_DEV *ConsoleIn\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  Perform 8042 controller and keyboard Initialization\r
+  Perform 8042 controller and keyboard Initialization.\r
   If ExtendedVerification is TRUE, do additional test for\r
   the keyboard interface\r
 \r
@@ -249,11 +276,10 @@ EFI_STATUS
 InitKeyboard (\r
   IN OUT KEYBOARD_CONSOLE_IN_DEV *ConsoleIn,\r
   IN BOOLEAN                     ExtendedVerification\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  Disable the keyboard interface of the 8042 controller\r
+  Disable the keyboard interface of the 8042 controller.\r
 \r
   @param ConsoleIn   - the device instance\r
 \r
@@ -263,8 +289,7 @@ InitKeyboard (
 EFI_STATUS\r
 DisableKeyboard (\r
   IN KEYBOARD_CONSOLE_IN_DEV *ConsoleIn\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Timer event handler: read a series of scancodes from 8042\r
@@ -282,8 +307,7 @@ EFIAPI
 KeyboardTimerHandler (\r
   IN EFI_EVENT    Event,\r
   IN VOID         *Context\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   logic reset keyboard\r
@@ -301,8 +325,7 @@ EFIAPI
 KeyboardEfiReset (\r
   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *This,\r
   IN  BOOLEAN                         ExtendedVerification\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Implement SIMPLE_TEXT_IN.ReadKeyStroke().\r
@@ -318,8 +341,7 @@ EFIAPI
 KeyboardReadKeyStroke (\r
   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL  *This,\r
   OUT EFI_INPUT_KEY                   *Key\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Event notification function for SIMPLE_TEXT_IN.WaitForKey event\r
@@ -334,11 +356,10 @@ EFIAPI
 KeyboardWaitForKey (\r
   IN  EFI_EVENT               Event,\r
   IN  VOID                    *Context\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  Read status register\r
+  Read status register.\r
 \r
   @param ConsoleIn  Pointer to instance of KEYBOARD_CONSOLE_IN_DEV\r
 \r
@@ -348,15 +369,14 @@ KeyboardWaitForKey (
 UINT8\r
 KeyReadStatusRegister (\r
   IN KEYBOARD_CONSOLE_IN_DEV *ConsoleIn\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Check whether there is Ps/2 Keyboard device in system by 0xF4 Keyboard Command\r
   If Keyboard receives 0xF4, it will respond with 'ACK'. If it doesn't respond, the device\r
   should not be in system.\r
 \r
-  @param[in]  BiosKeyboardPrivate   Keyboard Private Data Structure\r
+  @param[in]  ConsoleIn   Pointer to instance of KEYBOARD_CONSOLE_IN_DEV\r
 \r
   @retval     TRUE                  Keyboard in System.\r
   @retval     FALSE                 Keyboard not in System.\r
@@ -365,8 +385,7 @@ BOOLEAN
 EFIAPI\r
 CheckKeyboardConnect (\r
   IN KEYBOARD_CONSOLE_IN_DEV *ConsoleIn\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Event notification function for SIMPLE_TEXT_INPUT_EX_PROTOCOL.WaitForKeyEx event\r
@@ -381,8 +400,7 @@ EFIAPI
 KeyboardWaitForKeyEx (\r
   IN  EFI_EVENT               Event,\r
   IN  VOID                    *Context\r
-  )\r
-;  \r
+  );  \r
 \r
 //\r
 // Simple Text Input Ex protocol function prototypes\r
@@ -404,8 +422,7 @@ EFIAPI
 KeyboardEfiResetEx (\r
   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
   IN BOOLEAN                            ExtendedVerification\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
     Reads the next keystroke from the input device. The WaitForKey Event can \r
@@ -428,8 +445,7 @@ EFIAPI
 KeyboardReadKeyStrokeEx (\r
   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
   OUT EFI_KEY_DATA                      *KeyData\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Set certain state for the input device.\r
@@ -450,8 +466,7 @@ EFIAPI
 KeyboardSetState (\r
   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
   IN EFI_KEY_TOGGLE_STATE               *KeyToggleState\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
     Register a notification function for a particular keystroke for the input device.\r
@@ -475,8 +490,7 @@ KeyboardRegisterKeyNotify (
   IN EFI_KEY_DATA                       *KeyData,\r
   IN EFI_KEY_NOTIFY_FUNCTION            KeyNotificationFunction,\r
   OUT EFI_HANDLE                        *NotifyHandle\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
     Remove a registered notification function from a particular keystroke.\r
@@ -495,7 +509,6 @@ EFIAPI
 KeyboardUnregisterKeyNotify (\r
   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
   IN EFI_HANDLE                         NotificationHandle\r
-  )\r
-;\r
+  );\r
 \r
 #endif\r