linux/drivers/gpio
Hans de Goede 5adc409340 ACPI: x86: Introduce an acpi_quirk_skip_gpio_event_handlers() helper
x86 ACPI boards which ship with only Android as their factory image usually
have pretty broken ACPI tables, relying on everything being hardcoded in
the factory kernel image and often disabling parts of the ACPI enumeration
kernel code to avoid the broken tables causing issues.

Part of this broken ACPI code is that sometimes these boards have _AEI
ACPI GPIO event handlers which are broken.

So far this has been dealt with in the platform/x86/x86-android-tablets.c
module, which contains various workarounds for these devices, by it calling
acpi_gpiochip_free_interrupts() on gpiochip-s with troublesome handlers to
disable the handlers.

But in some cases this is too late, if the handlers are of the edge type
then gpiolib-acpi.c's code will already have run them at boot.
This can cause issues such as GPIOs ending up as owned by "ACPI:OpRegion",
making them unavailable for drivers which actually need them.

Boards with these broken ACPI tables are already listed in
drivers/acpi/x86/utils.c for e.g. acpi_quirk_skip_i2c_client_enumeration().
Extend the quirks mechanism for a new acpi_quirk_skip_gpio_event_handlers()
helper, this re-uses the DMI-ids rather then having to duplicate the same
DMI table in gpiolib-acpi.c .

Also add the new ACPI_QUIRK_SKIP_GPIO_EVENT_HANDLERS quirk to existing
boards with troublesome ACPI gpio event handlers, so that the current
acpi_gpiochip_free_interrupts() hack can be removed from
x86-android-tablets.c .

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Rafael J. Wysocki <rjw@rjwysocki.net>
2023-03-07 14:15:10 +01:00
..
gpio-74x164.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
gpio-74xx-mmio.c gpio: 74xx-mmio: Use bits instead of plain numbers for flags 2022-07-28 15:47:56 +02:00
gpio-104-dio-48e.c gpio: 104-dio-48e: Migrate to regmap API 2023-01-30 15:55:28 +01:00
gpio-104-idi-48.c gpio: 104-idi-48: Migrate to gpio-regmap API 2023-01-30 15:55:28 +01:00
gpio-104-idio-16.c gpio: 104-idio-16: Utilize the idio-16 GPIO library 2022-10-25 09:57:57 +02:00
gpio-adnp.c gpio: adnp: Make use of device properties 2022-07-19 09:57:13 +02:00
gpio-adp5520.c gpio: adp5520: cleanup probe error path + remove platform_set_drvdata() 2021-05-21 15:29:53 +02:00
gpio-aggregator.c gpio: aggregator: Stop using ARCH_NR_GPIOS 2022-10-17 11:02:35 +02:00
gpio-altera-a10sr.c gpio: altera-a10sr: Switch to use fwnode instead of of_node 2022-01-24 17:23:15 +02:00
gpio-altera.c gpio: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:38 +01:00
gpio-amd8111.c gpio: amd8111: Fix PCI device reference count leak 2022-11-30 17:18:35 +01:00
gpio-amd-fch.c gpio: amd-fch: correct logic of GPIO_LINE_DIRECTION 2020-09-28 12:22:04 +02:00
gpio-amdpt.c gpio: use raw spinlock for gpio chip shadowed data 2022-04-25 12:10:02 +02:00
gpio-arizona.c gpio: arizona: Remove unused header(s) 2022-10-19 17:03:55 +03:00
gpio-aspeed-sgpio.c gpio updates for v5.17 2022-01-11 12:31:35 -08:00
gpio-aspeed.c gpio: aspeed: Add missing header(s) 2022-10-19 17:03:55 +03:00
gpio-ath79.c gpio: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:38 +01:00
gpio-bcm-kona.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
gpio-bd9571mwv.c gpio: bd9571mwv: remove platform_set_drvdata() + cleanup probe 2021-05-21 15:43:26 +02:00
gpio-bd71815.c gpio: Support ROHM BD71815 GPOs 2021-04-14 10:19:22 +01:00
gpio-bd71828.c gpio: Get rid of duplicate of_node assignment in the drivers 2021-12-17 17:39:35 +01:00
gpio-brcmstb.c gpio: updates for v6.0-rc1 2022-08-04 18:34:05 -07:00
gpio-bt8xx.c drivers: gpio: bt8xx: prefer dev_err()/dev_warn() over of raw printk 2020-12-08 09:41:32 +01:00
gpio-cadence.c gpio: use raw spinlock for gpio chip shadowed data 2022-04-25 12:10:02 +02:00
gpio-clps711x.c
gpio-creg-snps.c gpio: Setup parent device and get rid of unnecessary of_node assignment 2021-12-17 17:44:19 +01:00
gpio-crystalcove.c gpio: crystalcove: Join function declarations and long lines 2022-06-06 14:09:16 +03:00
gpio-cs5535.c gpio: cs5535: Simplify the return expression of cs5535_gpio_probe() 2020-12-12 01:37:46 +01:00
gpio-da9052.c gpio: da9052: Remove unused header(s) 2022-10-19 17:03:55 +03:00
gpio-da9055.c gpio: da9055: remove platform_set_drvdata() + cleanup probe 2021-05-21 14:45:57 +02:00
gpio-davinci.c gpio: davinci: Remove duplicate assignment of of_gpio_n_cells 2023-01-30 15:55:30 +01:00
gpio-dln2.c gpio: dln2: make irq_chip immutable 2022-06-06 14:09:16 +03:00
gpio-dwapb.c gpio: dwapb: Don't print error on -EPROBE_DEFER 2022-06-10 14:26:15 +02:00
gpio-eic-sprd.c gpio: eic-sprd: Make the irqchip immutable 2022-12-30 16:57:27 +01:00
gpio-em.c gpio: Get rid of duplicate of_node assignment in the drivers 2021-12-17 17:39:35 +01:00
gpio-en7523.c gpio: Add support for Airoha EN7523 GPIO controller 2022-02-02 10:16:19 +01:00
gpio-ep93xx.c gpio: ep93xx: remove unused variable 2023-01-27 14:05:38 +01:00
gpio-exar.c gpio: exar: Allow IO port access 2022-10-26 14:52:02 +02:00
gpio-f7188x.c gpio-f7188x: use unique labels for banks/chips 2022-09-01 16:14:35 +02:00
gpio-ftgpio010.c gpio: ftgpio010: use device name for gpiochip name & label 2022-10-25 09:54:47 +02:00
gpio-ge.c gpio: ge: Remove duplicate assignment of of_gpio_n_cells 2023-01-30 15:55:30 +01:00
gpio-gpio-mm.c gpio: gpio-mm: Migrate to regmap API 2023-01-30 15:55:28 +01:00
gpio-grgpio.c gpio: grgpio: Fix device removing 2022-06-23 16:42:27 +02:00
gpio-gw-pld.c drivers/gpio: use simple i2c probe 2022-10-17 10:36:19 +02:00
gpio-hisi.c gpio: hisi: Add initial device tree support 2022-11-07 21:37:07 +01:00
gpio-hlwd.c gpio: use raw spinlock for gpio chip shadowed data 2022-04-25 12:10:02 +02:00
gpio-htc-egpio.c
gpio-i8255.c gpio: i8255: Remove unused legacy interface 2023-01-30 15:55:28 +01:00
gpio-i8255.h gpio: i8255: Remove unused legacy interface 2023-01-30 15:55:28 +01:00
gpio-ich.c gpio: ich: Switch to be dependent on LPC_ICH 2021-05-05 16:07:41 +02:00
gpio-idio-16.c gpio: idio-16: Introduce the ACCES IDIO-16 GPIO library module 2022-10-25 09:56:46 +02:00
gpio-idio-16.h gpio: idio-16: Introduce the ACCES IDIO-16 GPIO library module 2022-10-25 09:56:46 +02:00
gpio-idt3243x.c gpio: use raw spinlock for gpio chip shadowed data 2022-04-25 12:10:02 +02:00
gpio-imx-scu.c gpio: imx-scu: add imx-scu GPIO driver 2022-08-31 17:21:23 +02:00
gpio-it87.c gpio: it87: remove unused code 2021-05-05 16:07:41 +02:00
gpio-ixp4xx.c gpio: ixp4xx: Make irqchip immutable 2022-09-13 16:17:45 +02:00
gpio-janz-ttl.c
gpio-kempld.c
gpio-latch.c gpio: Add gpio latch driver 2022-10-26 14:52:01 +02:00
gpio-logicvc.c gpio: logicvc: Remove redundant error printing in logicvc_gpio_probe() 2021-05-12 13:35:39 +02:00
gpio-loongson1.c gpio: use raw spinlock for gpio chip shadowed data 2022-04-25 12:10:02 +02:00
gpio-loongson.c
gpio-lp873x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_319.RULE 2022-06-10 14:51:36 +02:00
gpio-lp3943.c gpio: lp3943: unsigned to unsigned int cleanup 2022-07-19 09:57:40 +02:00
gpio-lp87565.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_319.RULE 2022-06-10 14:51:36 +02:00
gpio-lpc18xx.c
gpio-lpc32xx.c gpio: Setup parent device and get rid of unnecessary of_node assignment 2021-12-17 17:44:19 +01:00
gpio-madera.c
gpio-max730x.c gpio: max730x: Make __max730x_remove() return void 2021-10-13 19:52:26 +02:00
gpio-max732x.c gpio: max732x: Convert to i2c's .probe_new() 2022-11-24 09:21:51 +01:00
gpio-max3191x.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
gpio-max7300.c drivers/gpio: use simple i2c probe 2022-10-17 10:36:19 +02:00
gpio-max7301.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
gpio-max77620.c gpio: max77620: Make the irqchip immutable 2022-05-05 14:56:37 +02:00
gpio-max77650.c
gpio-mb86s7x.c gpio: mb86s7x: Remove superfluous test for ACPI companion 2020-05-18 09:15:16 +02:00
gpio-mc33880.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
gpio-menz127.c gpio: use raw spinlock for gpio chip shadowed data 2022-04-25 12:10:02 +02:00
gpio-merrifield.c gpio: merrifield: Use str_enable_disable() helper 2022-10-18 17:31:20 +03:00
gpio-ml-ioh.c gpio: ml-ioh: Convert to use managed functions pcim* and devm_* 2022-05-20 19:20:35 +02:00
gpio-mlxbf2.c gpio: mlxbf2: Use generic_handle_irq_safe() 2022-09-19 15:08:38 +02:00
gpio-mlxbf.c gpio: gpio-mlxbf: Tell the compiler that ACPI functions may not be used 2020-07-08 09:24:08 +02:00
gpio-mm-lantiq.c gpio: mm-lantiq: Fix small typo 2020-04-28 22:41:25 +02:00
gpio-mmio.c gpio: use raw spinlock for gpio chip shadowed data 2022-04-25 12:10:02 +02:00
gpio-mockup.c gpio: mockup: Add missing header(s) 2022-10-24 12:29:11 +03:00
gpio-moxtet.c treewide: change my e-mail address, fix my name 2021-04-09 14:54:23 -07:00
gpio-mpc8xxx.c gpio: mpc8xxx: Fix support for IRQ_TYPE_LEVEL_LOW flow_type in mpc85xx 2022-09-07 13:17:23 +02:00
gpio-mpc5200.c
gpio-msc313.c gpio: msc313: Drop empty platform remove function 2023-01-30 15:55:27 +01:00
gpio-mt7621.c gpio updates for v6.1-rc1 2022-10-08 09:46:29 -07:00
gpio-mvebu.c gpio: mvebu: Use IS_REACHABLE instead of IS_ENABLED for CONFIG_PWM 2023-01-30 15:55:31 +01:00
gpio-mxc.c gpio: mxc: Unlock on error path in mxc_flip_edge() 2023-01-25 13:33:29 +01:00
gpio-mxs.c gpio: mxs: Fix header comment 2022-06-23 23:18:13 +02:00
gpio-octeon.c
gpio-omap.c gpio: omap: use dynamic allocation of base 2023-01-30 15:55:29 +01:00
gpio-palmas.c gpio: Get rid of duplicate of_node assignment in the drivers 2021-12-17 17:39:35 +01:00
gpio-pca953x.c gpio: pca953x: Remove unused PCAL953X_OUT_CONF from pcal6534_recalc_addr() 2023-01-30 15:55:27 +01:00
gpio-pca9570.c gpio: pca9570: rename platform_data to chip_data 2023-01-30 15:55:28 +01:00
gpio-pcf857x.c gpio: pcf857x: Drop unneeded explicit casting 2023-01-30 15:55:30 +01:00
gpio-pch.c gpio: pch: Change PCI device macros 2022-06-21 18:01:11 +03:00
gpio-pci-idio-16.c gpio: pci-idio-16: Utilize the idio-16 GPIO library 2022-10-25 09:58:27 +02:00
gpio-pcie-idio-24.c gpio: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:38 +01:00
gpio-pisosr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_319.RULE 2022-06-10 14:51:36 +02:00
gpio-pl061.c gpio: pl061: Add missing header(s) 2022-10-24 12:29:26 +03:00
gpio-pmic-eic-sprd.c gpio: pmic-eic-sprd: Make the irqchip immutable 2022-12-30 16:58:58 +01:00
gpio-pxa.c gpio: pxa: use devres for the clock struct 2022-08-19 14:35:11 +02:00
gpio-raspberrypi-exp.c gpio: Get rid of duplicate of_node assignment in the drivers 2021-12-17 17:39:35 +01:00
gpio-rc5t583.c
gpio-rcar.c gpio: rcar: Make the irqchip immutable 2022-05-24 16:35:49 +02:00
gpio-rda.c gpio: Remove unused local OF node pointers 2021-12-22 10:05:26 +01:00
gpio-rdc321x.c
gpio-realtek-otto.c gpio: realtek-otto: switch to 32-bit I/O 2022-08-31 17:46:30 +02:00
gpio-reg.c
gpio-regmap.c gpio: regmap: use new regmap_might_sleep() 2023-01-30 15:55:29 +01:00
gpio-rockchip.c gpio: rockchip: Do not mention legacy API in the code 2023-01-30 15:55:30 +01:00
gpio-sa1100.c
gpio-sama5d2-piobu.c gpio: Get rid of duplicate of_node assignment in the drivers 2021-12-17 17:39:35 +01:00
gpio-sch311x.c
gpio-sch.c gpio: sch: make irq_chip immutable 2022-06-06 14:09:16 +03:00
gpio-sifive.c gpio: sifive: Fix refcount leak in sifive_gpio_probe 2023-01-02 13:01:14 +01:00
gpio-sim.c gpio updates for v6.3 2023-02-22 11:01:17 -08:00
gpio-siox.c gpio: siox: explicitly support only threaded irqs 2020-09-09 12:59:15 +02:00
gpio-sl28cpld.c gpio: sl28cpld: Replace irqchip mask_invert with unmask_base 2022-11-15 15:41:45 +01:00
gpio-sodaville.c gpio: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:38 +01:00
gpio-spear-spics.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
gpio-sprd.c gpio: sprd: Make the irqchip immutable 2022-12-30 16:59:06 +01:00
gpio-stmpe.c gpio: Get rid of duplicate of_node assignment in the drivers 2021-12-17 17:39:35 +01:00
gpio-stp-xway.c gpio: stp-xway: automatically drive GPHY leds on ar10 and grx390 2020-08-18 21:32:28 +02:00
gpio-syscon.c gpio: syscon: Remove usage of syscon_regmap_lookup_by_compatible 2022-05-02 10:41:33 +02:00
gpio-tb10x.c gpio: use raw spinlock for gpio chip shadowed data 2022-04-25 12:10:02 +02:00
gpio-tc3589x.c gpio: tc3589x: Make irqchip immutable 2022-10-03 20:56:46 +02:00
gpio-tegra186.c gpio: tegra186: remove unneeded loop in tegra186_gpio_init_route_mapping() 2023-02-02 09:33:42 +01:00
gpio-tegra.c gpio: tegra: Convert to immutable irq chip 2022-10-20 13:47:54 +02:00
gpio-thunderx.c gpio: thunderx: Don't directly include asm-generic/msi.h 2022-07-11 09:15:58 +01:00
gpio-timberdale.c
gpio-tn48m.c gpio: Add Delta TN48M CPLD GPIO driver 2022-02-25 09:59:35 +01:00
gpio-tpic2810.c drivers/gpio: use simple i2c probe 2022-10-17 10:36:19 +02:00
gpio-tps6586x.c gpio: Propagate firmware node from a parent device 2021-12-17 17:50:46 +01:00
gpio-tps65086.c
gpio-tps65218.c gpio: Get rid of duplicate of_node assignment in the drivers 2021-12-17 17:39:35 +01:00
gpio-tps65910.c gpio: Propagate firmware node from a parent device 2021-12-17 17:50:46 +01:00
gpio-tps65912.c gpio: tps65912: remove platform_set_drvdata() + cleanup probe 2021-05-24 20:58:46 +02:00
gpio-tps68470.c gpio: tps68470: Allow building as module 2022-01-24 17:23:15 +02:00
gpio-tqmx86.c gpio: tqmx86: fix uninitialized variable girq 2022-09-21 09:31:22 +02:00
gpio-ts4800.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
gpio-ts4900.c drivers/gpio: use simple i2c probe 2022-10-17 10:36:19 +02:00
gpio-ts5500.c gpio: ts5500: Fix Links to Technologic Systems web resources 2022-03-31 16:44:57 +02:00
gpio-twl4030.c gpio: twl4030: Reorder functions which allows to drop a forward declaraion 2022-09-20 09:02:08 +02:00
gpio-twl6040.c gpio: Propagate firmware node from a parent device 2021-12-17 17:50:46 +01:00
gpio-uniphier.c gpio updates for v5.16 2021-11-08 11:55:21 -08:00
gpio-vf610.c gpio updates for v6.3 2023-02-22 11:01:17 -08:00
gpio-viperboard.c gpio: viperboard: remove platform_set_drvdata() call in probe 2021-08-31 11:29:28 +02:00
gpio-virtio.c virtio: wrap config->reset calls 2022-01-14 18:50:52 -05:00
gpio-visconti.c gpio: Remove dynamic allocation from populate_parent_alloc_arg() 2022-07-10 09:30:00 +01:00
gpio-vx855.c gpio: vx855: convert comma to semicolon 2021-02-15 11:43:29 +01:00
gpio-wcd934x.c gpio: wcd934x: Remove duplicate assignment of of_gpio_n_cells 2023-01-30 15:55:30 +01:00
gpio-wcove.c gpio: wcove: make irq_chip immutable 2022-06-06 14:09:16 +03:00
gpio-winbond.c gpio: winbond: Fix error code in winbond_gpio_get() 2022-06-23 16:29:55 +02:00
gpio-wm831x.c gpio: Propagate firmware node from a parent device 2021-12-17 17:50:46 +01:00
gpio-wm8350.c gpio: wm8350: Remove unused header(s) 2022-10-24 12:29:41 +03:00
gpio-wm8994.c gpio: wm8994: remove platform_set_drvdata() + cleanup probe 2021-05-25 16:21:14 +02:00
gpio-ws16c48.c gpio updates for v6.1-rc1 2022-10-08 09:46:29 -07:00
gpio-xgene-sb.c gpio: xgene-sb: Drop extra check to call acpi_gpiochip_request_interrupts() 2020-05-18 09:16:31 +02:00
gpio-xgene.c gpio: xgene: simplify probe, return devm_gpiochip_add_data() directly 2021-05-23 20:30:26 +02:00
gpio-xgs-iproc.c gpio: xgs-iproc: Drop if with an always false condition 2022-07-19 09:57:13 +02:00
gpio-xilinx.c gpio: xilinx: Remove duplicate assignment of of_gpio_n_cells 2023-01-30 15:55:30 +01:00
gpio-xlp.c gpio: xlp: Fix build errors from Netlogic XLP removal 2021-12-03 16:00:40 +01:00
gpio-xra1403.c gpio: xra1403: remove unneeded spi_set_drvdata() 2020-11-30 17:36:36 +01:00
gpio-xtensa.c
gpio-zevio.c gpio: zevio: Add missing header 2023-01-30 15:55:31 +01:00
gpio-zynq.c gpio: Bulk conversion to generic_handle_domain_irq() 2021-08-12 11:39:38 +01:00
gpio-zynqmp-modepin.c gpio: modepin: Add driver support for modepin GPIO controller 2021-09-23 10:09:58 +02:00
gpiolib-acpi.c ACPI: x86: Introduce an acpi_quirk_skip_gpio_event_handlers() helper 2023-03-07 14:15:10 +01:00
gpiolib-acpi.h gpio updates for v6.3 2023-02-22 11:01:17 -08:00
gpiolib-cdev.c gpiolib: Introduce gpio_device_get() and gpio_device_put() 2023-01-30 15:55:29 +01:00
gpiolib-cdev.h gpiolib: fix sysfs when cdev is not selected 2020-11-05 15:35:40 +01:00
gpiolib-devres.c gpiolib: of: remove [devm_]gpiod_get_from_of_node() APIs 2023-01-30 15:55:28 +01:00
gpiolib-legacy.c
gpiolib-of.c Core changes: 2023-02-22 11:05:56 -08:00
gpiolib-of.h gpiolib: Get rid of not used of_node member 2023-01-30 15:55:29 +01:00
gpiolib-swnode.c gpiolib: add support for software nodes 2022-11-15 11:21:43 +01:00
gpiolib-swnode.h gpiolib: add support for software nodes 2022-11-15 11:21:43 +01:00
gpiolib-sysfs.c gpiolib: Embed iterator variable into for_each_gpio_desc_with_flag() 2022-04-09 22:37:48 +02:00
gpiolib-sysfs.h gpiolib: Clean up headers 2022-10-24 12:30:26 +03:00
gpiolib.c Driver core changes for 6.3-rc1 2023-02-24 12:58:55 -08:00
gpiolib.h gpiolib: Introduce gpio_device_get() and gpio_device_put() 2023-01-30 15:55:29 +01:00
Kconfig gpio updates for v6.3 2023-02-22 11:01:17 -08:00
Makefile mfd: remove ucb1400 support 2023-02-01 17:23:38 +01:00
TODO gpiolib: Remove unused of_mm_gpiochip_add() 2023-01-30 15:55:29 +01:00