From: Sascha Hauer <s.hauer@pengutronix.de>
To: linux-rockchip@lists.infradead.org
Cc: Heiko Stuebner <heiko@sntech.de>,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
linux-gpio@vger.kernel.org, kernel@pengutronix.de,
Quentin Schulz <quentin.schulz@theobroma-systems.com>,
Michael Riesch <michael.riesch@wolfvision.net>,
Linus Walleij <linus.walleij@linaro.org>,
Rob Herring <robh+dt@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>
Subject: [PATCH 0/3] Make Rockchip IO domains dependency from other devices explicit
Date: Mon, 4 Sep 2023 13:58:13 +0200 [thread overview]
Message-ID: <20230904115816.1237684-1-s.hauer@pengutronix.de> (raw)
This is a continuation of the patch posted by Quentin Schulz here [1]
This series aims to solve a problem with Rockchip IO domains. On many
Rockchip SoCs the pins are driven by external supplies normally
controlled by regulators of a PMIC. There are multiple voltages allowed
for the regulators; additionally the chosen voltage has to be programmed
into SoC registers. There already is a driver [2] handling setting these
registers. The driver works by registering a notifier on the regulators.
Whenever a regulator is about to change its voltage then the notifier will
program the IO domain registers suitably for the new voltage.
The problem is that there is no dependency between pins and the IO
domain driver which means that it can happen that a pin is used before
the IO domain driver has been probed. In that case the pin can end up
being non functional as neither the regulator has been configured
correctly nor the SoC registers have been adjusted to the regulators
voltage.
One way to ensure correct probing order is to defer probing of devices
in the pinctrl driver until the IO domain driver has been probed. We
can't do this for all devices though, as that would introduce a cyclic
dependency when for example the I2C port needed to access the PMIC for
the regulators is part of a IO domain itself.
This series solves these problems similarly to Quentins patch. With
Quentins patch we would have to add rockchip,io-domain properties for
all pin group nodes we wish to honor the IO domain dependency for. We
could put these properties into the board dts files which would mean
that we either only add the properties to nodes which actually byte us,
or that we would have to add the properties to all possible pin groups
except the ones needed to access the PMIC. We could also put these
properties into the dtsi files, but that would mean a board has to add a
/delete-property/ rockchip,io-domain to the pin groups needed to access
the PMIC to avoid circular dependencies.
The approach chosen here is slightly different. First of all this series
doesn't change the current behaviour without board specific dts changes.
To activate the IO domain dependency handling, a board has to add a
rockchip,io-domains property to the pinctrl node. When this property is
present all pins are assumed to need the IO domain driver. Pin groups
needed to access the PMIC can then be given a rockchip,io-domain-boot-on
property. When this property is given then the IO domain is assumed to
be correctly configured by the boot loader. It should be added to all
pin groups needed to access the PMIC to avoid cyclic dependencies. Patch
3/3 contains a usage example for the Radxa Rock-3a.
Sascha
[1] https://lore.kernel.org/lkml/20220802095252.2486591-1-foss+kernel@0leil.net/
[2] drivers/soc/rockchip/io-domain.c
Sascha Hauer (3):
pinctrl: rockchip: add support for io-domain dependency
dt-bindings: pinctrl: rockchip: Add io domain properties
arm64: dts: rockchip: rock-3a: add io domain properties
.../bindings/pinctrl/rockchip,pinctrl.yaml | 13 +++-
.../boot/dts/rockchip/rk3568-rock-3a.dts | 11 ++++
drivers/pinctrl/pinctrl-rockchip.c | 64 +++++++++++++++++++
drivers/pinctrl/pinctrl-rockchip.h | 3 +
4 files changed, 90 insertions(+), 1 deletion(-)
--
2.39.2
next reply other threads:[~2023-09-04 11:58 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-04 11:58 Sascha Hauer [this message]
2023-09-04 11:58 ` [PATCH 1/3] pinctrl: rockchip: add support for io-domain dependency Sascha Hauer
2023-09-12 8:06 ` Linus Walleij
2023-09-13 1:37 ` Saravana Kannan
2023-09-13 4:37 ` Chen-Yu Tsai
2023-09-13 6:58 ` Sascha Hauer
2023-09-13 20:48 ` Saravana Kannan
2023-09-15 6:51 ` Sascha Hauer
2023-09-15 16:38 ` Quentin Schulz
2023-09-15 17:24 ` Robin Murphy
2023-09-20 22:00 ` Saravana Kannan
2023-09-21 13:57 ` Sascha Hauer
2023-09-21 20:49 ` Saravana Kannan
2023-09-22 11:04 ` Sascha Hauer
2023-09-16 4:59 ` Samuel Holland
2023-09-15 14:45 ` Rob Herring
2023-09-04 11:58 ` [PATCH 2/3] dt-bindings: pinctrl: rockchip: Add io domain properties Sascha Hauer
2023-09-05 9:03 ` Robin Murphy
2023-09-06 7:21 ` Sascha Hauer
2023-09-07 16:35 ` Robin Murphy
2023-09-08 7:20 ` Sascha Hauer
2023-09-06 8:20 ` Quentin Schulz
2023-09-06 10:19 ` Sascha Hauer
2023-09-07 16:47 ` Robin Murphy
2023-09-05 18:14 ` Rob Herring
2023-09-06 8:27 ` Quentin Schulz
2023-09-04 11:58 ` [PATCH 3/3] arm64: dts: rockchip: rock-3a: add " Sascha Hauer
2023-09-05 11:34 ` [PATCH 0/3] Make Rockchip IO domains dependency from other devices explicit Jonas Karlman
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=20230904115816.1237684-1-s.hauer@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=heiko@sntech.de \
--cc=kernel@pengutronix.de \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=michael.riesch@wolfvision.net \
--cc=quentin.schulz@theobroma-systems.com \
--cc=robh+dt@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).