From 0f8304cd85c0930bcc3f8e2247eda1b17e42176a Mon Sep 17 00:00:00 2001 From: eric_tian Date: Tue, 27 Nov 2007 05:55:26 +0000 Subject: use a PS/2 mouse to simulate a faked touchpad device. verify the correction of the ABSOLUTE POINTER protocol's installation and usage git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4331 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Bus/Isa/Ps2MouseSimulateTouchPadDxe/CommPs2.h | 430 +++++++++++++++++++++ 1 file changed, 430 insertions(+) create mode 100644 IntelFrameworkModulePkg/Bus/Isa/Ps2MouseSimulateTouchPadDxe/CommPs2.h (limited to '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 index 0000000000..9702cb5dcf --- /dev/null +++ b/IntelFrameworkModulePkg/Bus/Isa/Ps2MouseSimulateTouchPadDxe/CommPs2.h @@ -0,0 +1,430 @@ +/**@file + PS2 Mouse Communication Interface + + +Copyright (c) 2006 - 2007, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef _COMMPS2_H_ +#define _COMMPS2_H_ + +#define PS2_PACKET_LENGTH 3 +#define PS2_SYNC_MASK 0xc +#define PS2_SYNC_BYTE 0x8 + +#define IS_PS2_SYNC_BYTE(byte) ((byte & PS2_SYNC_MASK) == PS2_SYNC_BYTE) + +#define PS2_READ_BYTE_ONE 0 +#define PS2_READ_DATA_BYTE 1 +#define PS2_PROCESS_PACKET 2 + +#define TIMEOUT 50000 +#define BAT_TIMEOUT 500000 + +// +// 8042 I/O Port +// +#define KBC_DATA_PORT 0x60 +#define KBC_CMD_STS_PORT 0x64 + +// +// 8042 Command +// +#define READ_CMD_BYTE 0x20 +#define WRITE_CMD_BYTE 0x60 +#define DISABLE_AUX 0xa7 +#define ENABLE_AUX 0xa8 +#define SELF_TEST 0xaa +#define DISABLE_KB 0xad +#define ENABLE_KB 0xae +#define WRITE_AUX_DEV 0xd4 + +#define CMD_SYS_FLAG 0x04 +#define CMD_KB_STS 0x10 +#define CMD_KB_DIS 0x10 +#define CMD_KB_EN 0x0 + +// +// 8042 Auxiliary Device Command +// +#define SETSF1_CMD 0xe6 +#define SETSF2_CMD 0xe7 +#define SETRE_CMD 0xe8 +#define READ_CMD 0xeb +#define SETRM_CMD 0xf0 +#define SETSR_CMD 0xf3 +#define ENABLE_CMD 0xf4 +#define DISABLE_CMD 0xf5 +#define RESET_CMD 0xff + +// +// return code +// +#define PS2_ACK 0xfa +#define PS2_RESEND 0xfe +#define PS2MOUSE_BAT1 0xaa +#define PS2MOUSE_BAT2 0x0 + +// +// Keyboard Controller Status +// +#define KBC_PARE 0x80 // Parity Error +#define KBC_TIM 0x40 // General Time Out +#define KBC_AUXB 0x20 // Output buffer for auxiliary device (PS/2): +// 0 - Holds keyboard data +// 1 - Holds data for auxiliary device +// +#define KBC_KEYL 0x10 // Keyboard lock status: +// 0 - keyboard locked +// 1 - keyboard free +// +#define KBC_CD 0x08 // Command/Data: +// 0 - data byte written via port 60h +// 1 - command byte written via port 64h +// +#define KBC_SYSF 0x04 // System Flag: +// 0 - power-on reset +// 1 - self-test successful +// +#define KBC_INPB 0x02 // Input Buffer Status : +// 0 - input buffer empty +// 1 - CPU data in input buffer +// +#define KBC_OUTB 0x01 // Output Buffer Status : +// 0 - output buffer empty +// 1 - keyboard controller data in output buffer +// +EFI_STATUS +KbcSelfTest ( + IN EFI_ISA_IO_PROTOCOL *IsaIo + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +KbcEnableAux ( + IN EFI_ISA_IO_PROTOCOL *IsaIo + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +KbcDisableAux ( + IN EFI_ISA_IO_PROTOCOL *IsaIo + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +KbcEnableKb ( + IN EFI_ISA_IO_PROTOCOL *IsaIo + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +KbcDisableKb ( + IN EFI_ISA_IO_PROTOCOL *IsaIo + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +CheckKbStatus ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + OUT BOOLEAN *KeyboardEnable + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + KeyboardEnable - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +PS2MouseReset ( + IN EFI_ISA_IO_PROTOCOL *IsaIo + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +PS2MouseSetSampleRate ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN MOUSE_SR SampleRate + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + SampleRate - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +PS2MouseSetResolution ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN MOUSE_RE Resolution + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + Resolution - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +PS2MouseSetScaling ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN MOUSE_SF Scaling + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + Scaling - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +PS2MouseEnable ( + IN EFI_ISA_IO_PROTOCOL *IsaIo + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + IsaIo - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +PS2MouseGetPacket ( + PS2_MOUSE_SIMULATE_TOUCHPAD_DEV *MouseSimulateTouchPadDev + ) +/*++ + +Routine Description: + + GC_TODO: Add function description + +Arguments: + + MouseDev - GC_TODO: add argument description + +Returns: + + GC_TODO: add return values + +--*/ +; + +EFI_STATUS +PS2MouseRead ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + OUT VOID *Buffer, + IN OUT UINTN *BufSize, + IN UINTN State + ); + +// +// 8042 I/O function +// +EFI_STATUS +Out8042Command ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN UINT8 Command + ); + +EFI_STATUS +In8042Data ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN OUT UINT8 *Data + ); + +EFI_STATUS +Out8042Data ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN UINT8 Data + ); + +EFI_STATUS +Out8042AuxCommand ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN UINT8 Command, + IN BOOLEAN Resend + ); + +EFI_STATUS +In8042AuxData ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN OUT UINT8 *Data + ); + +EFI_STATUS +Out8042AuxData ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN UINT8 Data + ); + +EFI_STATUS +CheckForInput ( + IN EFI_ISA_IO_PROTOCOL *IsaIo + ); + +EFI_STATUS +WaitInputEmpty ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN UINTN Timeout + ); + +EFI_STATUS +WaitOutputFull ( + IN EFI_ISA_IO_PROTOCOL *IsaIo, + IN UINTN Timeout + ); + +#endif // _COMMPS2_H_ -- cgit v1.2.3