--- /dev/null
+/**@file\r
+ PS2 Mouse Communication Interface \r
+\r
+ \r
+Copyright (c) 2006 - 2007, 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
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _COMMPS2_H_\r
+#define _COMMPS2_H_\r
+\r
+#define PS2_PACKET_LENGTH 3\r
+#define PS2_SYNC_MASK 0xc\r
+#define PS2_SYNC_BYTE 0x8\r
+\r
+#define IS_PS2_SYNC_BYTE(byte) ((byte & PS2_SYNC_MASK) == PS2_SYNC_BYTE)\r
+\r
+#define PS2_READ_BYTE_ONE 0\r
+#define PS2_READ_DATA_BYTE 1\r
+#define PS2_PROCESS_PACKET 2\r
+\r
+#define TIMEOUT 50000\r
+#define BAT_TIMEOUT 500000\r
+\r
+//\r
+// 8042 I/O Port\r
+//\r
+#define KBC_DATA_PORT 0x60\r
+#define KBC_CMD_STS_PORT 0x64\r
+\r
+//\r
+// 8042 Command\r
+//\r
+#define READ_CMD_BYTE 0x20\r
+#define WRITE_CMD_BYTE 0x60\r
+#define DISABLE_AUX 0xa7\r
+#define ENABLE_AUX 0xa8\r
+#define SELF_TEST 0xaa\r
+#define DISABLE_KB 0xad\r
+#define ENABLE_KB 0xae\r
+#define WRITE_AUX_DEV 0xd4\r
+\r
+#define CMD_SYS_FLAG 0x04\r
+#define CMD_KB_STS 0x10\r
+#define CMD_KB_DIS 0x10\r
+#define CMD_KB_EN 0x0\r
+\r
+//\r
+// 8042 Auxiliary Device Command\r
+//\r
+#define SETSF1_CMD 0xe6\r
+#define SETSF2_CMD 0xe7\r
+#define SETRE_CMD 0xe8\r
+#define READ_CMD 0xeb\r
+#define SETRM_CMD 0xf0\r
+#define SETSR_CMD 0xf3\r
+#define ENABLE_CMD 0xf4\r
+#define DISABLE_CMD 0xf5\r
+#define RESET_CMD 0xff\r
+\r
+//\r
+// return code\r
+//\r
+#define PS2_ACK 0xfa\r
+#define PS2_RESEND 0xfe\r
+#define PS2MOUSE_BAT1 0xaa\r
+#define PS2MOUSE_BAT2 0x0\r
+\r
+//\r
+// Keyboard Controller Status\r
+//\r
+#define KBC_PARE 0x80 // Parity Error\r
+#define KBC_TIM 0x40 // General Time Out\r
+#define KBC_AUXB 0x20 // Output buffer for auxiliary device (PS/2):\r
+// 0 - Holds keyboard data\r
+// 1 - Holds data for auxiliary device\r
+//\r
+#define KBC_KEYL 0x10 // Keyboard lock status:\r
+// 0 - keyboard locked\r
+// 1 - keyboard free\r
+//\r
+#define KBC_CD 0x08 // Command/Data:\r
+// 0 - data byte written via port 60h\r
+// 1 - command byte written via port 64h\r
+//\r
+#define KBC_SYSF 0x04 // System Flag:\r
+// 0 - power-on reset\r
+// 1 - self-test successful\r
+//\r
+#define KBC_INPB 0x02 // Input Buffer Status :\r
+// 0 - input buffer empty\r
+// 1 - CPU data in input buffer\r
+//\r
+#define KBC_OUTB 0x01 // Output Buffer Status :\r
+// 0 - output buffer empty\r
+// 1 - keyboard controller data in output buffer\r
+//\r
+EFI_STATUS\r
+KbcSelfTest (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+KbcEnableAux (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+KbcDisableAux (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+KbcEnableKb (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+KbcDisableKb (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+CheckKbStatus (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ OUT BOOLEAN *KeyboardEnable\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+ KeyboardEnable - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+PS2MouseReset (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+PS2MouseSetSampleRate (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN MOUSE_SR SampleRate\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+ SampleRate - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+PS2MouseSetResolution (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN MOUSE_RE Resolution\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+ Resolution - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+PS2MouseSetScaling (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN MOUSE_SF Scaling\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+ Scaling - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+PS2MouseEnable (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ IsaIo - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+PS2MouseGetPacket (\r
+ PS2_MOUSE_SIMULATE_TOUCHPAD_DEV *MouseSimulateTouchPadDev\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ GC_TODO: Add function description\r
+\r
+Arguments:\r
+\r
+ MouseDev - GC_TODO: add argument description\r
+\r
+Returns:\r
+\r
+ GC_TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+PS2MouseRead (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ OUT VOID *Buffer,\r
+ IN OUT UINTN *BufSize,\r
+ IN UINTN State\r
+ );\r
+\r
+//\r
+// 8042 I/O function\r
+//\r
+EFI_STATUS\r
+Out8042Command (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN UINT8 Command\r
+ );\r
+\r
+EFI_STATUS\r
+In8042Data (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN OUT UINT8 *Data\r
+ );\r
+\r
+EFI_STATUS\r
+Out8042Data (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN UINT8 Data\r
+ );\r
+\r
+EFI_STATUS\r
+Out8042AuxCommand (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN UINT8 Command,\r
+ IN BOOLEAN Resend\r
+ );\r
+\r
+EFI_STATUS\r
+In8042AuxData (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN OUT UINT8 *Data\r
+ );\r
+\r
+EFI_STATUS\r
+Out8042AuxData (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN UINT8 Data\r
+ );\r
+\r
+EFI_STATUS\r
+CheckForInput (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo\r
+ );\r
+\r
+EFI_STATUS\r
+WaitInputEmpty (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN UINTN Timeout\r
+ );\r
+\r
+EFI_STATUS\r
+WaitOutputFull (\r
+ IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
+ IN UINTN Timeout\r
+ );\r
+\r
+#endif // _COMMPS2_H_\r