linux/drivers/gpio
Alexandre Courbot 0e9a5edf5d gpio: fix deferred probe detection for legacy API
Commit 14e85c0e69 ("gpio: remove gpio_descs global array") changed
gpio_to_desc()'s behavior to return NULL not only for GPIOs numbers
not in the valid range, but also for all GPIOs whose controller has not
been probed yet. Although this behavior is more correct (nothing hints
that these GPIO numbers will be populated later), this affects
gpio_request() and gpio_request_one() which call gpiod_request() with a
NULL descriptor, causing it to return -EINVAL instead of the expected
-EPROBE_DEFER for a non-probed GPIO.

gpiod_request() is only called with a descriptor obtained from
gpio_to_desc() from these two functions, so address the issue there.

Other ways to obtain GPIOs rely on well-defined mappings and can thus
return -EPROBE_DEFER only for relevant GPIOs, and are thus not affected
by this issue.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Alexandre Courbot <acourbot@nvidia.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2014-12-02 15:46:36 +01:00
..
devres.c gpiolib: devres: use correct structure type name in sizeof 2014-08-17 09:12:35 -05: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: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-adp5588.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-amd8111.c gpio: amd8111: unmap ioport on failure case 2014-10-27 16:26:35 +01:00
gpio-arizona.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-bcm-kona.c gpio: rename gpio_lock_as_irq to gpiochip_lock_as_irq 2014-10-28 17:30:59 +01:00
gpio-bt8xx.c gpio: bt8xx: fix release of managed resources 2014-08-29 14:31:43 +02:00
gpio-clps711x.c Linux 3.14-rc6 2014-03-14 10:26:45 +01:00
gpio-crystalcove.c gpio: crystalcove: support virtual GPIO 2014-09-25 15:15:30 +02:00
gpio-cs5535.c gpio: cs5535: Switch to using managed resources with devm_ 2014-10-21 10:51:11 +02:00
gpio-da9052.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-da9055.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-davinci.c gpio: gpio-davinci: remove duplicate check on resource 2014-10-31 09:02:34 +01:00
gpio-dwapb.c gpio: rename gpio_lock_as_irq to gpiochip_lock_as_irq 2014-10-28 17:30:59 +01:00
gpio-em.c gpio: em: Use dynamic allocation of GPIOs 2014-11-28 11:28:10 +01:00
gpio-ep93xx.c gpio: ep93xx: Use devm_ioremap_resource() 2014-05-27 16:00:58 +02:00
gpio-f7188x.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-ge.c gpio: ge: Convert to platform driver 2014-04-28 12:35:09 -07:00
gpio-generic.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-grgpio.c gpio: grgpio: remove irq_domain resources on failure 2014-10-28 16:11:19 +01:00
gpio-ich.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +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: iop: fix devm_ioremap_resource() return value checking 2014-03-26 10:31:34 +01: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: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-kempld.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-ks8695.c gpio: ks8695: fix 'else should follow close brace '}'' 2014-10-02 16:07:00 +02:00
gpio-lp3943.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-lpc32xx.c gpio: lpc32xx: Make of_device_id array const 2014-06-19 09:31:16 +02:00
gpio-lynxpoint.c gpio-lynxpoint: enable input sensing in resume 2014-08-21 07:44:57 -05: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: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-max7300.c gpio: max7300: use devm_kzalloc() 2013-03-27 16:05:11 +01: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-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: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-mcp23s08.c gpio: mcp23s08: Add simple IRQ support for SPI devices 2014-11-27 15:01:20 +01: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: MIPS: lantiq: convert gpio-mm-lantiq to OF and of_mm_gpio 2012-05-21 14:31:53 +01:00
gpio-moxart.c gpio: moxart: remove unnecessary OOM messages 2014-05-09 10:54:56 +02:00
gpio-mpc8xxx.c gpio-mpc8xxx: add mpc8xxx_gpio_set_multiple function 2014-11-27 15:01:18 +01:00
gpio-mpc5200.c gpio: remove use of __devinit 2012-11-28 11:39:33 -08:00
gpio-msic.c gpio/pinctrl: make gpio_chip members typed boolean 2013-12-04 14:42:46 +01:00
gpio-msm-v1.c gpio: msm-v1: Fix typo in function argument 2014-10-30 15:59:51 +01:00
gpio-msm-v2.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-mvebu.c gpio: mvebu: add suspend/resume support 2014-11-03 14:28:03 +01:00
gpio-mxc.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-mxs.c gpio: mxs: implement get_direction callback 2014-11-28 11:28:22 +01:00
gpio-octeon.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-omap.c gpio: rename gpio_lock_as_irq to gpiochip_lock_as_irq 2014-10-28 17:30:59 +01: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: pca953x: Drop deprecated DT bindings 2014-08-28 14:19:40 +02:00
gpio-pcf857x.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +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: use BIT() macro instead of shifting bits 2014-05-03 12:16:24 -07:00
gpio-pxa.c gpio-pxa: gpio0 and gpio1 support on dt 2014-07-07 12:54:28 +02:00
gpio-rc5t583.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-rcar.c gpio: rcar: Add r8a7793 and r8a7794 support 2014-11-27 15:01:19 +01: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: 7841/1: sa1100: remove complex GPIO interface 2013-10-29 11:01:02 +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 gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +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 gpio: SPEAr: remove unnecessary OOM messages 2014-05-09 10:55:19 +02:00
gpio-sta2x11.c gpio/pinctrl: make gpio_chip members typed boolean 2013-12-04 14:42:46 +01:00
gpio-stmpe.c gpio: stmpe: add verbose debug code 2014-10-02 16:06:59 +02:00
gpio-stp-xway.c gpio: gpio-stp-xway: remove duplicate check on resource 2014-10-28 17:06:40 +01:00
gpio-sx150x.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-syscon.c gpio: syscon: reuse for keystone 2 socs 2014-09-16 14:42:16 -07:00
gpio-tb10x.c gpio: gpio-tb10x: remove duplicate check on resource 2014-10-28 17:07:32 +01:00
gpio-tc3589x.c gpio: handle also nested irqchips in the chained handler set-up 2014-09-26 14:39:08 +02:00
gpio-tegra.c gpio: rename gpio_lock_as_irq to gpiochip_lock_as_irq 2014-10-28 17:30:59 +01:00
gpio-timberdale.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +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: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-ts5500.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-twl4030.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-twl6040.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02:00
gpio-tz1090-pdc.c gpio-tz1090-pdc: add TZ1090 PDC gpio driver 2013-07-20 19:03:48 +02:00
gpio-tz1090.c gpio-tz1090: Replace commas with semi-colons 2014-03-07 11:57:00 +08: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: add gpiolib/IRQ chip driver for Vybrid 2014-10-24 14:18:05 +02: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 gpio: rename gpio_lock_as_irq to gpiochip_lock_as_irq 2014-10-28 17:30:59 +01:00
gpio-vx855.c gpio: remove all usage of gpio_remove retval in driver/gpio 2014-07-22 16:39:26 +02: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.c gpio: xgene: Remove unneeded #ifdef CONFIG_OF guard 2014-09-24 11:03:01 +02:00
gpio-xilinx.c gpio: Fix ngpio in gpio-xilinx driver 2014-09-24 13:37:38 +02:00
gpio-xtensa.c gpio: xtensa: fix build when XCHAL_HAVE_CP is 0 2014-02-03 09:11:45 +01:00
gpio-zevio.c gpio: zevio: Make of_device_id array const 2014-05-09 11:04:08 +02:00
gpio-zynq.c gpio: remove remaining users of gpiochip_remove() retval 2014-09-23 17:51:17 +02:00
gpiolib-acpi.c gpio: rename gpio_lock_as_irq to gpiochip_lock_as_irq 2014-10-28 17:30:59 +01:00
gpiolib-legacy.c gpio: fix deferred probe detection for legacy API 2014-12-02 15:46:36 +01:00
gpiolib-of.c gpio: delete unneeded test before of_node_put 2014-08-17 09:12:35 -05:00
gpiolib-sysfs.c gpio: remove const modifier from gpiod_get_direction() 2014-11-28 14:43:36 +01:00
gpiolib.c gpio: fix deferred probe detection for legacy API 2014-12-02 15:46:36 +01:00
gpiolib.h gpio / ACPI: Move event handling registration to gpiolib irqchip helpers 2014-07-28 12:23:57 +02:00
Kconfig gpio: dwapb: fix compile errors 2014-10-27 18:19:03 +01:00
Makefile gpio: vf610: add gpiolib/IRQ chip driver for Vybrid 2014-10-24 14:18:05 +02:00