linux/drivers/gpio
Hans de Goede 61f7f7c8f9 gpiolib: acpi: Add gpiolib_acpi_run_edge_events_on_boot option and blacklist
Another day; another DSDT bug we need to workaround...

Since commit ca876c7483 ("gpiolib-acpi: make sure we trigger edge events
at least once on boot") we call _AEI edge handlers at boot.

In some rare cases this causes problems. One example of this is the Minix
Neo Z83-4 mini PC, this device has a clear DSDT bug where it has some copy
and pasted code for dealing with Micro USB-B connector host/device role
switching, while the mini PC does not even have a micro-USB connector.
This code, which should not be there, messes with the DDC data pin from
the HDMI connector (switching it to GPIO mode) breaking HDMI support.

To avoid problems like this, this commit adds a new
gpiolib_acpi.run_edge_events_on_boot kernel commandline option, which
allows disabling the running of _AEI edge event handlers at boot.

The default value is -1/auto which uses a DMI based blacklist, the initial
version of this blacklist contains the Neo Z83-4 fixing the HDMI breakage.

Cc: stable@vger.kernel.org
Cc: Daniel Drake <drake@endlessm.com>
Cc: Ian W MORRISON <ianwmorrison@gmail.com>
Reported-by: Ian W MORRISON <ianwmorrison@gmail.com>
Suggested-by: Ian W MORRISON <ianwmorrison@gmail.com>
Fixes: ca876c7483 ("gpiolib-acpi: make sure we trigger edge events at least once on boot")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20190827202835.213456-1-hdegoede@redhat.com
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Ian W MORRISON <ianwmorrison@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2019-09-11 10:46:54 +01:00
..
gpio-74x164.c gpio: 74x164: Convert to use SPDX identifier 2019-03-26 18:38:07 +01:00
gpio-74xx-mmio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-104-dio-48e.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
gpio-104-idi-48.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
gpio-104-idio-16.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
gpio-adnp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-adp5520.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149 2019-05-30 11:25:18 -07:00
gpio-adp5588.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 149 2019-05-30 11:25:18 -07:00
gpio-altera-a10sr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
gpio-altera.c gpio: altera: Pass irqchip when adding gpiochip 2019-07-03 10:24:12 +02:00
gpio-amd8111.c
gpio-amd-fch.c drivers: gpio: amd-fch: make resource struct const 2019-07-03 10:10:32 +02:00
gpio-amdpt.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-arizona.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-aspeed.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-ath79.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-bcm-kona.c drivers: gpio: bcm-kona: use devm_platform_ioremap_resource() 2019-04-05 00:04:25 +07:00
gpio-bd9571mwv.c
gpio-bd70528.c gpio: Initial support for ROHM bd70528 GPIO block 2019-06-27 10:57:24 +01:00
gpio-brcmstb.c gpio: brcmstb: allow 0 width GPIO banks 2018-08-30 11:04:50 +02:00
gpio-bt8xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
gpio-cadence.c drivers: gpio: cadence: use devm_platform_ioremap_resource() 2019-04-05 00:04:26 +07:00
gpio-clps711x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-creg-snps.c GPIO: add single-register GPIO via CREG driver 2018-10-10 09:21:06 +02:00
gpio-crystalcove.c gpio: crystalcove: Convert to use SPDX identifier 2019-02-08 15:55:40 +02:00
gpio-cs5535.c docs: driver-model: move it to the driver-api book 2019-07-15 11:03:02 -03:00
gpio-da9052.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-da9055.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-davinci.c gpio: davinci: silence error prints in case of EPROBE_DEFER 2019-07-15 11:52:34 +02:00
gpio-dln2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 372 2019-06-05 17:37:10 +02:00
gpio-dwapb.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-eic-sprd.c gpio: eic-sprd: Use devm_platform_ioremap_resource() 2019-06-27 15:56:51 +01:00
gpio-em.c gpio: em: remove the gpiochip before removing the irq domain 2019-07-15 11:52:42 +02:00
gpio-ep93xx.c gpio: ep93xx: Use devm_platform_ioremap_resource() 2019-06-27 15:56:51 +01:00
gpio-exar.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-f7188x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-ftgpio010.c gpio: ftgpio: Pass irqchip when adding gpiochip 2019-06-14 10:16:15 +02:00
gpio-ge.c
gpio-gpio-mm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
gpio-grgpio.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-gw-pld.c gpio: Add a Gateworks PLD GPIO driver 2019-02-09 11:33:37 +01:00
gpio-hlwd.c drivers: gpio: hlwd: use devm_platform_ioremap_resource() 2019-04-05 00:04:26 +07:00
gpio-htc-egpio.c gpio: htc-egpio: Remove set but not used variable 'bit' 2018-10-01 12:27:19 +02:00
gpio-ich.c gpio: ich: Convert to use SPDX identifier 2018-12-07 17:34:07 +02:00
gpio-intel-mid.c gpio: intel-mid: Convert to use SPDX identifier 2018-12-07 17:34:07 +02:00
gpio-iop.c Merge branch 'i2c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-07-15 21:10:39 -07:00
gpio-it87.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 300 2019-06-05 17:37:00 +02:00
gpio-ixp4xx.c gpio: ixp4xx: Use irq_domain_translate_twocell() 2019-05-28 10:28:15 +02:00
gpio-janz-ttl.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-kempld.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 294 2019-06-05 17:36:38 +02:00
gpio-ks8695.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
gpio-loongson1.c drivers: gpio: loongon1: use devm_platform_ioremap_resource() 2019-04-05 00:04:26 +07:00
gpio-loongson.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-lp873x.c
gpio-lp3943.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 372 2019-06-05 17:37:10 +02:00
gpio-lp87565.c
gpio-lpc18xx.c drivers: gpio: lpc18xx: use devm_platform_ioremap_resource() 2019-04-05 00:04:26 +07:00
gpio-lpc32xx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
gpio-lynxpoint.c intel-gpio for v4.21-1 2018-12-14 14:27:41 +01:00
gpio-madera.c gpio: madera: Fixup SPDX headers 2019-06-26 09:40:33 +02:00
gpio-max730x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-max732x.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-max3191x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-max7300.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-max7301.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-max77620.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 422 2019-06-05 17:37:15 +02:00
gpio-max77650.c gpio: max77650: Add GPIO support 2019-05-08 12:06:58 +01:00
gpio-mb86s7x.c Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2019-07-08 11:01:13 -07:00
gpio-mc9s08dz60.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
gpio-mc33880.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 176 2019-05-30 11:29:19 -07:00
gpio-menz127.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
gpio-merrifield.c gpio: merrifield: Fix build err without CONFIG_ACPI 2019-04-23 11:30:59 +02:00
gpio-ml-ioh.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 167 2019-05-30 11:26:39 -07:00
gpio-mlxbf.c gpio: mlxbf: remove unused including <linux/version.h> 2019-04-08 08:47:06 +02:00
gpio-mm-lantiq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-mmio.c gpio: mmio: Drop bgpio_dir_inverted 2019-04-08 11:17:43 +02:00
gpio-mockup.c gpio: mockup: add missing single_release() 2019-09-09 09:55:27 +02:00
gpio-mpc8xxx.c
gpio-mpc5200.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
gpio-msic.c gpio: msic: Convert to use SPDX identifier 2019-02-08 15:55:41 +02:00
gpio-mt7621.c drivers: gpio: mt7621: use devm_platform_ioremap_resource() 2019-04-05 00:04:27 +07:00
gpio-mvebu.c gpio: pass lookup and descriptor flags to request_own 2019-06-07 23:20:23 +02:00
gpio-mxc.c drivers: gpio: mxc: use devm_platform_ioremap_resource() 2019-04-05 00:04:27 +07:00
gpio-mxs.c gpio: mxs: read pin level directly instead of using .get 2018-12-21 11:29:57 +01:00
gpio-octeon.c drivers: gpio: octeon: use devm_platform_ioremap_resource() 2019-04-05 00:04:27 +07:00
gpio-omap.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-palmas.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
gpio-pca953x.c gpio: pca953x: use pca953x_read_regs instead of regmap_bulk_read 2019-08-28 12:55:24 +02:00
gpio-pcf857x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
gpio-pch.c PCI: Move Rohm Vendor ID to generic list 2019-02-01 17:24:52 -06:00
gpio-pci-idio-16.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
gpio-pcie-idio-24.c gpio: pcie-idio-24: Mask read inputs for get_multiple 2018-11-05 08:54:42 +01:00
gpio-pisosr.c gpio-pisosr: add support for get_multiple 2018-07-29 21:55:33 +02:00
gpio-pl061.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-pmic-eic-sprd.c gpio: sprd: Change to use SoC compatible string 2019-02-21 13:18:49 +01:00
gpio-pxa.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-raspberrypi-exp.c gpio: raspberrypi-exp: decrease refcount on firmware dt node 2018-12-17 15:28:30 +01:00
gpio-rc5t583.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
gpio-rcar.c gpio: rcar: Pedantic formatting 2019-06-27 15:56:50 +01:00
gpio-rdc321x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
gpio-reg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 233 2019-06-19 17:09:06 +02:00
gpio-sa1100.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-sama5d2-piobu.c gpio: sama5d2-piobu: Set proper output level for direction_output 2019-01-11 10:34:37 +01:00
gpio-sch311x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-sch.c gpio: sch: Remove write-only core_base 2019-04-23 13:08:33 +02:00
gpio-siox.c gpio: siox: Use devm_ managed gpiochip 2019-07-03 10:24:02 +02:00
gpio-sodaville.c gpio: sodaville: Convert to use SPDX identifier 2018-12-07 17:34:08 +02:00
gpio-spear-spics.c drivers: gpio: spear-spics: use devm_platform_ioremap_resource() 2019-04-05 00:04:27 +07:00
gpio-sprd.c drivers: gpio: sprd: use devm_platform_ioremap_resource() 2019-04-05 00:04:26 +07:00
gpio-sta2x11.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
gpio-stmpe.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 464 2019-06-19 17:09:10 +02:00
gpio-stp-xway.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-syscon.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpio-tb10x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
gpio-tc3589x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 464 2019-06-19 17:09:10 +02:00
gpio-tegra186.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 233 2019-06-19 17:09:06 +02:00
gpio-tegra.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-thunderx.c gpio: thunderx: Use the default parent apis for {request,release}_resources 2019-05-01 10:41:38 +01:00
gpio-timberdale.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 176 2019-05-30 11:29:19 -07:00
gpio-tpic2810.c
gpio-tps6586x.c gpio: tps65xxx: Use SPDX license tag 2018-09-04 08:22:47 +02:00
gpio-tps65086.c gpio: tps65xxx: Use SPDX license tag 2018-09-04 08:22:47 +02:00
gpio-tps65218.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 111 2019-05-24 17:39:01 +02:00
gpio-tps65910.c gpio: tps65xxx: Use SPDX license tag 2018-09-04 08:22:47 +02:00
gpio-tps65912.c gpio: tps65xxx: Use SPDX license tag 2018-09-04 08:22:47 +02:00
gpio-tps68470.c
gpio-tqmx86.c gpio: tqmx86: Set proper output level for direction_output 2019-02-21 13:19:52 +01:00
gpio-ts4800.c drivers: gpio: ts4800: use devm_platform_ioremap_resource() 2019-04-05 00:04:28 +07:00
gpio-ts4900.c
gpio-ts5500.c gpio: ts5500: Delete platform data handling 2018-09-04 08:22:47 +02:00
gpio-twl4030.c gpio: twl4030: Implement .get_direction() 2018-09-10 08:48:51 +02:00
gpio-twl6040.c gpio: twl6040: Implement .get_direction() 2018-09-10 08:49:22 +02:00
gpio-ucb1400.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-uniphier.c drivers: gpio: uniphier: use devm_platform_ioremap_resource() 2019-04-05 00:04:28 +07:00
gpio-vf610.c gpio: vf610: Use PTR_ERR_OR_ZERO() in vf610_gpio_probe() 2019-05-28 10:28:14 +02:00
gpio-viperboard.c gpio: viperboard: Cut down on boilerplate 2018-09-17 10:55:24 -07:00
gpio-vr41xx.c gpio: vr41xx: Use devm_platform_ioremap_resource() 2019-06-27 15:56:51 +01:00
gpio-vx855.c gpio: vx855: Cut down on boilerplate 2018-09-17 10:55:24 -07:00
gpio-wcove.c gpio: wcove: Convert to use SPDX identifier 2019-02-08 15:55:41 +02:00
gpio-winbond.c
gpio-wm831x.c gpio: wm8xxx: Cut down on boilerplate 2018-09-17 10:55:24 -07:00
gpio-wm8350.c gpio: wm8xxx: Cut down on boilerplate 2018-09-17 10:55:24 -07:00
gpio-wm8994.c gpio: wm8xxx: Cut down on boilerplate 2018-09-17 10:55:24 -07:00
gpio-ws16c48.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
gpio-xgene-sb.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13 2019-05-21 11:28:45 +02:00
gpio-xgene.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
gpio-xilinx.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-xlp.c drivers: gpio: xlp: devm_platform_ioremap_resource() 2019-04-05 00:04:28 +07:00
gpio-xra1403.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
gpio-xtensa.c gpio: xtensa: Cut down on boilerplate 2018-09-17 10:55:24 -07:00
gpio-zevio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-zx.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-zynq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
gpiolib-acpi.c gpiolib: acpi: Add gpiolib_acpi_run_edge_events_on_boot option and blacklist 2019-09-11 10:46:54 +01:00
gpiolib-devprop.c gpiolib: devprop: Fix syntax error 2019-04-08 11:20:12 +02:00
gpiolib-devres.c gpio: Add devm_gpiod_unhinge() 2018-12-11 01:04:23 +00:00
gpiolib-legacy.c gpio: Use SPDX header for core library 2018-09-25 09:08:48 +02:00
gpiolib-of.c gpiolib: of: fix fallback quirks handling 2019-09-10 11:31:35 +01:00
gpiolib-sysfs.c gpio: Use SPDX header for core library 2018-09-25 09:08:48 +02:00
gpiolib.c gpio: fix line flag validation in lineevent_create 2019-09-09 10:04:53 +02:00
gpiolib.h gpiolib: Use spinlock_t instead of struct spinlock 2019-07-06 20:14:22 +02:00
Kconfig docs conversion for v5.3-rc1 2019-07-16 12:21:41 -07:00
Makefile - Core Frameworks 2019-07-15 20:18:40 -07:00
TODO gpio: Add GPIOLIB_IRQCHIP cleanup to TODO 2019-06-14 10:16:15 +02:00