#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
\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
#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
#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