[Fw_Os_Forum] UEFI pre-boot issues with Microsoft surface pro 4

Venkat Gorla venkatagorla at gmail.com
Thu May 26 03:14:30 EDT 2016


Hi,

We are facing few issues with the absolute pointer protocol on Microsoft
surface pro 4 in the UEFI pre-boot environment. So I am sending this email
looking for some guidance/ recommendations on how to resolve them.

- In order to query the protocol interface handle we are currently calling
HandleProtocol(). The UEFI specification (2.6) recommends using
OpenProtocol in place on HandleProtocol. Does it really matter which one we
use?
- Once we get the absolute pointer protocol interface handle, is there any
guidance on when to call the Reset() function? We are seeing inconsistent
behavior with the Reset function on different hardware models such as
Microsoft surface pro 1 and pro 3.
- For example, on one model calling Reset is giving the desired behavior
while on the other model, not calling it is working.

- When calling GetState function on the protocol interface, how do you
differentiate between finger touch/ press and release events?
This is what we are currently doing in our code, pseudo code:

while (true)
{
    status = BS->WaitForEvent(<Array containing "WaitForInput" event of the
protocol interface>);

    if (status is successful)
    {
        EFI_ABSOLUTE_POINTER_STATE PointerState;
        status = GetState(pAbsolutePointerProtocol, &PointerState);

        // Check return value of GetState and process the touch/ release
event.
        if (PointerState.ActiveButtons & EFI_ABSP_TouchActive)
        {
            // This is the finger touch/ press event.
        }
        else if (PointerState.ActiveButtons & EFI_ABS_AltActive)
        {
            // We ignore this event.
        }
        else
        {
            // This is the finger release event.
        }
    }
}

- Our expectation is that every time you touch and release, we should be
getting *two* events that get processed by our code.
- However on Microsoft surface pro 4, we are not always getting the touch
and release events in pairs and that is throwing off our code.

- Looking at the pseudo code is there something that is missing that could
be causing this behavior?
- Additionally are there any known touch related issues with surface pro 4
and is there any specific guidance on how to resolve them?

Please let me know if you need any additional info to help answer my
questions.

Thanks,
    Venkat
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mailman.uefi.org/pipermail/fw_os_forum/attachments/20160526/e4d8707a/attachment.html>


More information about the Fw_os_forum mailing list