TianoCore EDK2 master
Loading...
Searching...
No Matches
UsbMouse.c File Reference
#include "UsbMouse.h"

Go to the source code of this file.

Functions

EFI_STATUS EFIAPI USBMouseDriverBindingEntryPoint (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
 
EFI_STATUS EFIAPI USBMouseDriverBindingSupported (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
 
EFI_STATUS EFIAPI USBMouseDriverBindingStart (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
 
EFI_STATUS EFIAPI USBMouseDriverBindingStop (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 OUT USB_MOUSE_DEV *UsbMouseDev)
 
EFI_STATUS EFIAPI OnMouseInterruptComplete (IN VOID *Data, IN UINTN DataLength, IN VOID *Context, IN UINT32 Result)
 
EFI_STATUS EFIAPI GetMouseState (IN EFI_SIMPLE_POINTER_PROTOCOL *This, OUT EFI_SIMPLE_POINTER_STATE *MouseState)
 
EFI_STATUS EFIAPI UsbMouseReset (IN EFI_SIMPLE_POINTER_PROTOCOL *This, IN BOOLEAN ExtendedVerification)
 
VOID EFIAPI UsbMouseWaitForInput (IN EFI_EVENT Event, IN VOID *Context)
 
VOID EFIAPI USBMouseRecoveryHandler (IN EFI_EVENT Event, IN VOID *Context)
 

Variables

EFI_DRIVER_BINDING_PROTOCOL gUsbMouseDriverBinding
 

Detailed Description

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

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

Definition in file UsbMouse.c.

Function Documentation

◆ GetMouseState()

EFI_STATUS EFIAPI GetMouseState ( IN EFI_SIMPLE_POINTER_PROTOCOL This,
OUT EFI_SIMPLE_POINTER_STATE MouseState 
)

Retrieves the current state of a pointer device.

Parameters
ThisA pointer to the EFI_SIMPLE_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_PARAMETERMouseState is NULL.

Definition at line 856 of file UsbMouse.c.

◆ InitializeUsbMouseDevice()

EFI_STATUS InitializeUsbMouseDevice ( IN OUT USB_MOUSE_DEV UsbMouseDev)

Initialize the USB mouse device.

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

Parameters
UsbMouseDevDevice 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 UsbMouse.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 UsbMouse.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 UsbMouse.c.

◆ USBMouseDriverBindingEntryPoint()

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

Entrypoint of USB Mouse 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 UsbMouse.c.

◆ USBMouseDriverBindingStart()

EFI_STATUS EFIAPI USBMouseDriverBindingStart ( 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 Simple Pointer Protocol, and submits Asynchronous Interrupt Transfer to manage the USB mouse device.

Parameters
ThisThe USB mouse 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 UsbMouse.c.

◆ USBMouseDriverBindingStop()

EFI_STATUS EFIAPI USBMouseDriverBindingStop ( 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 USB mouse 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_UNSUPPORTEDSimple Pointer Protocol is not installed on Controller.
OthersFail to uninstall protocols attached on the device.

Definition at line 395 of file UsbMouse.c.

◆ USBMouseDriverBindingSupported()

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

Check whether USB mouse driver supports this device.

Parameters
ThisThe USB mouse 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 UsbMouse.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_DEV instance.

Definition at line 975 of file UsbMouse.c.

◆ UsbMouseReset()

EFI_STATUS EFIAPI UsbMouseReset ( IN EFI_SIMPLE_POINTER_PROTOCOL This,
IN BOOLEAN  ExtendedVerification 
)

Resets the pointer device hardware.

Parameters
ThisA pointer to the EFI_SIMPLE_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 907 of file UsbMouse.c.

◆ UsbMouseWaitForInput()

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

Event notification function for EFI_SIMPLE_POINTER_PROTOCOL.WaitForInput event.

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

Definition at line 943 of file UsbMouse.c.

Variable Documentation

◆ gUsbMouseDriverBinding

EFI_DRIVER_BINDING_PROTOCOL gUsbMouseDriverBinding
Initial value:
= {
0xa,
}
#define NULL
Definition: Base.h:319
EFI_STATUS EFIAPI USBMouseDriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
Definition: UsbMouse.c:67
EFI_STATUS EFIAPI USBMouseDriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
Definition: UsbMouse.c:395
EFI_STATUS EFIAPI USBMouseDriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
Definition: UsbMouse.c:128

Definition at line 11 of file UsbMouse.c.