linux/drivers/pinctrl/intel
Hans de Goede 3739898576 pinctrl: cherryview: Fix irq_valid_mask calculation
Commit 03c4749dd6 ("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: 03c4749dd6 ("gpio / ACPI: Drop unnecessary ACPI GPIO to Linux GPIO translation")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2019-10-30 16:05:18 +02:00
..
Kconfig pinctrl: intel: Convert to use SPDX identifier 2018-07-02 15:52:10 +02:00
Makefile pinctrl: intel: Add Ice Lake PCH pin controller support 2018-06-29 14:51:26 +02:00
pinctrl-baytrail.c This is the bulk of pin control changes for the v5.4 kernel 2019-09-19 14:19:33 -07:00
pinctrl-broxton.c pinctrl: broxton: Provide Interrupt Status register offset 2019-08-07 16:45:41 +03:00
pinctrl-cannonlake.c pinctrl: cannonlake: Provide Interrupt Status register offset 2019-08-07 16:45:41 +03:00
pinctrl-cedarfork.c pinctrl: cedarfork: Update pin names according to v1.13c 2019-04-03 14:49:47 +03:00
pinctrl-cherryview.c pinctrl: cherryview: Fix irq_valid_mask calculation 2019-10-30 16:05:18 +02:00
pinctrl-denverton.c pinctrl: denverton: Update pin names according to v1.08 2019-08-08 12:57:01 +03:00
pinctrl-geminilake.c pinctrl: geminilake: Provide Interrupt Status register offset 2019-08-07 16:45:41 +03:00
pinctrl-icelake.c pinctrl: icelake: Provide Interrupt Status register offset 2019-08-07 16:45:41 +03:00
pinctrl-intel.c pinctrl: intel: Avoid potential glitches if pin is in GPIO mode 2019-10-30 16:05:18 +02:00
pinctrl-intel.h pinctrl: baytrail: Re-use data structures from pinctrl-intel.h (part 2) 2019-08-07 17:25:19 +03:00
pinctrl-lewisburg.c pinctrl: lewisburg: Provide Interrupt Status register offset 2019-08-07 16:45:41 +03:00
pinctrl-merrifield.c pinctrl: merrifield: Use devm_platform_ioremap_resource() 2019-07-23 16:13:14 +03:00
pinctrl-sunrisepoint.c pinctrl: sunrisepoint: Provide Interrupt Status register offset 2019-08-07 16:45:41 +03:00