• Hans de Goede's avatar
    pinctrl: cherryview: Fix irq_valid_mask calculation · 63bdef6c
    Hans de Goede authored
    Commit 03c4749d ("gpio / ACPI: Drop unnecessary ACPI GPIO to Linux
    GPIO translation") has made the cherryview gpio numbers sparse, to get
    a 1:1 mapping between ACPI pin numbers and gpio numbers in Linux.
    
    This has greatly simplified things, but the code setting the
    irq_valid_mask was not updated for this, so the valid mask is still in
    the old "compressed" numbering with the gaps in the pin numbers skipped,
    which is wrong as irq_valid_mask needs to be expressed in gpio numbers.
    
    This results in the following error on devices using pin 24 (0x0018) on
    the north GPIO controller as an ACPI event source:
    
    [    0.422452] cherryview-pinctrl INT33FF:01: Failed to translate GPIO to IRQ
    
    This has been reported (by email) to be happening on a Caterpillar CAT T20
    tablet and I've reproduced this myself on a Medion Akoya e2215t 2-in-1.
    
    This commit uses the pin number instead of the compressed index into
    community->pins to clear the correct bits in irq_valid_mask for GPIOs
    using GPEs for interrupts, fixing these errors and in case of the
    Medion Akoya e2215t also fixing the LID switch not working.
    
    Cc: stable@vger.kernel.org
    Fixes: 03c4749d ("gpio / ACPI: Drop unnecessary ACPI GPIO to Linux GPIO translation")
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    63bdef6c
pinctrl-cherryview.c 51.3 KB