OSDN Git Service

platform/x86: intel-vbtn: Eval VBDL after registering our notifier
authorHans de Goede <hdegoede@redhat.com>
Fri, 15 Jan 2021 16:18:50 +0000 (17:18 +0100)
committerHans de Goede <hdegoede@redhat.com>
Mon, 25 Jan 2021 20:34:36 +0000 (21:34 +0100)
commit26173179fae1b1ff16ed07853fe50457828a6c87
treef4f2ddae6e6af86bfb52939f0b6cfdc45b7e3710
parent3a2f53cd03101f6a7cc34c558b0dbfbaca798165
platform/x86: intel-vbtn: Eval VBDL after registering our notifier

The VBDL ACPI method enables button/switch reporting through the
intel-vbtn device. In some cases the embedded-controller (EC) might
call Notify() on the intel-vbtn device immediately after the
the VBDL call to make sure that the OS is synced with the EC's
button and switch state.

If we register our notify_handler after evaluating VBDL this means
that we might miss the Notify() calls made by the EC to sync the
state.

E.g. the HP Stream x360 Convertible PC 11 has a VGBS method which
always returns 0, independent of the actual SW_TABLET_MODE state
of the device; and immediately after the VBDL call it calls
Notify(0xCD) or Notify(0xCC) to report the actual state.

Move the evaluation of VBDL to after registering our notify_handler
so that we don't miss any events.

Cc: Elia Devito <eliadevito@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210115161850.117614-4-hdegoede@redhat.com
drivers/platform/x86/intel-vbtn.c