-/**@file\r
- PS2 Mouse Communication Interface \r
+/** @file\r
+ PS2 Mouse Communication Interface.\r
\r
Copyright (c) 2006 - 2007, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
/**\r
Get mouse packet . Only care first 3 bytes\r
\r
- @param MouseDev Pointer of PS2 Mouse Private Data Structure \r
+ @param MouseAbsolutePointerDev Pointer to PS2 Absolute Pointer Simulation Device Private Data Structure \r
\r
@retval EFI_NOT_READY Mouse Device not ready to input data packet, or some error happened during getting the packet\r
@retval EFI_SUCCESS The data packet is gotten successfully.\r
)\r
{\r
EFI_STATUS Status;\r
- UINT8 temp;\r
+ UINT8 Temp;\r
//\r
// Wait keyboard controller input buffer empty\r
//\r
return Status;\r
}\r
\r
- temp = Data;\r
- IsaIo->Io.Write (IsaIo, EfiIsaIoWidthUint8, KBC_DATA_PORT, 1, &temp);\r
+ Temp = Data;\r
+ IsaIo->Io.Write (IsaIo, EfiIsaIoWidthUint8, KBC_DATA_PORT, 1, &Temp);\r
\r
Status = WaitInputEmpty (IsaIo, TIMEOUT);\r
if (EFI_ERROR (Status)) {\r
)\r
{\r
UINTN Delay;\r
- UINT8 temp;\r
+ UINT8 Temp;\r
\r
Delay = TIMEOUT / 50;\r
\r
do {\r
- IsaIo->Io.Read (IsaIo, EfiIsaIoWidthUint8, KBC_CMD_STS_PORT, 1, &temp);\r
+ IsaIo->Io.Read (IsaIo, EfiIsaIoWidthUint8, KBC_CMD_STS_PORT, 1, &Temp);\r
\r
//\r
// Check keyboard controller status bit 0(output buffer status)\r
//\r
- if ((temp & KBC_OUTB) == KBC_OUTB) {\r
+ if ((Temp & KBC_OUTB) == KBC_OUTB) {\r
break;\r
}\r
\r
gBS->Stall (50);\r
Delay--;\r
- } while (Delay);\r
+ } while (Delay != 0);\r
\r
if (Delay == 0) {\r
return EFI_TIMEOUT;\r
I/O work flow of outing 8042 Aux data.\r
\r
@param IsaIo Pointer to instance of EFI_ISA_IO_PROTOCOL\r
- @param Command Aux I/O command\r
+ @param Data Buffer holding return value \r
\r
- @retval EFI_SUCCESS Success to excute I/O work flow\r
+ @retval EFI_SUCCESS Success to excute I/O work flow.\r
@retval EFI_TIMEOUT Keyboard controller time out.\r
**/\r
EFI_STATUS\r
\r
\r
/**\r
- Check keyboard controller status, if it is output buffer full and for auxiliary device\r
+ Check keyboard controller status, if it is output buffer full and for auxiliary device.\r
\r
@param IsaIo Pointer to instance of EFI_ISA_IO_PROTOCOL\r
\r
\r
gBS->Stall (50);\r
Delay--;\r
- } while (Delay);\r
+ } while (Delay != 0);\r
\r
if (Delay == 0) {\r
return EFI_TIMEOUT;\r
IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
IN UINTN Timeout\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
- Timeout - GC_TODO: add argument description\r
-\r
-Returns:\r
-\r
- EFI_TIMEOUT - GC_TODO: Add description for return value\r
- EFI_SUCCESS - GC_TODO: Add description for return value\r
-\r
-**/\r
{\r
UINTN Delay;\r
UINT8 Data;\r
\r
gBS->Stall (50);\r
Delay--;\r
- } while (Delay);\r
+ } while (Delay != 0);\r
\r
if (Delay == 0) {\r
return EFI_TIMEOUT;\r
-/**@file\r
- PS2 Mouse Communication Interface \r
+/** @file\r
+ Using PS2 Mouse to simulation Absolution Pointer Device.\r
\r
Copyright (c) 2006 - 2007, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
\r
**/\r
\r
-#ifndef _COMMPS2_H_\r
-#define _COMMPS2_H_\r
+#ifndef __COMMPS2_H__\r
+#define __COMMPS2_H__\r
\r
#define PS2_PACKET_LENGTH 3\r
#define PS2_SYNC_MASK 0xc\r
/**\r
Get mouse packet . Only care first 3 bytes\r
\r
- @param MouseDev Pointer of PS2 Mouse Private Data Structure \r
+ @param MouseAbsolutePointerDev Pointer to PS2 Absolute Pointer Simulation Device Private Data Structure\r
\r
@retval EFI_NOT_READY Mouse Device not ready to input data packet, or some error happened during getting the packet\r
@retval EFI_SUCCESS The data packet is gotten successfully.\r
I/O work flow of outing 8042 Aux data.\r
\r
@param IsaIo Pointer to instance of EFI_ISA_IO_PROTOCOL\r
- @param Command Aux I/O command\r
+ @param Data Buffer holding return value.\r
\r
@retval EFI_SUCCESS Success to excute I/O work flow\r
@retval EFI_TIMEOUT Keyboard controller time out.\r
);\r
\r
/**\r
- Check keyboard controller status, if it is output buffer full and for auxiliary device\r
+ Check keyboard controller status, if it is output buffer full and for auxiliary device.\r
\r
@param IsaIo Pointer to instance of EFI_ISA_IO_PROTOCOL\r
\r
IN UINTN Timeout\r
);\r
\r
-#endif // _COMMPS2_H_\r
+#endif // __COMMPS2_H__\r
-/**@file\r
+/** @file\r
+ UEFI Component Name(2) protocol implementation for Ps2 Absolute Pointer Simulation Dxe driver.\r
\r
Copyright (c) 2006 - 2007, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
-/**@file\r
- A faked PS/2 Touchpad driver. Routines that interacts with callers,\r
+/** @file\r
+ A faked PS/2 Absolute Pointer driver. Routines that interacts with callers,\r
conforming to EFI driver model\r
\r
Copyright (c) 2006 - 2007, Intel Corporation\r
}\r
\r
/**\r
- Reset the Mouse and do BAT test for it, if ExtendedVerification isTRUE and there is a mouse device connectted to system\r
+ Reset the Mouse and do BAT test for it, if ExtendedVerification isTRUE and there is a mouse device connectted to system.\r
\r
@param This - Pointer of simple pointer Protocol.\r
@param ExtendedVerification - Whether configure mouse parameters. True: do; FALSE: skip.\r
/**\r
Check whether there is Ps/2 mouse device in system\r
\r
- @param PS2_MOUSE_DEV - Mouse Private Data Structure\r
+ @param MouseAbsolutePointerDev - Absolute Pointer Device Private Data Structure\r
\r
@retval TRUE - Keyboard in System.\r
@retval FALSE - Keyboard not in System.\r
\r
/**\r
\r
- Event notification function for SIMPLE_POINTER.WaitForInput event\r
- Signal the event if there is input from mouse\r
+ Event notification function for SIMPLE_POINTER.WaitForInput event.\r
+ Signal the event if there is input from mouse.\r
\r
@param Event event object\r
@param Context event context\r
\r
**/\r
-\r
VOID\r
EFIAPI\r
MouseAbsolutePointerWaitForInput (\r
IN EFI_EVENT Event,\r
IN VOID *Context\r
)\r
-// GC_TODO: Event - add argument and description to function comment\r
-// GC_TODO: Context - add argument and description to function comment\r
{\r
PS2_MOUSE_ABSOLUTE_POINTER_DEV *MouseAbsolutePointerDev;\r
\r
}\r
\r
/**\r
- Event notification function for TimerEvent event\r
- If mouse device is connected to system, try to get the mouse packet data\r
+ Event notification function for TimerEvent event.\r
+ If mouse device is connected to system, try to get the mouse packet data.\r
\r
@param Event - TimerEvent in PS2_MOUSE_DEV\r
@param Context - Pointer to PS2_MOUSE_DEV structure\r
-/**@file\r
+/** @file\r
A Ps2MouseAbsolutePointer driver header file\r
\r
Copyright (c) 2006 - 2007, Intel Corporation\r
\r
**/\r
\r
-#ifndef _PS2MOUSEABSOLUTEPOINTER_H\r
-#define _PS2MOUSEABSOLUTEPOINTER_H\r
+#ifndef __PS2MOUSEABSOLUTEPOINTER_H__\r
+#define __PS2MOUSEABSOLUTEPOINTER_H__\r
\r
#include <PiDxe.h>\r
#include <Framework/StatusCode.h>\r
//\r
// Function prototypes\r
//\r
+/**\r
+ Test to see if this driver supports ControllerHandle. Any ControllerHandle\r
+ than contains a IsaIo protocol can be supported.\r
+\r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to test\r
+ @param RemainingDevicePath Optional parameter use to pick a specific child\r
+ device to start.\r
+\r
+ @retval EFI_SUCCESS This driver supports this device\r
+ @retval EFI_ALREADY_STARTED This driver is already running on this device\r
+ @retval other This driver does not support this device\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
PS2MouseAbsolutePointerDriverSupported (\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
);\r
\r
+/**\r
+ Start this driver on ControllerHandle by opening a IsaIo\r
+ protocol, creating PS2_MOUSE_ABSOLUTE_POINTER_DEV device and install gEfiAbsolutePointerProtocolGuid\r
+ finnally.\r
+\r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to bind driver to\r
+ @param RemainingDevicePath Optional parameter use to pick a specific child\r
+ device to start.\r
+\r
+ @retval EFI_SUCCESS This driver is added to ControllerHandle\r
+ @retval EFI_ALREADY_STARTED This driver is already running on ControllerHandle\r
+ @retval other This driver does not support this device\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
PS2MouseAbsolutePointerDriverStart (\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
);\r
\r
+/**\r
+ Stop this driver on ControllerHandle. Support stoping any child handles\r
+ created by this driver.\r
+\r
+ @param This Protocol instance pointer.\r
+ @param ControllerHandle Handle of device to stop driver on\r
+ @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
+ children is zero stop the entire bus driver.\r
+ @param ChildHandleBuffer List of Child Handles to Stop.\r
+\r
+ @retval EFI_SUCCESS This driver is removed ControllerHandle\r
+ @retval other This driver was not removed from this device\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
PS2MouseAbsolutePointerDriverStop (\r
OUT CHAR16 **ControllerName\r
);\r
\r
+/**\r
+ Reset the Mouse and do BAT test for it, if ExtendedVerification isTRUE and there is a mouse device connectted to system.\r
+\r
+ @param This - Pointer of simple pointer Protocol.\r
+ @param ExtendedVerification - Whether configure mouse parameters. True: do; FALSE: skip.\r
\r
+\r
+ @retval EFI_SUCCESS - The command byte is written successfully.\r
+ @retval EFI_DEVICE_ERROR - Errors occurred during reseting keyboard.\r
+\r
+**/\r
EFI_STATUS\r
EFIAPI\r
MouseAbsolutePointerReset (\r
IN BOOLEAN ExtendedVerification\r
);\r
\r
+/**\r
+ Get and Clear mouse status.\r
+ \r
+ @param This - Pointer of simple pointer Protocol.\r
+ @param State - Output buffer holding status.\r
+\r
+ @retval EFI_INVALID_PARAMETER Output buffer is invalid.\r
+ @retval EFI_NOT_READY Mouse is not changed status yet.\r
+ @retval EFI_SUCCESS Mouse status is changed and get successful.\r
+**/\r
EFI_STATUS\r
EFIAPI\r
MouseAbsolutePointerGetState (\r
IN OUT EFI_ABSOLUTE_POINTER_STATE *State\r
);\r
\r
+/**\r
+\r
+ Event notification function for SIMPLE_POINTER.WaitForInput event.\r
+ Signal the event if there is input from mouse.\r
+\r
+ @param Event event object\r
+ @param Context event context\r
+\r
+**/\r
VOID\r
EFIAPI\r
MouseAbsolutePointerWaitForInput (\r
IN VOID *Context\r
);\r
\r
+/**\r
+ Event notification function for TimerEvent event.\r
+ If mouse device is connected to system, try to get the mouse packet data.\r
+\r
+ @param Event - TimerEvent in PS2_MOUSE_DEV\r
+ @param Context - Pointer to PS2_MOUSE_DEV structure\r
+\r
+**/\r
VOID\r
EFIAPI\r
PollMouseAbsolutePointer (\r
IN VOID *Context\r
);\r
\r
+/**\r
+ I/O work flow of in 8042 data.\r
+ \r
+ @param IsaIo Pointer to instance of EFI_ISA_IO_PROTOCOL\r
+ @param Data Data value\r
+ \r
+ @retval EFI_SUCCESS Success to excute I/O work flow\r
+ @retval EFI_TIMEOUT Keyboard controller time out.\r
+**/\r
EFI_STATUS\r
In8042Data (\r
IN EFI_ISA_IO_PROTOCOL *IsaIo,\r
IN OUT UINT8 *Data\r
);\r
+\r
+/**\r
+ Check whether there is Ps/2 mouse device in system\r
+\r
+ @param MouseAbsolutePointerDev - Absolute Pointer Device Private Data Structure\r
+\r
+ @retval TRUE - Keyboard in System.\r
+ @retval FALSE - Keyboard not in System.\r
+\r
+**/\r
BOOLEAN\r
CheckMouseAbsolutePointerConnect (\r
IN PS2_MOUSE_ABSOLUTE_POINTER_DEV *MouseAbsolutePointerDev\r
}\r
\r
/**\r
- Event notification function for TimerEvent event\r
- If mouse device is connected to system, try to get the mouse packet data\r
+ Event notification function for TimerEvent event.\r
+ If mouse device is connected to system, try to get the mouse packet data.\r
\r
@param Event - TimerEvent in PS2_MOUSE_DEV\r
@param Context - Pointer to PS2_MOUSE_DEV structure\r
);\r
\r
/**\r
- Event notification function for TimerEvent event\r
- If mouse device is connected to system, try to get the mouse packet data\r
+ Event notification function for TimerEvent event.\r
+ If mouse device is connected to system, try to get the mouse packet data.\r
\r
@param Event - TimerEvent in PS2_MOUSE_DEV\r
@param Context - Pointer to PS2_MOUSE_DEV structure\r