• Maximilian Luz's avatar
    platform/surface: Add Driver to set up lid GPEs on MS Surface device · 274335f1
    Maximilian Luz authored
    Conventionally, wake-up events for a specific device, in our case the
    lid device, are managed via the ACPI _PRW field. While this does not
    seem strictly necessary based on ACPI spec, the kernel disables GPE
    wakeups to avoid non-wakeup interrupts preventing suspend by default and
    only enables GPEs associated via the _PRW field with a wake-up capable
    device. This behavior has been introduced in commit f941d3e4 ("ACPI:
    EC / PM: Disable non-wakeup GPEs for suspend-to-idle") and is described
    in more detail in its commit message.
    
    Unfortunately, on MS Surface devices, there is no _PRW field present on
    the lid device, thus no GPE is associated with it, and therefore the GPE
    responsible for sending the status-change notification to the lid gets
    disabled during suspend, making it impossible to wake the device via the
    lid.
    
    This patch introduces a pseudo-device and respective driver which, based
    on some DMI matching, marks the corresponding GPE of the lid device for
    wake and enables it during suspend. The behavior of this driver models
    the behavior of the ACPI/PM core for normal wakeup GPEs, properly
    declared via the _PRW field.
    Signed-off-by: default avatarMaximilian Luz <luzmaximilian@gmail.com>
    Link: https://lore.kernel.org/r/20201028105427.1593764-1-luzmaximilian@gmail.comSigned-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    274335f1
Makefile 392 Bytes