TianoCore EDK2 master
Loading...
Searching...
No Matches
UsbMouseAbsolutePointer.c File Reference

Go to the source code of this file.

Functions

EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingEntryPoint (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
 
EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingSupported (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
 
EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingStart (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
 
EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingStop (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
 
BOOLEAN IsUsbMouse (IN EFI_USB_IO_PROTOCOL *UsbIo)
 
EFI_STATUS InitializeUsbMouseDevice (IN USB_MOUSE_ABSOLUTE_POINTER_DEV *UsbMouseAbsolutePointerDev)
 
EFI_STATUS EFIAPI OnMouseInterruptComplete (IN VOID *Data, IN UINTN DataLength, IN VOID *Context, IN UINT32 Result)
 
EFI_STATUS EFIAPI GetMouseAbsolutePointerState (IN EFI_ABSOLUTE_POINTER_PROTOCOL *This, OUT EFI_ABSOLUTE_POINTER_STATE *State)
 
EFI_STATUS EFIAPI UsbMouseAbsolutePointerReset (IN EFI_ABSOLUTE_POINTER_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
 
VOID EFIAPI UsbMouseAbsolutePointerWaitForInput (IN EFI_EVENT Event, IN VOID *Context)
 
VOID EFIAPI USBMouseRecoveryHandler (IN EFI_EVENT Event, IN VOID *Context)
 

Variables

EFI_DRIVER_BINDING_PROTOCOL gUsbMouseAbsolutePointerDriverBinding
 

Detailed Description

USB Mouse Driver that manages USB mouse and produces Absolute Pointer Protocol.

Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file UsbMouseAbsolutePointer.c.

Function Documentation

◆ GetMouseAbsolutePointerState()

EFI_STATUS EFIAPI GetMouseAbsolutePointerState ( IN EFI_ABSOLUTE_POINTER_PROTOCOL This,
OUT EFI_ABSOLUTE_POINTER_STATE State 
)

Retrieves the current state of a pointer device.

Parameters
ThisA pointer to the EFI_ABSOLUTE_POINTER_PROTOCOL instance.
MouseStateA pointer to the state information on the pointer device.
Return values
EFI_SUCCESSThe state of the pointer device was returned in State.
EFI_NOT_READYThe state of the pointer device has not changed since the last call to GetState().
EFI_DEVICE_ERRORA device error occurred while attempting to retrieve the pointer device's current state.
EFI_INVALID_PARAMETERState is NULL.

Definition at line 876 of file UsbMouseAbsolutePointer.c.

◆ InitializeUsbMouseDevice()

EFI_STATUS InitializeUsbMouseDevice ( IN USB_MOUSE_ABSOLUTE_POINTER_DEV UsbMouseAbsolutePointerDev)

Initialize the USB mouse device.

This function retrieves and parses HID report descriptor, and initializes state of USB_MOUSE_ABSOLUTE_POINTER_DEV. Then it sets indefinite idle rate for the device. Finally it creates event for delayed recovery, which deals with device error.

Parameters
UsbMouseAbsolutePointerDevDevice instance to be initialized.
Return values
EFI_SUCCESSUSB mouse device successfully initialized.
EFI_UNSUPPORTEDHID descriptor type is not report descriptor.
OtherUSB mouse device was not initialized successfully.

Definition at line 537 of file UsbMouseAbsolutePointer.c.

◆ IsUsbMouse()

BOOLEAN IsUsbMouse ( IN EFI_USB_IO_PROTOCOL UsbIo)

Uses USB I/O to check whether the device is a USB mouse device.

Parameters
UsbIoPointer to a USB I/O protocol instance.
Return values
TRUEDevice is a USB mouse device.
FALSEDevice is a not USB mouse device.

Definition at line 491 of file UsbMouseAbsolutePointer.c.

◆ OnMouseInterruptComplete()

EFI_STATUS EFIAPI OnMouseInterruptComplete ( IN VOID *  Data,
IN UINTN  DataLength,
IN VOID *  Context,
IN UINT32  Result 
)

Handler function for USB mouse's asynchronous interrupt transfer.

This function is the handler function for USB mouse's asynchronous interrupt transfer to manage the mouse. It parses data returned from asynchronous interrupt transfer, and get button and movement state.

Parameters
DataA pointer to a buffer that is filled with key data which is retrieved via asynchronous interrupt transfer.
DataLengthIndicates the size of the data buffer.
ContextPointing to USB_KB_DEV instance.
ResultIndicates the result of the asynchronous interrupt transfer.
Return values
EFI_SUCCESSAsynchronous interrupt transfer is handled successfully.
EFI_DEVICE_ERRORHardware error occurs.

Definition at line 744 of file UsbMouseAbsolutePointer.c.

◆ USBMouseAbsolutePointerDriverBindingEntryPoint()

EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingEntryPoint ( IN EFI_HANDLE  ImageHandle,
IN EFI_SYSTEM_TABLE SystemTable 
)

Entrypoint of USB Mouse Absolute Pointer Driver.

This function is the entrypoint of USB Mouse Driver. It installs Driver Binding Protocols together with Component Name Protocols.

Parameters
ImageHandleThe firmware allocated handle for the EFI image.
SystemTableA pointer to the EFI System Table.
Return values
EFI_SUCCESSThe entry point is executed successfully.

Definition at line 34 of file UsbMouseAbsolutePointer.c.

◆ USBMouseAbsolutePointerDriverBindingStart()

EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingStart ( IN EFI_DRIVER_BINDING_PROTOCOL This,
IN EFI_HANDLE  Controller,
IN EFI_DEVICE_PATH_PROTOCOL RemainingDevicePath 
)

Starts the mouse device with this driver.

This function consumes USB I/O Protocol, initializes USB mouse device, installs Absolute Pointer Protocol, and submits Asynchronous Interrupt Transfer to manage the USB mouse device.

Parameters
ThisThe driver binding instance.
ControllerHandle of device to bind driver to.
RemainingDevicePathOptional parameter use to pick a specific child device to start.
Return values
EFI_SUCCESSThis driver supports this device.
EFI_UNSUPPORTEDThis driver does not support this device.
EFI_DEVICE_ERRORThis driver cannot be started due to device Error.
EFI_OUT_OF_RESOURCESCan't allocate memory resources.
EFI_ALREADY_STARTEDThis driver has been started.

Definition at line 128 of file UsbMouseAbsolutePointer.c.

◆ USBMouseAbsolutePointerDriverBindingStop()

EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingStop ( IN EFI_DRIVER_BINDING_PROTOCOL This,
IN EFI_HANDLE  Controller,
IN UINTN  NumberOfChildren,
IN EFI_HANDLE ChildHandleBuffer 
)

Stop the USB mouse device handled by this driver.

Parameters
ThisThe driver binding protocol.
ControllerThe controller to release.
NumberOfChildrenThe number of handles in ChildHandleBuffer.
ChildHandleBufferThe array of child handle.
Return values
EFI_SUCCESSThe device was stopped.
EFI_UNSUPPORTEDAbsolute Pointer Protocol is not installed on Controller.
OthersFail to uninstall protocols attached on the device.

Definition at line 395 of file UsbMouseAbsolutePointer.c.

◆ USBMouseAbsolutePointerDriverBindingSupported()

EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingSupported ( IN EFI_DRIVER_BINDING_PROTOCOL This,
IN EFI_HANDLE  Controller,
IN EFI_DEVICE_PATH_PROTOCOL RemainingDevicePath 
)

Check whether USB Mouse Absolute Pointer Driver supports this device.

Parameters
ThisThe driver binding protocol.
ControllerThe controller handle to check.
RemainingDevicePathThe remaining device path.
Return values
EFI_SUCCESSThe driver supports this controller.
otherThis device isn't supported.

Definition at line 67 of file UsbMouseAbsolutePointer.c.

◆ UsbMouseAbsolutePointerReset()

EFI_STATUS EFIAPI UsbMouseAbsolutePointerReset ( IN EFI_ABSOLUTE_POINTER_PROTOCOL This,
IN BOOLEAN  ExtendedVerification 
)

Resets the pointer device hardware.

Parameters
ThisA pointer to the EFI_ABSOLUTE_POINTER_PROTOCOL instance.
ExtendedVerificationIndicates that the driver may perform a more exhaustive verification operation of the device during reset.
Return values
EFI_SUCCESSThe device was reset.
EFI_DEVICE_ERRORThe device is not functioning correctly and could not be reset.

Definition at line 921 of file UsbMouseAbsolutePointer.c.

◆ UsbMouseAbsolutePointerWaitForInput()

VOID EFIAPI UsbMouseAbsolutePointerWaitForInput ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

Event notification function for EFI_ABSOLUTE_POINTER_PROTOCOL.WaitForInput event.

Parameters
EventEvent to be signaled when there's input from mouse.
ContextPoints to USB_MOUSE_ABSOLUTE_POINTER_DEV instance.

Definition at line 966 of file UsbMouseAbsolutePointer.c.

◆ USBMouseRecoveryHandler()

VOID EFIAPI USBMouseRecoveryHandler ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

Handler for Delayed Recovery event.

This function is the handler for Delayed Recovery event triggered by timer. After a device error occurs, the event would be triggered with interval of EFI_USB_INTERRUPT_DELAY. EFI_USB_INTERRUPT_DELAY is defined in USB standard for error handling.

Parameters
EventThe Delayed Recovery event.
ContextPoints to the USB_MOUSE_ABSOLUTE_POINTER_DEV instance.

Definition at line 998 of file UsbMouseAbsolutePointer.c.

Variable Documentation

◆ gUsbMouseAbsolutePointerDriverBinding

EFI_DRIVER_BINDING_PROTOCOL gUsbMouseAbsolutePointerDriverBinding
Initial value:
= {
0x1,
}
#define NULL
Definition: Base.h:319
EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS EFIAPI USBMouseAbsolutePointerDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)

Definition at line 11 of file UsbMouseAbsolutePointer.c.