• Benjamin Tissoires's avatar
    platform/x86: Add custom surface3 platform device for controlling LID · 3dda3b37
    Benjamin Tissoires authored
    The LID state provided by ACPI on the Surface 3 is not accurate.
    The ACPI node doesn't get notified on LID open, which means the
    LID input switch stays close most of the time.
    
    Fortunatelly, there is a WMI method which directly queries the
    GPIO underneath the LID state, so it's far more reliable than ACPI.
    To get the notifications that the LID was opened/closed, we can
    rely on the ACPI notification of the touchscreen: the DSDT shows
    that the touchscreen will get notified on close/open as it also
    controls its _STA method.
    
    Note that we need to set the tag "power-switch" to the LID
    input node through a udev rule for logind to accept it:
    
    SUBSYSTEM=="input", KERNEL=="event*", KERNELS=="surface3-wmi", \
    	TAG+="power-switch"
    Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    3dda3b37
surface3-wmi.c 6.07 KB