TianoCore EDK2 master
Loading...
Searching...
No Matches
UsbMouse.h File Reference

Go to the source code of this file.

Data Structures

struct  USB_DESC_HEAD
 
struct  USB_MOUSE_BUTTON_DATA
 
struct  USB_MOUSE_DEV
 
union  HID_DATA
 
struct  HID_ITEM
 

Macros

#define CLASS_HID   3
 
#define SUBCLASS_BOOT   1
 
#define PROTOCOL_MOUSE   2
 
#define BOOT_PROTOCOL   0
 
#define REPORT_PROTOCOL   1
 
#define USB_MOUSE_DEV_SIGNATURE   SIGNATURE_32 ('u', 'm', 'o', 'u')
 
#define USB_MOUSE_DEV_FROM_MOUSE_PROTOCOL(a)    CR(a, USB_MOUSE_DEV, SimplePointerProtocol, USB_MOUSE_DEV_SIGNATURE)
 

Functions

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)
 
EFI_STATUS EFIAPI UsbMouseComponentNameGetDriverName (IN EFI_COMPONENT_NAME_PROTOCOL *This, IN CHAR8 *Language, OUT CHAR16 **DriverName)
 
EFI_STATUS EFIAPI UsbMouseComponentNameGetControllerName (IN EFI_COMPONENT_NAME_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_HANDLE ChildHandle OPTIONAL, IN CHAR8 *Language, OUT CHAR16 **ControllerName)
 
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)
 
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)
 
VOID EFIAPI USBMouseRecoveryHandler (IN EFI_EVENT Event, IN VOID *Context)
 
EFI_STATUS ParseMouseReportDescriptor (OUT USB_MOUSE_DEV *UsbMouse, IN UINT8 *ReportDescriptor, IN UINTN ReportSize)
 

Variables

EFI_DRIVER_BINDING_PROTOCOL gUsbMouseDriverBinding
 
EFI_COMPONENT_NAME_PROTOCOL gUsbMouseComponentName
 
EFI_COMPONENT_NAME2_PROTOCOL gUsbMouseComponentName2
 

Detailed Description

Helper routine and corresponding data struct used by USB Mouse Driver.

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

Definition in file UsbMouse.h.

Macro Definition Documentation

◆ BOOT_PROTOCOL

#define BOOT_PROTOCOL   0

Definition at line 33 of file UsbMouse.h.

◆ CLASS_HID

#define CLASS_HID   3

Definition at line 29 of file UsbMouse.h.

◆ PROTOCOL_MOUSE

#define PROTOCOL_MOUSE   2

Definition at line 31 of file UsbMouse.h.

◆ REPORT_PROTOCOL

#define REPORT_PROTOCOL   1

Definition at line 34 of file UsbMouse.h.

◆ SUBCLASS_BOOT

#define SUBCLASS_BOOT   1

Definition at line 30 of file UsbMouse.h.

◆ USB_MOUSE_DEV_FROM_MOUSE_PROTOCOL

#define USB_MOUSE_DEV_FROM_MOUSE_PROTOCOL (   a)     CR(a, USB_MOUSE_DEV, SimplePointerProtocol, USB_MOUSE_DEV_SIGNATURE)

Definition at line 104 of file UsbMouse.h.

◆ USB_MOUSE_DEV_SIGNATURE

#define USB_MOUSE_DEV_SIGNATURE   SIGNATURE_32 ('u', 'm', 'o', 'u')

Definition at line 36 of file UsbMouse.h.

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 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.

◆ ParseMouseReportDescriptor()

EFI_STATUS ParseMouseReportDescriptor ( OUT USB_MOUSE_DEV UsbMouse,
IN UINT8 *  ReportDescriptor,
IN UINTN  ReportSize 
)

Parse Mouse Report Descriptor.

According to USB HID Specification, report descriptors are composed of pieces of information. Each piece of information is called an Item. This function retrieves each item from the report descriptor and updates USB_MOUSE_DEV.

Parameters
UsbMouseThe instance of USB_MOUSE_DEV
ReportDescriptorReport descriptor to parse
ReportSizeReport descriptor size
Return values
EFI_SUCCESSReport descriptor successfully parsed.
EFI_UNSUPPORTEDReport descriptor contains long item.

Definition at line 242 of file MouseHid.c.

◆ UsbMouseComponentNameGetControllerName()

EFI_STATUS EFIAPI UsbMouseComponentNameGetControllerName ( IN EFI_COMPONENT_NAME_PROTOCOL This,
IN EFI_HANDLE  ControllerHandle,
IN EFI_HANDLE ChildHandle  OPTIONAL,
IN CHAR8 *  Language,
OUT CHAR16 **  ControllerName 
)

Retrieves a Unicode string that is the user readable name of the controller that is being managed by a driver.

This function retrieves the user readable name of the controller specified by ControllerHandle and ChildHandle in the form of a Unicode string. If the driver specified by This has a user readable name in the language specified by Language, then a pointer to the controller name is returned in ControllerName, and EFI_SUCCESS is returned. If the driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle, then EFI_UNSUPPORTED is returned. If the driver specified by This does not support the language specified by Language, then EFI_UNSUPPORTED is returned.

Parameters
ThisA pointer to the EFI_COMPONENT_NAME2_PROTOCOL or EFI_COMPONENT_NAME_PROTOCOL instance.
ControllerHandleThe handle of a controller that the driver specified by This is managing. This handle specifies the controller whose name is to be returned.
ChildHandleThe handle of the child controller to retrieve the name of. This is an optional parameter that may be NULL. It will be NULL for device drivers. It will also be NULL for a bus drivers that wish to retrieve the name of the bus controller. It will not be NULL for a bus driver that wishes to retrieve the name of a child controller.
LanguageA pointer to a Null-terminated ASCII string array indicating the language. This is the language of the driver name that the caller is requesting, and it must match one of the languages specified in SupportedLanguages. The number of languages supported by a driver is up to the driver writer. Language is specified in RFC 4646 or ISO 639-2 language code format.
ControllerNameA pointer to the Unicode string to return. This Unicode string is the name of the controller specified by ControllerHandle and ChildHandle in the language specified by Language from the point of view of the driver specified by This.
Return values
EFI_SUCCESSThe Unicode string for the user readable name in the language specified by Language for the driver specified by This was returned in DriverName.
EFI_INVALID_PARAMETERControllerHandle is NULL.
EFI_INVALID_PARAMETERChildHandle is not NULL and it is not a valid EFI_HANDLE.
EFI_INVALID_PARAMETERLanguage is NULL.
EFI_INVALID_PARAMETERControllerName is NULL.
EFI_UNSUPPORTEDThe driver specified by This is not currently managing the controller specified by ControllerHandle and ChildHandle.
EFI_UNSUPPORTEDThe driver specified by This does not support the language specified by Language.

Definition at line 145 of file ComponentName.c.

◆ UsbMouseComponentNameGetDriverName()

EFI_STATUS EFIAPI UsbMouseComponentNameGetDriverName ( IN EFI_COMPONENT_NAME_PROTOCOL This,
IN CHAR8 *  Language,
OUT CHAR16 **  DriverName 
)

Retrieves a Unicode string that is the user readable name of the driver.

This function retrieves the user readable name of a driver in the form of a Unicode string. If the driver specified by This has a user readable name in the language specified by Language, then a pointer to the driver name is returned in DriverName, and EFI_SUCCESS is returned. If the driver specified by This does not support the language specified by Language, then EFI_UNSUPPORTED is returned.

Parameters
ThisA pointer to the EFI_COMPONENT_NAME2_PROTOCOL or EFI_COMPONENT_NAME_PROTOCOL instance.
LanguageA pointer to a Null-terminated ASCII string array indicating the language. This is the language of the driver name that the caller is requesting, and it must match one of the languages specified in SupportedLanguages. The number of languages supported by a driver is up to the driver writer. Language is specified in RFC 4646 or ISO 639-2 language code format.
DriverNameA pointer to the Unicode string to return. This Unicode string is the name of the driver specified by This in the language specified by Language.
Return values
EFI_SUCCESSThe Unicode string for the Driver specified by This and the language specified by Language was returned in DriverName.
EFI_INVALID_PARAMETERLanguage is NULL.
EFI_INVALID_PARAMETERDriverName is NULL.
EFI_UNSUPPORTEDThe driver specified by This does not support the language specified by Language.

Definition at line 70 of file ComponentName.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.

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.

◆ 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 SIMPLE_POINTER.WaitForInput event.

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

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

◆ gUsbMouseComponentName

EFI_COMPONENT_NAME_PROTOCOL gUsbMouseComponentName
extern

Definition at line 14 of file ComponentName.c.

◆ gUsbMouseComponentName2

EFI_COMPONENT_NAME2_PROTOCOL gUsbMouseComponentName2
extern

Definition at line 23 of file ComponentName.c.

◆ gUsbMouseDriverBinding

EFI_DRIVER_BINDING_PROTOCOL gUsbMouseDriverBinding
extern

Definition at line 11 of file UsbMouse.c.