lkml.org 
[lkml]   [2024]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 6.1 04/29] Input: goodix - accept ACPI resources with gpio_count == 3 && gpio_int_idx == 0
    Date
    From: Hans de Goede <hdegoede@redhat.com>

    [ Upstream commit 180a8f12c21f41740fee09ca7f7aa98ff5bb99f8 ]

    Some devices list 3 Gpio resources in the ACPI resource list for
    the touchscreen:

    1. GpioInt resource pointing to the GPIO used for the interrupt
    2. GpioIo resource pointing to the reset GPIO
    3. GpioIo resource pointing to the GPIO used for the interrupt

    Note how the third extra GpioIo resource really is a duplicate
    of the GpioInt provided info.

    Ignore this extra GPIO, treating this setup the same as gpio_count == 2 &&
    gpio_int_idx == 0 fixes the touchscreen not working on the Thunderbook
    Colossus W803 rugged tablet and likely also on the CyberBook_T116K.

    Reported-by: Maarten van der Schrieck
    Closes: https://gitlab.com/AdyaAdya/goodix-touchscreen-linux-driver/-/issues/22
    Suggested-by: Maarten van der Schrieck
    Tested-by: Maarten van der Schrieck
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20231223141650.10679-1-hdegoede@redhat.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/input/touchscreen/goodix.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
    index 3f0732db7bf5..6de64b3f900f 100644
    --- a/drivers/input/touchscreen/goodix.c
    +++ b/drivers/input/touchscreen/goodix.c
    @@ -884,7 +884,8 @@ static int goodix_add_acpi_gpio_mappings(struct goodix_ts_data *ts)
    }
    }

    - if (ts->gpio_count == 2 && ts->gpio_int_idx == 0) {
    + /* Some devices with gpio_int_idx 0 list a third unused GPIO */
    + if ((ts->gpio_count == 2 || ts->gpio_count == 3) && ts->gpio_int_idx == 0) {
    ts->irq_pin_access_method = IRQ_PIN_ACCESS_ACPI_GPIO;
    gpio_mapping = acpi_goodix_int_first_gpios;
    } else if (ts->gpio_count == 2 && ts->gpio_int_idx == 1) {
    --
    2.43.0

    \
     
     \ /
      Last update: 2024-05-27 14:53    [W:4.439 / U:26.780 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site