add UsbMouseSimulateTouchPad driver to verify the correction of dispatching AbsolutePointer event of consplitter

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4297 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
eric_tian
2007-11-14 07:08:55 +00:00
parent a8779537f3
commit 8ae0b360f5
13 changed files with 2793 additions and 5 deletions

View File

@@ -56,6 +56,23 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePoi
"en"
};
//
// EFI Component Name Protocol
//
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName = {
ConSplitterComponentNameGetDriverName,
ConSplitterAbsolutePointerComponentNameGetControllerName,
"eng"
};
//
// EFI Component Name 2 Protocol
//
GLOBAL_REMOVE_IF_UNREFERENCED EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2 = {
(EFI_COMPONENT_NAME2_GET_DRIVER_NAME) ConSplitterComponentNameGetDriverName,
(EFI_COMPONENT_NAME2_GET_CONTROLLER_NAME) ConSplitterAbsolutePointerComponentNameGetControllerName,
"en"
};
//
// EFI Component Name Protocol
@@ -128,6 +145,17 @@ GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterSimplePointer
}
};
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterAbsolutePointerControllerNameTable[] = {
{
"eng;en",
(CHAR16 *)L"Primary Absolute Pointer Device"
},
{
NULL,
NULL
}
};
GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_STRING_TABLE mConSplitterConOutControllerNameTable[] = {
{
"eng;en",
@@ -422,6 +450,91 @@ ConSplitterSimplePointerComponentNameGetControllerName (
);
}
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerComponentNameGetControllerName (
IN EFI_COMPONENT_NAME_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN EFI_HANDLE ChildHandle OPTIONAL,
IN CHAR8 *Language,
OUT CHAR16 **ControllerName
)
/*++
Routine Description:
Retrieves a Unicode string that is the user readable name of the controller
that is being managed by an EFI Driver.
Arguments:
This - A pointer to the EFI_COMPONENT_NAME_PROTOCOL instance.
ControllerHandle - The handle of a controller that the driver specified by
This is managing. This handle specifies the controller
whose name is to be returned.
ChildHandle - The 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.
Language - A pointer to RFC3066 language identifier.
This is the language of the controller name
that 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.
ControllerName - A 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.
Returns:
EFI_SUCCESS - The 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_PARAMETER - ControllerHandle is not a valid EFI_HANDLE.
EFI_INVALID_PARAMETER - ChildHandle is not NULL and it is not a valid
EFI_HANDLE.
EFI_INVALID_PARAMETER - Language is NULL.
EFI_INVALID_PARAMETER - ControllerName is NULL.
EFI_UNSUPPORTED - The driver specified by This is not currently
managing the controller specified by
ControllerHandle and ChildHandle.
EFI_UNSUPPORTED - The driver specified by This does not support the
language specified by Language.
--*/
{
EFI_STATUS Status;
EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer;
//
// here ChildHandle is not an Optional parameter.
//
if (ChildHandle == NULL) {
return EFI_UNSUPPORTED;
}
Status = gBS->OpenProtocol (
ControllerHandle,
&gEfiAbsolutePointerProtocolGuid,
(VOID **) &AbsolutePointer,
NULL,
ControllerHandle,
EFI_OPEN_PROTOCOL_GET_PROTOCOL
);
if (EFI_ERROR (Status)) {
return EFI_UNSUPPORTED;
}
return LookupUnicodeString2 (
Language,
This->SupportedLanguages,
mConSplitterAbsolutePointerControllerNameTable,
ControllerName,
(BOOLEAN)(This == &gConSplitterAbsolutePointerComponentName)
);
}
/**
Retrieves a Unicode string that is the user readable name of the controller
that is being managed by a driver.

View File

@@ -76,6 +76,27 @@ STATIC TEXT_IN_SPLITTER_PRIVATE_DATA mConIn = {
(EFI_SIMPLE_POINTER_PROTOCOL **) NULL,
0,
{
ConSplitterAbsolutePointerReset,
ConSplitterAbsolutePointerGetState,
(EFI_EVENT) NULL,
(EFI_ABSOLUTE_POINTER_MODE *) NULL
},
{
0, //AbsoluteMinX
0, //AbsoluteMinY
0, //AbsoluteMinZ
0x10000, //AbsoluteMaxX
0x10000, //AbsoluteMaxY
0x10000, //AbsoluteMaxZ
0 //Attributes
},
0,
(EFI_ABSOLUTE_POINTER_PROTOCOL **) NULL,
0,
FALSE,
FALSE,
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -240,6 +261,18 @@ EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding = {
NULL
};
//
// Driver binding instance for Absolute Pointer protocol
//
EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding = {
ConSplitterAbsolutePointerDriverBindingSupported,
ConSplitterAbsolutePointerDriverBindingStart,
ConSplitterAbsolutePointerDriverBindingStop,
0xa,
NULL,
NULL
};
EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding = {
ConSplitterConOutDriverBindingSupported,
ConSplitterConOutDriverBindingStart,
@@ -300,6 +333,16 @@ InitializeConSplitter(
);
ASSERT_EFI_ERROR (Status);
Status = EfiLibInstallDriverBindingComponentName2 (
ImageHandle,
SystemTable,
&gConSplitterAbsolutePointerDriverBinding,
NULL,
&gConSplitterAbsolutePointerComponentName,
&gConSplitterAbsolutePointerComponentName2
);
ASSERT_EFI_ERROR (Status);
Status = EfiLibInstallDriverBindingComponentName2 (
ImageHandle,
SystemTable,
@@ -386,6 +429,8 @@ Returns:
&mConIn.TextInEx,
&gEfiSimplePointerProtocolGuid,
&mConIn.SimplePointer,
&gEfiAbsolutePointerProtocolGuid,
&mConIn.AbsolutePointer,
&gEfiPrimaryConsoleInDeviceGuid,
NULL,
NULL
@@ -554,6 +599,28 @@ Returns:
InitializeListHead (&ConInPrivate->NotifyList);
//
// Allocate Buffer and Create Event for Absolute Pointer and Simple Pointer Protocols
//
ConInPrivate->AbsolutePointer.Mode = &ConInPrivate->AbsolutePointerMode;
Status = ConSplitterGrowBuffer (
sizeof (EFI_ABSOLUTE_POINTER_PROTOCOL *),
&ConInPrivate->AbsolutePointerListCount,
(VOID **) &ConInPrivate->AbsolutePointerList
);
if (EFI_ERROR (Status)) {
return EFI_OUT_OF_RESOURCES;
}
Status = gBS->CreateEvent (
EVT_NOTIFY_WAIT,
TPL_NOTIFY,
ConSplitterAbsolutePointerWaitForInput,
ConInPrivate,
&ConInPrivate->AbsolutePointer.WaitForInput
);
ASSERT_EFI_ERROR (Status);
ConInPrivate->SimplePointer.Mode = &ConInPrivate->SimplePointerMode;
@@ -787,6 +854,36 @@ Returns:
);
}
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerDriverBindingSupported (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
)
/*++
Routine Description:
Absolute Pointer Supported Check
Arguments:
This - Pointer to protocol.
ControllerHandle - Controller handle.
RemainingDevicePath - Remaining device path.
Returns:
EFI_STATUS
--*/
{
return ConSplitterSupported (
This,
ControllerHandle,
&gEfiAbsolutePointerProtocolGuid
);
}
EFI_STATUS
EFIAPI
ConSplitterConOutDriverBindingSupported (
@@ -1021,6 +1118,49 @@ Returns:
return ConSplitterSimplePointerAddDevice (&mConIn, SimplePointer);
}
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerDriverBindingStart (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
)
/*++
Routine Description:
Start ConSplitter on ControllerHandle, and create the virtual
agrogated console device on first call Start for a ConIn handle.
Arguments:
This - Pointer to protocol.
ControllerHandle - Controller handle.
RemainingDevicePath - Remaining device path.
Returns:
EFI_ERROR if a AbsolutePointer protocol is not started.
--*/
{
EFI_STATUS Status;
EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer;
Status = ConSplitterStart (
This,
ControllerHandle,
mConIn.VirtualHandle,
&gEfiAbsolutePointerProtocolGuid,
&gEfiAbsolutePointerProtocolGuid,
(VOID **) &AbsolutePointer
);
if (EFI_ERROR (Status)) {
return Status;
}
return ConSplitterAbsolutePointerAddDevice (&mConIn, AbsolutePointer);
}
EFI_STATUS
EFIAPI
ConSplitterConOutDriverBindingStart (
@@ -1341,6 +1481,51 @@ Returns:
return ConSplitterSimplePointerDeleteDevice (&mConIn, SimplePointer);
}
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerDriverBindingStop (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN UINTN NumberOfChildren,
IN EFI_HANDLE *ChildHandleBuffer
)
/*++
Routine Description:
Arguments:
(Standard DriverBinding Protocol Stop() function)
Returns:
None
--*/
{
EFI_STATUS Status;
EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer;
if (NumberOfChildren == 0) {
return EFI_SUCCESS;
}
Status = ConSplitterStop (
This,
ControllerHandle,
mConIn.VirtualHandle,
&gEfiAbsolutePointerProtocolGuid,
&gEfiAbsolutePointerProtocolGuid,
(VOID **) &AbsolutePointer
);
if (EFI_ERROR (Status)) {
return Status;
}
//
// Delete this console input device's data structures.
//
return ConSplitterAbsolutePointerDeleteDevice (&mConIn, AbsolutePointer);
}
EFI_STATUS
EFIAPI
ConSplitterConOutDriverBindingStop (
@@ -1729,6 +1914,83 @@ Returns:
return EFI_NOT_FOUND;
}
EFI_STATUS
ConSplitterAbsolutePointerAddDevice (
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer
)
/*++
Routine Description:
Arguments:
Returns:
EFI_OUT_OF_RESOURCES
EFI_SUCCESS
--*/
{
EFI_STATUS Status;
//
// If the Absolute Pointer List is full, enlarge it by calling growbuffer().
//
if (Private->CurrentNumberOfAbsolutePointers >= Private->AbsolutePointerListCount) {
Status = ConSplitterGrowBuffer (
sizeof (EFI_ABSOLUTE_POINTER_PROTOCOL *),
&Private->AbsolutePointerListCount,
(VOID **) &Private->AbsolutePointerList
);
if (EFI_ERROR (Status)) {
return EFI_OUT_OF_RESOURCES;
}
}
//
// Add the new text-in device data structure into the Text In List.
//
Private->AbsolutePointerList[Private->CurrentNumberOfAbsolutePointers] = AbsolutePointer;
Private->CurrentNumberOfAbsolutePointers++;
return EFI_SUCCESS;
}
EFI_STATUS
ConSplitterAbsolutePointerDeleteDevice (
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer
)
/*++
Routine Description:
Arguments:
Returns:
None
--*/
{
UINTN Index;
//
// Remove the specified text-in device data structure from the Text In List,
// and rearrange the remaining data structures in the Text In List.
//
for (Index = 0; Index < Private->CurrentNumberOfAbsolutePointers; Index++) {
if (Private->AbsolutePointerList[Index] == AbsolutePointer) {
for (Index = Index; Index < Private->CurrentNumberOfAbsolutePointers - 1; Index++) {
Private->AbsolutePointerList[Index] = Private->AbsolutePointerList[Index + 1];
}
Private->CurrentNumberOfAbsolutePointers--;
return EFI_SUCCESS;
}
}
return EFI_NOT_FOUND;
}
STATIC
EFI_STATUS
ConSplitterGrowMapTable (
@@ -3325,8 +3587,6 @@ ConSplitterTextInUnregisterKeyNotify (
}
EFI_STATUS
EFIAPI
ConSplitterSimplePointerReset (
@@ -3552,6 +3812,198 @@ Returns:
}
}
//
// Absolute Pointer Protocol functions
//
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerReset (
IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
IN BOOLEAN ExtendedVerification
)
/*++
Routine Description:
Resets the pointer device hardware.
Arguments:
This - Protocol instance pointer.
ExtendedVerification - Driver may perform diagnostics on reset.
Returns:
EFI_SUCCESS - The device was reset.
EFI_DEVICE_ERROR - The device is not functioning correctly and could
not be reset.
--*/
{
EFI_STATUS Status;
EFI_STATUS ReturnStatus;
TEXT_IN_SPLITTER_PRIVATE_DATA *Private;
UINTN Index;
Private = TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS (This);
Private->AbsoluteInputEventSignalState = FALSE;
if (Private->CurrentNumberOfAbsolutePointers == 0) {
return EFI_SUCCESS;
}
//
// return the worst status met
//
for (Index = 0, ReturnStatus = EFI_SUCCESS; Index < Private->CurrentNumberOfAbsolutePointers; Index++) {
Status = Private->AbsolutePointerList[Index]->Reset (
Private->AbsolutePointerList[Index],
ExtendedVerification
);
if (EFI_ERROR (Status)) {
ReturnStatus = Status;
}
}
return ReturnStatus;
}
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerGetState (
IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
IN OUT EFI_ABSOLUTE_POINTER_STATE *State
)
/*++
Routine Description:
Retrieves the current state of a pointer device.
Arguments:
This - Protocol instance pointer.
State - A pointer to the state information on the pointer device.
Returns:
EFI_SUCCESS - The state of the pointer device was returned in State..
EFI_NOT_READY - The state of the pointer device has not changed since the last call to
GetState().
EFI_DEVICE_ERROR - A device error occurred while attempting to retrieve the pointer
device's current state.
--*/
{
TEXT_IN_SPLITTER_PRIVATE_DATA *Private;
EFI_STATUS Status;
EFI_STATUS ReturnStatus;
UINTN Index;
EFI_ABSOLUTE_POINTER_STATE CurrentState;
Private = TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS (This);
if (Private->PasswordEnabled) {
//
// If StdIn Locked return not ready
//
return EFI_NOT_READY;
}
Private->AbsoluteInputEventSignalState = FALSE;
State->CurrentX = 0;
State->CurrentY = 0;
State->CurrentZ = 0;
State->ActiveButtons = 0;
//
// if no physical pointer device exists, return EFI_NOT_READY;
// if any physical pointer device has changed state,
// return the state and EFI_SUCCESS.
//
ReturnStatus = EFI_NOT_READY;
for (Index = 0; Index < Private->CurrentNumberOfAbsolutePointers; Index++) {
Status = Private->AbsolutePointerList[Index]->GetState (
Private->AbsolutePointerList[Index],
&CurrentState
);
if (!EFI_ERROR (Status)) {
if (ReturnStatus == EFI_NOT_READY) {
ReturnStatus = EFI_SUCCESS;
}
State->ActiveButtons = CurrentState.ActiveButtons;
if (!(Private->AbsolutePointerMode.AbsoluteMinX == 0 && Private->AbsolutePointerMode.AbsoluteMaxX == 0)) {
State->CurrentX = CurrentState.CurrentX;
}
if (!(Private->AbsolutePointerMode.AbsoluteMinY == 0 && Private->AbsolutePointerMode.AbsoluteMaxY == 0)) {
State->CurrentY = CurrentState.CurrentY;
}
if (!(Private->AbsolutePointerMode.AbsoluteMinZ == 0 && Private->AbsolutePointerMode.AbsoluteMaxZ == 0)) {
State->CurrentZ = CurrentState.CurrentZ;
}
} else if (Status == EFI_DEVICE_ERROR) {
ReturnStatus = EFI_DEVICE_ERROR;
}
}
return ReturnStatus;
}
VOID
EFIAPI
ConSplitterAbsolutePointerWaitForInput (
IN EFI_EVENT Event,
IN VOID *Context
)
/*++
Routine Description:
This event agregates all the events of the pointer devices in the splitter.
If the ConIn is password locked then return.
If any events of physical pointer devices are signaled, signal the pointer
splitter event. This will cause the calling code to call
ConSplitterAbsolutePointerGetState ().
Arguments:
Event - The Event assoicated with callback.
Context - Context registered when Event was created.
Returns:
None
--*/
{
EFI_STATUS Status;
TEXT_IN_SPLITTER_PRIVATE_DATA *Private;
UINTN Index;
Private = (TEXT_IN_SPLITTER_PRIVATE_DATA *) Context;
if (Private->PasswordEnabled) {
//
// If StdIn Locked return not ready
//
return ;
}
//
// if AbsoluteInputEventSignalState is flagged before,
// and not cleared by Reset() or GetState(), signal it
//
if (Private->AbsoluteInputEventSignalState) {
gBS->SignalEvent (Event);
return ;
}
//
// if any physical console input device has key input, signal the event.
//
for (Index = 0; Index < Private->CurrentNumberOfAbsolutePointers; Index++) {
Status = gBS->CheckEvent (Private->AbsolutePointerList[Index]->WaitForInput);
if (!EFI_ERROR (Status)) {
gBS->SignalEvent (Event);
Private->AbsoluteInputEventSignalState = TRUE;
}
}
}
EFI_STATUS
EFIAPI
ConSplitterTextOutReset (

View File

@@ -21,6 +21,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Protocol/GraphicsOutput.h>
#include <Guid/PrimaryConsoleInDevice.h>
#include <Protocol/SimplePointer.h>
#include <Protocol/AbsolutePointer.h>
#include <Protocol/SimpleTextOut.h>
#include <Guid/ConsoleInDevice.h>
#include <Protocol/SimpleTextIn.h>
@@ -47,6 +48,8 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName;
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;
extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;
extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName;
extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;
@@ -89,6 +92,7 @@ typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY {
EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;
LIST_ENTRY NotifyEntry;
} TEXT_IN_EX_SPLITTER_NOTIFY;
typedef struct {
UINT64 Signature;
EFI_HANDLE VirtualHandle;
@@ -111,6 +115,13 @@ typedef struct {
EFI_SIMPLE_POINTER_PROTOCOL **PointerList;
UINTN PointerListCount;
EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer;
EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode;
UINTN CurrentNumberOfAbsolutePointers;
EFI_ABSOLUTE_POINTER_PROTOCOL **AbsolutePointerList;
UINTN AbsolutePointerListCount;
BOOLEAN AbsoluteInputEventSignalState;
BOOLEAN PasswordEnabled;
CHAR16 Password[MAX_STD_IN_PASSWORD];
UINTN PwdIndex;
@@ -368,6 +379,111 @@ ConSplitterStdErrDriverBindingStop (
)
;
//
// Driver binding functions
//
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerDriverBindingSupported (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
)
;
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerDriverBindingStart (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
)
;
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerDriverBindingStop (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN UINTN NumberOfChildren,
IN EFI_HANDLE *ChildHandleBuffer
)
;
EFI_STATUS
ConSplitterAbsolutePointerAddDevice (
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer
)
;
EFI_STATUS
ConSplitterAbsolutePointerDeleteDevice (
IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,
IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer
)
;
//
// Absolute Pointer protocol interfaces
//
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerReset (
IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
IN BOOLEAN ExtendedVerification
)
/*++
Routine Description:
Resets the pointer device hardware.
Arguments:
This - Protocol instance pointer.
ExtendedVerification - Driver may perform diagnostics on reset.
Returns:
EFI_SUCCESS - The device was reset.
EFI_DEVICE_ERROR - The device is not functioning correctly and could
not be reset.
--*/
;
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerGetState (
IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,
IN OUT EFI_ABSOLUTE_POINTER_STATE *State
)
/*++
Routine Description:
Retrieves the current state of a pointer device.
Arguments:
This - Protocol instance pointer.
State - A pointer to the state information on the pointer device.
Returns:
EFI_SUCCESS - The state of the pointer device was returned in State..
EFI_NOT_READY - The state of the pointer device has not changed since the last call to
GetState().
EFI_DEVICE_ERROR - A device error occurred while attempting to retrieve the pointer
device's current state.
--*/
;
VOID
EFIAPI
ConSplitterAbsolutePointerWaitForInput (
IN EFI_EVENT Event,
IN VOID *Context
)
;
/**
Retrieves a Unicode string that is the user readable name of the driver.
@@ -573,6 +689,16 @@ ConSplitterSimplePointerComponentNameGetControllerName (
OUT CHAR16 **ControllerName
);
EFI_STATUS
EFIAPI
ConSplitterAbsolutePointerComponentNameGetControllerName (
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

View File

@@ -77,6 +77,7 @@
gEfiSimpleTextOutProtocolGuid # PROTOCOL ALWAYS_PRODUCED
gEfiGraphicsOutputProtocolGuid # PROTOCOL ALWAYS_PRODUCED
gEfiUgaDrawProtocolGuid # PROTOCOL ALWAYS_PRODUCED
gEfiAbsolutePointerProtocolGuid # PROTOCOL ALWAYS_PRODUCED
[FeaturePcd.common]
gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport