Thread (27 messages) 27 messages, 7 authors, 2022-01-04

Re: [PATCH v2 1/2] pinctrl: bcm2835: Change init order for gpio hogs

From: Florian Fainelli <f.fainelli@gmail.com>
Date: 2021-12-29 21:11:12
Also in: linux-gpio


On 12/29/2021 11:07 AM, Stefan Wahren wrote:
Am 10.12.21 um 00:24 schrieb Linus Walleij:
quoted
On Mon, Dec 6, 2021 at 10:22 AM Phil Elwell [off-list ref] wrote:
quoted
...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: 73345a18d464b ("pinctrl: bcm2835: Pass irqchip when adding gpiochip")
Signed-off-by: Phil Elwell <redacted>
This patch (1/2) applied for fixes.
Unfortunately this change breaks all GPIO LEDs at least on the Raspberry
Pi 3 Plus (Linux 5.16-rc7, multi_v7_defconfig). The ACT LED for instance
stays in the last state instead of the configured heartbeat behavior.
Also there are no GPIO LEDs in /sys/class/leds/ directory.

After reverting this change everything is back to normal.
And this patch has already been applied to the stable 5.15 and 5.10 
branches as well, FWIW.
-- 
Florian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help