-/**@file\r
+/** @file\r
A Ps2MouseAbsolutePointer driver header file\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
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\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
+#include <Uefi.h>\r
\r
#include <Protocol/AbsolutePointer.h>\r
#include <Protocol/IsaIo.h>\r
#include <Library/MemoryAllocationLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
#include <Library/ReportStatusCodeLib.h>\r
+#include <Library/PcdLib.h>\r
\r
//\r
// Global Variables\r
// PS/2 mouse sample rate\r
//\r
typedef enum {\r
- SSR_10,\r
- SSR_20,\r
- SSR_40,\r
- SSR_60,\r
- SSR_80,\r
- SSR_100,\r
- SSR_200,\r
- MAX_SR\r
+ SampleRate10,\r
+ SampleRate20,\r
+ SampleRate40,\r
+ SampleRate60,\r
+ SampleRate80,\r
+ SampleRate100,\r
+ SampleRate200,\r
+ MaxSampleRate\r
} MOUSE_SR;\r
\r
//\r
// PS/2 mouse resolution\r
//\r
typedef enum {\r
- CMR1,\r
- CMR2,\r
- CMR4,\r
- CMR8,\r
- MAX_CMR\r
+ MouseResolution1,\r
+ MouseResolution2,\r
+ MouseResolution4,\r
+ MouseResolution8,\r
+ MaxResolution\r
} MOUSE_RE;\r
\r
//\r
// PS/2 mouse scaling\r
//\r
typedef enum {\r
- SF1,\r
- SF2\r
+ Scaling1,\r
+ Scaling2\r
} MOUSE_SF;\r
\r
//\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 stopping 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
driver specified by This was returned in\r
DriverName.\r
\r
- @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
+ @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
\r
@retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
EFI_HANDLE.\r
OUT CHAR16 **ControllerName\r
);\r
\r
+/**\r
+ Reset the Mouse and do BAT test for it, if ExtendedVerification is TRUE and there is a mouse device connected 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 resetting 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 execute 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