+++ /dev/null
-/** @file\r
- A Ps2MouseAbsolutePointer driver header file\r
-\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
-\r
-#include <Uefi.h>\r
-\r
-#include <Protocol/AbsolutePointer.h>\r
-#include <Protocol/IsaIo.h>\r
-#include <Protocol/DevicePath.h>\r
-\r
-#include <Library/DebugLib.h>\r
-#include <Library/UefiDriverEntryPoint.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/BaseMemoryLib.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
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gPS2MouseAbsolutePointerDriver;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gPs2MouseAbsolutePointerComponentName;\r
-extern EFI_COMPONENT_NAME2_PROTOCOL gPs2MouseAbsolutePointerComponentName2;\r
-\r
-//\r
-// PS/2 mouse sample rate\r
-//\r
-typedef enum {\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
- MouseResolution1,\r
- MouseResolution2,\r
- MouseResolution4,\r
- MouseResolution8,\r
- MaxResolution\r
-} MOUSE_RE;\r
-\r
-//\r
-// PS/2 mouse scaling\r
-//\r
-typedef enum {\r
- Scaling1,\r
- Scaling2\r
-} MOUSE_SF;\r
-\r
-//\r
-// Driver Private Data\r
-//\r
-#define PS2_MOUSE_ABSOLUTE_POINTER_DEV_SIGNATURE SIGNATURE_32 ('p', '2', 's', 't')\r
-\r
-typedef struct {\r
- UINTN Signature;\r
-\r
- EFI_HANDLE Handle;\r
- EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointerProtocol;\r
- EFI_ABSOLUTE_POINTER_STATE State;\r
- EFI_ABSOLUTE_POINTER_MODE Mode;\r
- BOOLEAN StateChanged;\r
-\r
- //\r
- // PS2 Mouse device specific information\r
- //\r
- MOUSE_SR SampleRate;\r
- MOUSE_RE Resolution;\r
- MOUSE_SF Scaling;\r
- UINT8 DataPackageSize;\r
-\r
- EFI_ISA_IO_PROTOCOL *IsaIo;\r
-\r
- EFI_EVENT TimerEvent;\r
-\r
- EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
-} PS2_MOUSE_ABSOLUTE_POINTER_DEV;\r
-\r
-#define PS2_MOUSE_ABSOLUTE_POINTER_DEV_FROM_THIS(a) CR (a, PS2_MOUSE_ABSOLUTE_POINTER_DEV, AbsolutePointerProtocol, PS2_MOUSE_ABSOLUTE_POINTER_DEV_SIGNATURE)\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_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\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_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\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
- IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
- IN EFI_HANDLE Controller,\r
- IN UINTN NumberOfChildren,\r
- IN EFI_HANDLE *ChildHandleBuffer\r
- );\r
-\r
-//\r
-// EFI Component Name Functions\r
-//\r
-/**\r
- Retrieves a Unicode string that is the user readable name of the driver.\r
-\r
- This function retrieves the user readable name of a driver in the form of a\r
- Unicode string. If the driver specified by This has a user readable name in\r
- the language specified by Language, then a pointer to the driver name is\r
- returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
- by This does not support the language specified by Language,\r
- then EFI_UNSUPPORTED is returned.\r
-\r
- @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
- EFI_COMPONENT_NAME_PROTOCOL instance.\r
-\r
- @param Language[in] A pointer to a Null-terminated ASCII string\r
- array indicating the language. This is the\r
- language of the driver name that the caller is\r
- requesting, and it must match one of the\r
- languages specified in SupportedLanguages. The\r
- number of languages supported by a driver is up\r
- to the driver writer. Language is specified\r
- in RFC 4646 or ISO 639-2 language code format.\r
-\r
- @param DriverName[out] A pointer to the Unicode string to return.\r
- This Unicode string is the name of the\r
- driver specified by This in the language\r
- specified by Language.\r
-\r
- @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
- This and the language specified by Language was\r
- returned in DriverName.\r
-\r
- @retval EFI_INVALID_PARAMETER Language is NULL.\r
-\r
- @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
-\r
- @retval EFI_UNSUPPORTED The driver specified by This does not support\r
- the language specified by Language.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-Ps2MouseAbsolutePointerComponentNameGetDriverName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN CHAR8 *Language,\r
- OUT CHAR16 **DriverName\r
- );\r
-\r
-\r
-/**\r
- Retrieves a Unicode string that is the user readable name of the controller\r
- that is being managed by a driver.\r
-\r
- This function retrieves the user readable name of the controller specified by\r
- ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
- driver specified by This has a user readable name in the language specified by\r
- Language, then a pointer to the controller name is returned in ControllerName,\r
- and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
- managing the controller specified by ControllerHandle and ChildHandle,\r
- then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
- support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
-\r
- @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
- EFI_COMPONENT_NAME_PROTOCOL instance.\r
-\r
- @param ControllerHandle[in] The handle of a controller that the driver\r
- specified by This is managing. This handle\r
- specifies the controller whose name is to be\r
- returned.\r
-\r
- @param ChildHandle[in] The handle of the child controller to retrieve\r
- the name of. This is an optional parameter that\r
- may be NULL. It will be NULL for device\r
- drivers. It will also be NULL for a bus drivers\r
- that wish to retrieve the name of the bus\r
- controller. It will not be NULL for a bus\r
- driver that wishes to retrieve the name of a\r
- child controller.\r
-\r
- @param Language[in] A pointer to a Null-terminated ASCII string\r
- array indicating the language. This is the\r
- language of the driver name that the caller is\r
- requesting, and it must match one of the\r
- languages specified in SupportedLanguages. The\r
- number of languages supported by a driver is up\r
- to the driver writer. Language is specified in\r
- RFC 4646 or ISO 639-2 language code format.\r
-\r
- @param ControllerName[out] A pointer to the Unicode string to return.\r
- This Unicode string is the name of the\r
- controller specified by ControllerHandle and\r
- ChildHandle in the language specified by\r
- Language from the point of view of the driver\r
- specified by This.\r
-\r
- @retval EFI_SUCCESS The Unicode string for the user readable name in\r
- the language specified by Language for the\r
- driver specified by This was returned in\r
- DriverName.\r
-\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
-\r
- @retval EFI_INVALID_PARAMETER Language is NULL.\r
-\r
- @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
-\r
- @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
- managing the controller specified by\r
- ControllerHandle and ChildHandle.\r
-\r
- @retval EFI_UNSUPPORTED The driver specified by This does not support\r
- the language specified by Language.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-Ps2MouseAbsolutePointerComponentNameGetControllerName (\r
- IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE ChildHandle OPTIONAL,\r
- IN CHAR8 *Language,\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 EFI_ABSOLUTE_POINTER_PROTOCOL *This,\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 EFI_ABSOLUTE_POINTER_PROTOCOL *This,\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 EFI_EVENT Event,\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 EFI_EVENT Event,\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
- );\r
-\r
-#endif\r