linux/drivers/gpio
Mika Westerberg f35bbf61ab gpio / ACPI: Return -EPROBE_DEFER if the gpiochip was not found
If a driver requests a GPIO described in its _CRS but the GPIO host
controller (gpiochip) driver providing the GPIO has not been loaded yet
acpi_get_gpiod() returns -ENODEV which causes the calling driver to fail.

If the gpiochip driver is loaded afterwards the driver requesting the GPIO
will not notice this.

Better approach is to return -EPROBE_DEFER in such case. Then when the
gpiochip driver appears the driver requesting the GPIO will be probed
again. This also aligns ACPI GPIO lookup code closer to DT as it does
pretty much the same when no gpiochip driver was found.

Reported-by: Tobias Diedrich <tobiasdiedrich@gmail.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Tobias Diedrich <ranma+kernel@tdiedrich.de>
Reviewed-by: Amos Kong <kongjianjun@gmail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2015-06-11 10:17:32 +02:00
..
devres.c gpio: fix constconst in devres 2015-03-17 17:45:59 +01:00
gpio-74x164.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-74xx-mmio.c GPIO: Add driver for 74xx-ICs with MMIO access 2014-10-21 10:48:04 +02:00
gpio-adnp.c gpio: adnp: switch to use irqchip helpers 2014-09-02 10:44:01 +02:00
gpio-adp5520.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-adp5588.c gpio: removing kfree remove functionality 2015-04-08 16:54:01 +02:00
gpio-altera.c altera_gpio_probe() can be static 2015-03-27 09:28:40 +01:00
gpio-amd8111.c gpio-amd8111: add release_region on ioport_map failure 2015-01-19 09:48:45 +01:00
gpio-arizona.c This is the bulk of GPIO changes for the v4.1 development 2015-04-18 08:22:10 -04:00
gpio-bcm-kona.c gpio: bcm-kona: Implement get_direction callback 2015-04-27 15:30:00 +02:00
gpio-brcmstb.c gpio: Add GPIO support for Broadcom STB SoCs 2015-06-02 15:36:22 +02:00
gpio-bt8xx.c gpio: bt8xx: fix release of managed resources 2014-08-29 14:31:43 +02:00
gpio-clps711x.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-crystalcove.c gpio: crystalcove: set IRQCHIP_SKIP_SET_WAKE for the irqchip 2015-06-02 11:22:07 +02:00
gpio-cs5535.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
gpio-da9052.c gpio: use (!foo) instead of (foo == NULL) 2015-04-08 09:54:21 +02:00
gpio-da9055.c gpio: use (!foo) instead of (foo == NULL) 2015-04-08 09:54:21 +02:00
gpio-davinci.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
gpio-dln2.c gpio: dln2: fix build breakage 2015-05-13 10:02:12 +02:00
gpio-dwapb.c gpio: dwapb: Convert to use resource managed APIs 2015-01-15 17:23:21 +01:00
gpio-em.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
gpio-ep93xx.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-etraxfs.c gpio: add ETRAXFS GPIO driver 2015-06-10 09:11:10 +02:00
gpio-f7188x.c gpio: f7188x: add GPIO support for F71869A 2015-03-17 17:57:37 +01:00
gpio-ge.c gpio: ge: Convert to use devm_kstrdup 2015-01-29 10:33:15 +01:00
gpio-generic.c gpio: gpio-generic: add flag to read out output value from reg_set 2015-05-11 11:49:02 +02:00
gpio-grgpio.c Linux 3.19-rc5 2015-01-20 11:03:07 +01:00
gpio-ich.c gpio: ich: Implement get_direction function 2015-04-08 09:54:27 +02:00
gpio-intel-mid.c gpio: intel-mid: switch to using gpiolib irqchip helpers 2014-06-19 09:31:16 +02:00
gpio-iop.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-it8761e.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-janz-ttl.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-kempld.c gpio: use (!foo) instead of (foo == NULL) 2015-04-08 09:54:21 +02:00
gpio-ks8695.c gpio: ks8695: fix 'else should follow close brace '}'' 2014-10-02 16:07:00 +02:00
gpio-loongson.c gpio: loongson: Add Loongson-3A/3B GPIO driver support 2015-04-08 09:53:42 +02:00
gpio-lp3943.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-lpc18xx.c gpio: add lpc18xx gpio driver 2015-05-05 17:50:07 +02:00
gpio-lpc32xx.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-lynxpoint.c Drivers: gpio: Fix spelling errors 2015-05-19 16:52:30 +02:00
gpio-max730x.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-max732x.c gpio: max732x: Fix irq-events handler 2015-05-06 15:08:54 +02:00
gpio-max7300.c gpio: max7300: remove 'ret' variable 2015-04-08 09:54:10 +02:00
gpio-max7301.c gpio: max7301: Reverting "Do not force SPI speed when using OF Platform" 2013-08-23 19:44:28 +02:00
gpio-mb86s7x.c gpio: mb86s70: Return error if requesting an already assigned gpio 2015-03-02 15:35:41 +01:00
gpio-mc9s08dz60.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-mc33880.c gpio: use (!foo) instead of (foo == NULL) 2015-04-08 09:54:21 +02:00
gpio-mcp23s08.c gpio: removing kfree remove functionality 2015-04-08 16:54:01 +02:00
gpio-ml-ioh.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-mm-lantiq.c gpio: gpio-mm-lantiq: Use of_mm_gpiochip_remove 2015-01-20 11:18:51 +01:00
gpio-moxart.c gpio: moxart: get value of output gpio from generic driver 2015-05-11 11:51:29 +02:00
gpio-mpc8xxx.c gpio: mpc8xxx: remove __initdata annotation for mpc8xxx_gpio_ids[] 2015-03-05 10:51:35 +01:00
gpio-mpc5200.c gpio: mpc5200: Use of_mm_gpiochip_remove 2015-01-20 11:18:28 +01:00
gpio-msic.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-msm-v2.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-mvebu.c gpio: mvebu: Fix mask/unmask managment per irq chip type 2015-04-08 16:35:07 +02:00
gpio-mxc.c gpio: Constify platform_device_id 2015-05-12 09:41:28 +02:00
gpio-mxs.c gpio: Constify platform_device_id 2015-05-12 09:41:28 +02:00
gpio-octeon.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-omap.c gpio: omap: rework omap_gpio_irq_startup to handle current pin state properly 2015-06-01 16:53:54 +02:00
gpio-palmas.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-pca953x.c gpio: Prevent an integer overflow in the pca953x driver 2015-06-01 16:53:55 +02:00
gpio-pcf857x.c gpio: pcf857x: Check for irq_set_irq_wake() failures 2015-06-01 16:55:25 +02:00
gpio-pch.c gpio: pch: Build context save/restore only for PM 2014-10-02 16:07:00 +02:00
gpio-pl061.c gpio: pl061: hook request if gpio-ranges avaiable 2014-12-03 14:44:23 +01:00
gpio-pxa.c gpio: pxa: simplify BANK_OFF macro offset calculation 2015-03-09 14:41:12 +01:00
gpio-rc5t583.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-rcar.c gpio: rcar: Check for irq_set_irq_wake() failures 2015-06-01 15:10:09 +02:00
gpio-rdc321x.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-sa1100.c ARM: 8281/1: sa1100: move GPIO-related IRQ code to gpio driver 2015-01-29 15:24:49 +00:00
gpio-samsung.c gpio: samsung: Remove remaining check for CONFIG_S5P_GPIO_DRVSTR 2014-09-23 17:51:39 +02:00
gpio-sch311x.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-sch.c Revert "gpio: sch: use uapi/linux/pci_ids.h directly" 2015-04-10 11:35:45 +02:00
gpio-sodaville.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-spear-spics.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
gpio-sta2x11.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-stmpe.c gpio: stmpe: enforce device tree only mode 2015-01-20 11:03:22 +01:00
gpio-stp-xway.c gpio: stp-xway: Use the of_property_read_u32 helper 2015-06-02 11:22:02 +02:00
gpio-sx150x.c gpio: sx150x: fixup OF support 2015-01-22 09:45:24 +01:00
gpio-syscon.c gpio: syscon: reduce message level when direction reg offset not in dt 2015-03-27 11:17:08 +01:00
gpio-tb10x.c gpio: tb10x: Drop unneeded free_irq() call 2015-06-02 11:25:42 +02:00
gpio-tc3589x.c mfd: tc3589x: Enforce device-tree only mode 2015-03-26 14:20:17 +00:00
gpio-tegra.c Drivers: gpio: Fix spelling errors 2015-05-19 16:52:30 +02:00
gpio-timberdale.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-tps6586x.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-tps65910.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-tps65912.c gpio: tps65912: fix wrong container_of arguments 2015-02-23 15:40:32 +01:00
gpio-ts5500.c gpio: Constify platform_device_id 2015-05-12 09:41:28 +02:00
gpio-twl4030.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-twl6040.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-tz1090-pdc.c gpio: tz1090-pdc: Use resource_size to fix off-by-one resource size calculation 2015-01-29 10:34:13 +01:00
gpio-tz1090.c gpio: tz1090: Use resource_size to fix off-by-one 2015-01-15 17:23:21 +01:00
gpio-ucb1400.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-vf610.c gpio: vf610: Replaces comma between expression statements by semicolon 2015-03-06 11:17:36 +01:00
gpio-viperboard.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-vr41xx.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
gpio-vx855.c gpio: vx855: Switch to use managed resources APIs 2015-01-15 17:23:18 +01:00
gpio-wm831x.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-wm8350.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-wm8994.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-xgene-sb.c gpio: xgene: add ACPI support for APM X-Gene GPIO standby driver 2015-06-02 14:52:00 +02:00
gpio-xgene.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-xilinx.c gpio: xilinx: Fix kernel-doc warnings 2015-05-12 09:56:26 +02:00
gpio-xlp.c gpio: xlp: Add missing .owner and .label settings for gpio_chip 2015-05-12 13:23:24 +02:00
gpio-xtensa.c gpio: drop owner assignment from platform_drivers 2014-10-20 16:20:31 +02:00
gpio-zevio.c gpio: zevio: Use of_mm_gpiochip_remove 2015-01-20 11:18:56 +01:00
gpio-zynq.c gpio: Added support to Zynq Ultrascale+ MPSoC 2015-06-10 09:44:17 +02:00
gpiolib-acpi.c gpio / ACPI: Return -EPROBE_DEFER if the gpiochip was not found 2015-06-11 10:17:32 +02:00
gpiolib-legacy.c gpio: fix deferred probe detection for legacy API 2014-12-02 15:46:36 +01:00
gpiolib-of.c Drivers: gpio: Fix spelling errors 2015-05-19 16:52:30 +02:00
gpiolib-sysfs.c gpio: sysfs: move irq trigger flags to class-device data 2015-05-12 10:47:57 +02:00
gpiolib.c gpio: improve error reporting on own descriptors 2015-06-10 10:15:46 +02:00
gpiolib.h gpio: sysfs: move irq trigger flags to class-device data 2015-05-12 10:47:57 +02:00
Kconfig gpio: Added support to Zynq Ultrascale+ MPSoC 2015-06-10 09:44:17 +02:00
Makefile gpio: add ETRAXFS GPIO driver 2015-06-10 09:11:10 +02:00