[PATCH 0/4] dm: gpio: read GPIOs in of_to_plat(), request them in probe()
Mehmet Fide <[email protected]>
| Newsgroups | org.u-boot-project.lists.u-boot |
|---|---|
| Message-ID | <[email protected]> |
From: Mehmet Fide <[email protected]> This is the rework Simon asked for on "dm: core: read the device tree into plat data after pinctrl" [1], which is withdrawn: moving the of_to_plat() call around was the wrong fix, the real offender is claiming GPIOs while platform data is being read. The regulator drivers request their GPIOs from of_to_plat(), which probes the GPIO controller and claims the pin before the consumer's pinctrl state is applied. On SoCs where the pin direction lives in the pad register - the output buffer enable on Vybrid is one - the pinctrl then undoes the direction the early claim just set, and the USB VBUS regulator of a Colibri VF50 powers nothing. Patch 1 adds the missing tool: gpio_parse_by_name() reads a GPIO out of the devicetree without touching any device, and gpio_request_parsed() claims it later, from probe(). Patch 2 moves the regulator drivers to the pair. Patch 3 writes the rule down in the driver model docs, and patch 4 adds the sandbox test: a fixed regulator with an enable GPIO, checking that after of_to_plat() the GPIO is still unclaimed and only probe() requests it. Tested on sandbox: the two new tests plus the full gpio and regulator suites pass, and a full "ut dm" run shows no new failure against origin/master. Tested on hardware: this series with the reworked ehci-vf patches on top, flashed to a Colibri VF50 (plus a cherry-pick of the TEXT_BASE restore from u-boot-imx/next, which master does not carry yet). The VBUS pad at 0x4004814c reads 0x00000060 before "usb start" and 0x000022ef after - the pinctrl no longer undoes the claim - and a USB stick enumerates as a mass storage device on the previously dead port. The board still boots its NAND rootfs. The Colibri VF50 fix itself, "usb: ehci-vf: enable the vbus supply of the port", will be rebased on top of this series. [1] https://lore.kernel.org/all/[email protected]/ Mehmet Fide (4): gpio: add a way to parse a GPIO now and request it later regulator: claim the enable GPIO at probe time, not in of_to_plat() doc: driver-model: state that of_to_plat() must not probe or claim test: dm: check the fixed regulator claims its GPIO at probe time arch/sandbox/dts/test.dts | 9 ++++ doc/develop/driver-model/design.rst | 9 ++++ drivers/gpio/gpio-uclass.c | 33 ++++++++++++++ drivers/power/regulator/fixed.c | 11 +++++ drivers/power/regulator/gpio-regulator.c | 21 +++++++-- drivers/power/regulator/regulator_common.c | 25 +++++++++-- drivers/power/regulator/regulator_common.h | 3 ++ include/asm-generic/gpio.h | 51 ++++++++++++++++++++++ test/dm/gpio.c | 29 ++++++++++++ test/dm/regulator.c | 29 ++++++++++++ 10 files changed, 213 insertions(+), 7 deletions(-) -- 2.54.0