linux-stable/drivers/pinctrl
Phil Elwell 75278f1aff pinctrl: bcm2835: Change init order for gpio hogs
commit 266423e60e upstream

...and gpio-ranges

pinctrl-bcm2835 is a combined pinctrl/gpio driver. Currently the gpio
side is registered first, but this breaks gpio hogs (which are
configured during gpiochip_add_data). Part of the hog initialisation
is a call to pinctrl_gpio_request, and since the pinctrl driver hasn't
yet been registered this results in an -EPROBE_DEFER from which it can
never recover.

Change the initialisation sequence to register the pinctrl driver
first.

This also solves a similar problem with the gpio-ranges property, which
is required in order for released pins to be returned to inputs.

Fixes: 73345a18d4 ("pinctrl: bcm2835: Pass irqchip when adding gpiochip")
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/20211206092237.4105895-2-phil@raspberrypi.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-01-29 10:25:10 +01:00
..
actions
aspeed pinctrl: aspeed: g6: Fix PWMG0 pinctrl setting 2021-01-27 11:47:47 +01:00
bcm pinctrl: bcm2835: Change init order for gpio hogs 2022-01-29 10:25:10 +01:00
berlin
cirrus
freescale pinctrl: freescale: imx: Fix an error handling path in 'imx_pinctrl_probe()' 2020-06-24 17:50:38 +02:00
intel pinctrl: lewisburg: Update number of pins in community 2021-04-28 13:19:14 +02:00
mediatek pinctrl: mediatek: fix global-out-of-bounds issue 2021-12-29 12:23:37 +01:00
meson
mvebu pinctrl: armada-37xx: Correct PWM pins definitions 2021-12-01 09:23:31 +01:00
nomadik
nuvoton
pxa
qcom pinctrl: qcom: spmi-gpio: fix warning about irq chip reusage 2020-06-30 15:37:04 -04:00
samsung pinctrl: samsung: Fix pinctrl bank pin count 2021-09-22 12:26:23 +02:00
sh-pfc pinctrl: renesas: r8a77990: JTAG pins do not have pull-down capabilities 2021-07-14 16:53:26 +02:00
sirf
spear
sprd
stm32 pinctrl: stm32: consider the GPIO offset to expose all the GPIO lines 2021-12-29 12:23:36 +01:00
sunxi pinctrl: sunxi: Always call chained_irq_{enter, exit} in sunxi_pinctrl_irq_handler 2020-12-30 11:51:45 +01:00
tegra pinctrl: tegra: Use noirq suspend/resume callbacks 2020-06-30 15:37:04 -04:00
ti
uniphier
vt8500
zte
core.c pinctrl: core: fix possible memory leak in pinctrl_enable() 2021-11-17 09:48:26 +01:00
core.h
devicetree.c
devicetree.h
Kconfig
Makefile
pinconf-generic.c
pinconf.c
pinconf.h
pinctrl-amd.c pinctrl/amd: Add device HID for new AMD GPIO controller 2021-07-19 08:53:14 +02:00
pinctrl-amd.h pinctrl: amd: fix npins for uart0 in kerncz_groups 2020-07-29 10:18:26 +02:00
pinctrl-artpec6.c
pinctrl-as3722.c
pinctrl-at91-pio4.c
pinctrl-at91.c
pinctrl-at91.h
pinctrl-axp209.c
pinctrl-bm1880.c
pinctrl-coh901.c
pinctrl-coh901.h
pinctrl-da850-pupd.c
pinctrl-digicolor.c
pinctrl-falcon.c pinctrl: falcon: add missing put_device() call in pinctrl_falcon_probe() 2020-12-30 11:51:18 +01:00
pinctrl-gemini.c
pinctrl-ingenic.c pinctrl: ingenic: Fix incorrect pull up/down info 2021-09-22 12:26:20 +02:00
pinctrl-lantiq.c
pinctrl-lantiq.h
pinctrl-lpc18xx.c
pinctrl-max77620.c
pinctrl-mcp23s08.c pinctrl: mcp23s08: Fix missing unlock on error in mcp23s08_irq() 2021-07-19 08:53:18 +02:00
pinctrl-ocelot.c pinctrl: ocelot: Fix GPIO interrupt decoding on Jaguar2 2020-06-24 17:50:14 +02:00
pinctrl-oxnas.c
pinctrl-palmas.c
pinctrl-pic32.c
pinctrl-pic32.h
pinctrl-pistachio.c
pinctrl-rk805.c
pinctrl-rockchip.c pinctrl: rockchip: fix restore error in resume 2021-04-07 14:47:43 +02:00
pinctrl-rza1.c pinctrl: rza1: Fix wrong array assignment of rza1l_swio_entries 2020-06-24 17:50:21 +02:00
pinctrl-rza2.c
pinctrl-rzn1.c
pinctrl-single.c pinctrl: single: Fix error return code in pcs_parse_bits_in_pinctrl_entry() 2021-09-22 12:26:24 +02:00
pinctrl-st.c
pinctrl-stmfx.c pinctrl: stmfx: Fix hazardous u8[] to unsigned long cast 2021-09-22 12:26:20 +02:00
pinctrl-sx150x.c
pinctrl-tb10x.c
pinctrl-u300.c
pinctrl-utils.c
pinctrl-utils.h
pinctrl-xway.c
pinctrl-zynq.c
pinmux.c
pinmux.h