Comment 6 for bug 1632527

Revision history for this message
AceLan Kao (acelankao) wrote :

Here is the patch

commit c538b9436751a0be2e1246b48353bc23156bdbcc
Author: Mika Westerberg <email address hidden>
Date: Mon Oct 10 16:39:31 2016 +0300

    pinctrl: intel: Only restore pins that are used by the driver

    Dell XPS 13 (and maybe some others) uses a GPIO (CPU_GP_1) during suspend
    to explicitly disable USB touchscreen interrupt. This is done to prevent
    situation where the lid is closed the touchscreen is left functional.

    The pinctrl driver (wrongly) assumes it owns all pins which are owned by
    host and not locked down. It is perfectly fine for BIOS to use those pins
    as it is also considered as host in this context.

    What happens is that when the lid of Dell XPS 13 is closed, the BIOS
    configures CPU_GP_1 low disabling the touchscreen interrupt. During resume
    we restore all host owned pins to the known state which includes CPU_GP_1
    and this overwrites what the BIOS has programmed there causing the
    touchscreen to fail as no interrupts are reaching the CPU anymore.

    Fix this by restoring only those pins we know are explicitly requested by
    the kernel one way or other.

    Cc: <email address hidden>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=176361
    Reported-by: AceLan Kao <email address hidden>
    Tested-by: AceLan Kao <email address hidden>
    Signed-off-by: Mika Westerberg <email address hidden>
    Signed-off-by: Linus Walleij <email address hidden>