]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Bus/Isa/Ps2MouseSimulateTouchPadDxe/CommPs2.h
use a PS/2 mouse to simulate a faked touchpad device.
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Isa / Ps2MouseSimulateTouchPadDxe / CommPs2.h
diff --git a/IntelFrameworkModulePkg/Bus/Isa/Ps2MouseSimulateTouchPadDxe/CommPs2.h b/IntelFrameworkModulePkg/Bus/Isa/Ps2MouseSimulateTouchPadDxe/CommPs2.h
new file mode 100644 (file)
index 0000000..9702cb5
--- /dev/null
@@ -0,0 +1,430 @@
+/**@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