[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.