• Hans de Goede's avatar
    platform/x86: x86-android-tablets: Fix keyboard touchscreen on Lenovo Yogabook1 X90 · bd8905d7
    Hans de Goede authored
    After commit 4014ae23 ("platform/x86: x86-android-tablets: Stop using
    gpiolib private APIs") the touchscreen in the keyboard half of
    the Lenovo Yogabook1 X90 stopped working with the following error:
    
     Goodix-TS i2c-goodix_ts: error -EBUSY: Failed to get irq GPIO
    
    The problem is that when getting the IRQ for instantiated i2c_client-s
    from a GPIO (rather then using an IRQ directly from the IOAPIC),
    x86_acpi_irq_helper_get() now properly requests the GPIO, which disallows
    other drivers from requesting it. Normally this is a good thing, but
    the goodix touchscreen also uses the IRQ as an output during reset
    to select which of its 2 possible I2C addresses should be used.
    
    Add a new free_gpio flag to struct x86_acpi_irq_data to deal with this
    and release the GPIO after getting the IRQ in this special case.
    
    Fixes: 4014ae23 ("platform/x86: x86-android-tablets: Stop using gpiolib private APIs")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20240216201721.239791-2-hdegoede@redhat.com
    bd8905d7
x86-android-tablets.h 3.95 KB