From: Yaozhong Li <yaozhonguwl@gmail.com>
To: Lee Jones <lee@kernel.org>
Cc: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heiko Stuebner <heiko@sntech.de>,
Chris Zhong <zyw@rock-chips.com>,
Zhang Qing <zhangqing@rock-chips.com>,
Joseph Chen <chenjh@rock-chips.com>,
Sebastian Reichel <sebastian.reichel@collabora.com>,
mfd@lists.linux.dev, devicetree@vger.kernel.org,
linux-rockchip@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Yaozhong Li <yaozhonguwl@gmail.com>
Subject: [PATCH v5 1/3] dt-bindings: mfd: rk8xx: add board level power hold GPIOs
Date: Tue, 27 Oct 2026 16:45:07 +0800 [thread overview]
Message-ID: <20261027084511.1992-2-yaozhonguwl@gmail.com> (raw)
In-Reply-To: <20261027084511.1992-1-yaozhonguwl@gmail.com>
Some boards route "power hold" lines from the SoC into the board's power
circuitry. Those lines have to be held asserted while the system is
running and released before the PMIC shutdown request is written,
otherwise the rails can drop and come back up instead of staying off.
Add power-hold-gpios to describe those lines and power-hold-delay-ms for
the settle time. The driver reads them for every RK8xx variant that is
the system power controller, so add them to all seven RK8xx schemas.
The array is bounded at two entries. Firefly's vendor kernel handles
exactly two such lines, pmic,hold-gpio and pmic,stby-gpio, and its board
files use one or both of them, with an RK808 and with an RK818.
The lines are released from the PMIC's power-off path, so they are only
meaningful when the PMIC is the system power controller. Require that.
A board adding these lines is expected to switch to the generic
system-power-controller property at the same time, so the deprecated
rockchip,system-power-controller spelling is not accepted here.
Assisted-by: LLM
Signed-off-by: Yaozhong Li <yaozhonguwl@gmail.com>
---
.../bindings/mfd/rockchip,rk801.yaml | 24 +++++++++++++++++++
.../bindings/mfd/rockchip,rk805.yaml | 24 +++++++++++++++++++
.../bindings/mfd/rockchip,rk806.yaml | 24 +++++++++++++++++++
.../bindings/mfd/rockchip,rk808.yaml | 24 +++++++++++++++++++
.../bindings/mfd/rockchip,rk816.yaml | 24 +++++++++++++++++++
.../bindings/mfd/rockchip,rk817.yaml | 24 +++++++++++++++++++
.../bindings/mfd/rockchip,rk818.yaml | 24 +++++++++++++++++++
7 files changed, 168 insertions(+)
diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk801.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk801.yaml
index 7c71447..bfba394 100644
--- a/Documentation/devicetree/bindings/mfd/rockchip,rk801.yaml
+++ b/Documentation/devicetree/bindings/mfd/rockchip,rk801.yaml
@@ -29,6 +29,26 @@ properties:
description:
Telling whether or not this PMIC is controlling the system power.
+ power-hold-gpios:
+ minItems: 1
+ maxItems: 2
+ description: >
+ Board level power hold lines driven by the SoC. They have to be held
+ asserted while the system is running and released before the PMIC
+ shutdown request is written, otherwise the rails can drop and come
+ back up instead of staying off. Only meaningful when this PMIC is the
+ system power controller, as the lines are released as part of its
+ power-off path.
+
+ The lines are released in the order listed, and power-hold-delay-ms
+ elapses once, after the last of them.
+
+ power-hold-delay-ms:
+ default: 0
+ description:
+ Time to wait after releasing power-hold-gpios before the shutdown
+ request is written, to let the lines settle.
+
wakeup-source:
type: boolean
description:
@@ -71,6 +91,10 @@ properties:
unevaluatedProperties: false
additionalProperties: false
+dependentRequired:
+ power-hold-gpios: [ system-power-controller ]
+ power-hold-delay-ms: [ power-hold-gpios ]
+
required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
index da23915..7895c31 100644
--- a/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
+++ b/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
@@ -48,6 +48,26 @@ properties:
system-power-controller: true
+ power-hold-gpios:
+ minItems: 1
+ maxItems: 2
+ description: >
+ Board level power hold lines driven by the SoC. They have to be held
+ asserted while the system is running and released before the PMIC
+ shutdown request is written, otherwise the rails can drop and come
+ back up instead of staying off. Only meaningful when this PMIC is the
+ system power controller, as the lines are released as part of its
+ power-off path.
+
+ The lines are released in the order listed, and power-hold-delay-ms
+ elapses once, after the last of them.
+
+ power-hold-delay-ms:
+ default: 0
+ description:
+ Time to wait after releasing power-hold-gpios before the shutdown
+ request is written, to let the lines settle.
+
wakeup-source:
type: boolean
description:
@@ -102,6 +122,10 @@ allOf:
clock-output-names:
maxItems: 2
+dependentRequired:
+ power-hold-gpios: [ system-power-controller ]
+ power-hold-delay-ms: [ power-hold-gpios ]
+
required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk806.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk806.yaml
index eb5bca3..b719b07 100644
--- a/Documentation/devicetree/bindings/mfd/rockchip,rk806.yaml
+++ b/Documentation/devicetree/bindings/mfd/rockchip,rk806.yaml
@@ -31,6 +31,26 @@ properties:
system-power-controller: true
+ power-hold-gpios:
+ minItems: 1
+ maxItems: 2
+ description: >
+ Board level power hold lines driven by the SoC. They have to be held
+ asserted while the system is running and released before the PMIC
+ shutdown request is written, otherwise the rails can drop and come
+ back up instead of staying off. Only meaningful when this PMIC is the
+ system power controller, as the lines are released as part of its
+ power-off path.
+
+ The lines are released in the order listed, and power-hold-delay-ms
+ elapses once, after the last of them.
+
+ power-hold-delay-ms:
+ default: 0
+ description:
+ Time to wait after releasing power-hold-gpios before the shutdown
+ request is written, to let the lines settle.
+
rockchip,reset-mode:
$ref: /schemas/types.yaml#/definitions/uint32
enum: [0, 1, 2]
@@ -138,6 +158,10 @@ patternProperties:
allOf:
- $ref: /schemas/spi/spi-peripheral-props.yaml
+dependentRequired:
+ power-hold-gpios: [ system-power-controller ]
+ power-hold-delay-ms: [ power-hold-gpios ]
+
required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk808.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk808.yaml
index 50dfffa..0be2bb9 100644
--- a/Documentation/devicetree/bindings/mfd/rockchip,rk808.yaml
+++ b/Documentation/devicetree/bindings/mfd/rockchip,rk808.yaml
@@ -43,6 +43,26 @@ properties:
system-power-controller: true
+ power-hold-gpios:
+ minItems: 1
+ maxItems: 2
+ description: >
+ Board level power hold lines driven by the SoC. They have to be held
+ asserted while the system is running and released before the PMIC
+ shutdown request is written, otherwise the rails can drop and come
+ back up instead of staying off. Only meaningful when this PMIC is the
+ system power controller, as the lines are released as part of its
+ power-off path.
+
+ The lines are released in the order listed, and power-hold-delay-ms
+ elapses once, after the last of them.
+
+ power-hold-delay-ms:
+ default: 0
+ description:
+ Time to wait after releasing power-hold-gpios before the shutdown
+ request is written, to let the lines settle.
+
wakeup-source:
type: boolean
description:
@@ -113,6 +133,10 @@ properties:
unevaluatedProperties: false
unevaluatedProperties: false
+dependentRequired:
+ power-hold-gpios: [ system-power-controller ]
+ power-hold-delay-ms: [ power-hold-gpios ]
+
required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk816.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk816.yaml
index a58d945..a834a9c 100644
--- a/Documentation/devicetree/bindings/mfd/rockchip,rk816.yaml
+++ b/Documentation/devicetree/bindings/mfd/rockchip,rk816.yaml
@@ -44,6 +44,26 @@ properties:
description:
Telling whether or not this PMIC is controlling the system power.
+ power-hold-gpios:
+ minItems: 1
+ maxItems: 2
+ description: >
+ Board level power hold lines driven by the SoC. They have to be held
+ asserted while the system is running and released before the PMIC
+ shutdown request is written, otherwise the rails can drop and come
+ back up instead of staying off. Only meaningful when this PMIC is the
+ system power controller, as the lines are released as part of its
+ power-off path.
+
+ The lines are released in the order listed, and power-hold-delay-ms
+ elapses once, after the last of them.
+
+ power-hold-delay-ms:
+ default: 0
+ description:
+ Time to wait after releasing power-hold-gpios before the shutdown
+ request is written, to let the lines settle.
+
wakeup-source: true
vcc1-supply:
@@ -101,6 +121,10 @@ patternProperties:
$ref: /schemas/types.yaml#/definitions/string
const: gpio0
+dependentRequired:
+ power-hold-gpios: [ system-power-controller ]
+ power-hold-delay-ms: [ power-hold-gpios ]
+
required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk817.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk817.yaml
index 2cb6d17..2c05275 100644
--- a/Documentation/devicetree/bindings/mfd/rockchip,rk817.yaml
+++ b/Documentation/devicetree/bindings/mfd/rockchip,rk817.yaml
@@ -55,6 +55,26 @@ properties:
system-power-controller: true
+ power-hold-gpios:
+ minItems: 1
+ maxItems: 2
+ description: >
+ Board level power hold lines driven by the SoC. They have to be held
+ asserted while the system is running and released before the PMIC
+ shutdown request is written, otherwise the rails can drop and come
+ back up instead of staying off. Only meaningful when this PMIC is the
+ system power controller, as the lines are released as part of its
+ power-off path.
+
+ The lines are released in the order listed, and power-hold-delay-ms
+ elapses once, after the last of them.
+
+ power-hold-delay-ms:
+ default: 0
+ description:
+ Time to wait after releasing power-hold-gpios before the shutdown
+ request is written, to let the lines settle.
+
wakeup-source:
type: boolean
description:
@@ -189,6 +209,10 @@ allOf:
patternProperties:
"^(BOOST|OTG_SWITCH)$": false
+dependentRequired:
+ power-hold-gpios: [ system-power-controller ]
+ power-hold-delay-ms: [ power-hold-gpios ]
+
required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk818.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk818.yaml
index 90d944c..319c0f2 100644
--- a/Documentation/devicetree/bindings/mfd/rockchip,rk818.yaml
+++ b/Documentation/devicetree/bindings/mfd/rockchip,rk818.yaml
@@ -43,6 +43,26 @@ properties:
system-power-controller: true
+ power-hold-gpios:
+ minItems: 1
+ maxItems: 2
+ description: >
+ Board level power hold lines driven by the SoC. They have to be held
+ asserted while the system is running and released before the PMIC
+ shutdown request is written, otherwise the rails can drop and come
+ back up instead of staying off. Only meaningful when this PMIC is the
+ system power controller, as the lines are released as part of its
+ power-off path.
+
+ The lines are released in the order listed, and power-hold-delay-ms
+ elapses once, after the last of them.
+
+ power-hold-delay-ms:
+ default: 0
+ description:
+ Time to wait after releasing power-hold-gpios before the shutdown
+ request is written, to let the lines settle.
+
wakeup-source:
type: boolean
description:
@@ -105,6 +125,10 @@ properties:
unevaluatedProperties: false
unevaluatedProperties: false
+dependentRequired:
+ power-hold-gpios: [ system-power-controller ]
+ power-hold-delay-ms: [ power-hold-gpios ]
+
required:
- compatible
- reg
--
2.55.0.windows.3
next prev parent reply other threads:[~2026-10-27 8:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-27 8:45 [PATCH v5 0/3] Fix poweroff restarting the board on Firefly-RK3399 Yaozhong Li
2026-10-27 8:45 ` Yaozhong Li [this message]
2026-10-27 9:27 ` [PATCH v5 1/3] dt-bindings: mfd: rk8xx: add board level power hold GPIOs Lee Jones
2026-10-27 8:45 ` [PATCH v5 2/3] mfd: rk8xx: Release the power hold GPIOs before powering off Yaozhong Li
2026-10-27 8:45 ` [PATCH v5 3/3] arm64: dts: rockchip: fix power-off on Firefly-RK3399 Yaozhong Li
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=20261027084511.1992-2-yaozhonguwl@gmail.com \
--to=yaozhonguwl@gmail.com \
--cc=chenjh@rock-chips.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=heiko@sntech.de \
--cc=krzk+dt@kernel.org \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mfd@lists.linux.dev \
--cc=robh@kernel.org \
--cc=sebastian.reichel@collabora.com \
--cc=zhangqing@rock-chips.com \
--cc=zyw@rock-chips.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®