From: Mehmet Fide <mehmet.fide@gmail.com>
To: Simon Glass <sjg@chromium.org>
Cc: Tom Rini <trini@konsulko.com>,
Jaehoon Chung <jh80.chung@samsung.com>,
Peng Fan <peng.fan@nxp.com>, Vincent Jardin <vjardin@free.fr>,
Ye Li <ye.li@nxp.com>, Michal Simek <michal.simek@amd.com>,
Aristo Chen <aristo.chen@canonical.com>,
u-boot@lists.u-boot-project.org,
Mehmet Fide <mehmet.fide@screeningeagle.com>
Subject: [PATCH 0/4] dm: gpio: read GPIOs in of_to_plat(), request them in probe()
Date: Fri, 28 Aug 2026 12:52:06 +0200 [thread overview]
Message-ID: <20260828105210.32664-1-mehmet.fide@gmail.com> (raw)
From: Mehmet Fide <mehmet.fide@screeningeagle.com>
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/20260819143543.427396-2-mehmet.fide@gmail.com/
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
next reply other threads:[~2026-08-28 10:52 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-28 10:52 Mehmet Fide [this message]
2026-08-28 10:52 ` [PATCH 1/4] gpio: add a way to parse a GPIO now and request it later Mehmet Fide
2026-09-10 14:06 ` Simon Glass
2026-09-10 14:58 ` Mehmet Fide
2026-08-28 10:52 ` [PATCH 2/4] regulator: claim the enable GPIO at probe time, not in of_to_plat() Mehmet Fide
2026-09-10 14:08 ` Simon Glass
2026-09-10 14:58 ` Mehmet Fide
2026-08-28 10:52 ` [PATCH 3/4] doc: driver-model: state that of_to_plat() must not probe or claim Mehmet Fide
2026-09-10 14:09 ` Simon Glass
2026-09-10 14:58 ` Mehmet Fide
2026-08-28 10:52 ` [PATCH 4/4] test: dm: check the fixed regulator claims its GPIO at probe time Mehmet Fide
2026-09-10 14:09 ` Simon Glass
2026-09-10 14:58 ` Mehmet Fide
2026-09-10 14:10 ` [0/4] dm: gpio: read GPIOs in of_to_plat(), request them in probe() Simon Glass
2026-09-10 14:58 ` [PATCH 0/4] " Mehmet Fide
2026-09-10 15:08 ` Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260828105210.32664-1-mehmet.fide@gmail.com \
--to=mehmet.fide@gmail.com \
--cc=aristo.chen@canonical.com \
--cc=jh80.chung@samsung.com \
--cc=mehmet.fide@screeningeagle.com \
--cc=michal.simek@amd.com \
--cc=peng.fan@nxp.com \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.u-boot-project.org \
--cc=vjardin@free.fr \
--cc=ye.li@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.