* [PATCH v3] dt-bindings: mfd: Convert rk805 pinctrl to DT schema
@ 2026-09-23 6:27 Quchaosheng
2026-09-23 6:39 ` sashiko-bot
0 siblings, 1 reply; 2+ messages in thread
From: Quchaosheng @ 2026-09-23 6:27 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Heiko Stuebner
Cc: Chris Zhong, Zhang Qing, mfd, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel, quchaosheng000406
pinctrl-rk805.txt describes the pinmux controller that is part of the
Rockchip RK805 PMIC. The PMIC itself is already described by
rockchip,rk805.yaml, so the pinmux part belongs there as well: the
pinctrl node is a child of the PMIC node, not a separate device.
Fold the pinmux description into rockchip,rk805.yaml and drop the
standalone text binding.
While doing so, add the missing '-pins$' child node schema. The
rockchip,rk805.yaml schema ends with 'additionalProperties: false' but did
not describe the pin configuration child nodes at all, so a valid pinmux
node like the one shown in pinctrl-rk805.txt was rejected:
pmic@18 (rockchip,rk805): 'rk805-default-pins' does not match any of
the regexes: '^pinctrl-[0-9]+$'
The pin configuration nodes require 'pins'; without it a node that names
no pin is accepted silently, while the text binding it replaces listed
'pins' as required. The RK805 exposes two output-only GPIOs, so 'pins' is
an enum of gpio0 and gpio1 and a typo such as "gpio2" is caught.
The example regains the gpio-controller and #gpio-cells lines that the
text binding's example had.
Reported-by: Sashiko <sashiko-bot@kernel.org>
Link: https://sashiko.dev/#/patchset/20260923034245.396417-1-quchaosheng000406@163.com?part=1
Assisted-by: LLM
Signed-off-by: Quchaosheng <quchaosheng000406@163.com>
---
Changes in v3:
- Capitalize the summary phrase. dt-bindings: mfd: titles are capitalized
after the subsystem prefix (Add 61, Convert 20 against convert 6).
- Add gpio-controller and #gpio-cells to the example, which the text
binding's example had and the conversion dropped.
- gpio-controller and #gpio-cells are deliberately *not* added to the
required list. rv1108-evb, rv1108-elgin-r1 and rk3328-a1 do not set
them, so requiring them breaks three in-tree boards:
rv1108-evb.dtb: pmic@18 (rockchip,rk805): 'gpio-controller' is a required property
No rk8xx PMIC schema requires the pair, and gpio.yaml already enforces
that they appear together ("'#gpio-cells' is a dependency of
'gpio-controller'"). The pinctrl driver calls devm_gpiochip_add_data()
unconditionally, so the property is not what makes the GPIO controller
work either.
Changes in v2:
- Require 'pins' in the pin configuration nodes. Without it a node that
names no pin passes validation, while the text binding listed 'pins'
as required.
---
.../bindings/mfd/rockchip,rk805.yaml | 38 ++++++++++-
.../bindings/pinctrl/pinctrl-rk805.txt | 63 -------------------
2 files changed, 37 insertions(+), 64 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/pinctrl/pinctrl-rk805.txt
diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
index da2391530c16..681a90a265c0 100644
--- a/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
+++ b/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
@@ -86,6 +86,34 @@ properties:
unevaluatedProperties: false
unevaluatedProperties: false
+patternProperties:
+ '-pins$':
+ type: object
+ description:
+ The RK805 has two output-only GPIOs which can be muxed to the GPIO
+ function and driven low or high at boot.
+ additionalProperties: false
+
+ properties:
+ pins:
+ description:
+ List of GPIO pins to configure.
+ items:
+ enum: [gpio0, gpio1]
+ minItems: 1
+ maxItems: 2
+
+ function:
+ description:
+ The RK805 only supports the GPIO function.
+ enum: [gpio]
+
+ output-low: true
+ output-high: true
+
+ required:
+ - pins
+
allOf:
- if:
properties:
@@ -125,9 +153,11 @@ examples:
interrupt-parent = <&gpio2>;
interrupts = <RK_PA6 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
- pinctrl-0 = <&pmic_int_l>;
+ pinctrl-0 = <&pmic_int_l>, <&rk805_default>;
rockchip,system-power-controller;
wakeup-source;
+ gpio-controller;
+ #gpio-cells = <2>;
#clock-cells = <0>;
vcc1-supply = <&vcc_sys>;
@@ -137,6 +167,12 @@ examples:
vcc5-supply = <&vcc_io>;
vcc6-supply = <&vcc_io>;
+ rk805_default: rk805-default-pins {
+ pins = "gpio0", "gpio1";
+ function = "gpio";
+ output-high;
+ };
+
regulators {
vdd_logic: DCDC_REG1 {
regulator-name = "vdd_logic";
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-rk805.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-rk805.txt
deleted file mode 100644
index 6ad49e51c72e..000000000000
--- a/Documentation/devicetree/bindings/pinctrl/pinctrl-rk805.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-Pincontrol driver for RK805 Power management IC.
-
-RK805 has 2 pins which can be configured as GPIO output only.
-
-Please refer file <devicetree/bindings/pinctrl/pinctrl-bindings.txt>
-for details of the common pinctrl bindings used by client devices,
-including the meaning of the phrase "pin configuration node".
-
-Optional Pinmux properties:
---------------------------
-Following properties are required if default setting of pins are required
-at boot.
-- pinctrl-names: A pinctrl state named per <pinctrl-bindings.txt>.
-- pinctrl[0...n]: Properties to contain the phandle for pinctrl states per
- <pinctrl-bindings.txt>.
-
-The pin configurations are defined as child of the pinctrl states node. Each
-sub-node have following properties:
-
-Required properties:
-------------------
-- #gpio-cells: Should be two. The first cell is the pin number and the
- second is the GPIO flags.
-
-- gpio-controller: Marks the device node as a GPIO controller.
-
-- pins: List of pins. Valid values of pins properties are: gpio0, gpio1.
-
-First 2 properties must be added in the RK805 PMIC node, documented in
-Documentation/devicetree/bindings/mfd/rockchip,rk808.yaml
-
-Optional properties:
--------------------
-Following are optional properties defined as pinmux DT binding document
-<pinctrl-bindings.txt>. Absence of properties will leave the configuration
-on default.
- function,
- output-low,
- output-high.
-
-Valid values for function properties are: gpio.
-
-There are also not customised properties for any GPIO.
-
-Example:
---------
-rk805: rk805@18 {
- compatible = "rockchip,rk805";
- ...
- gpio-controller;
- #gpio-cells = <2>;
-
- pinctrl-names = "default";
- pinctrl-0 = <&pmic_int_l>, <&rk805_default>;
-
- rk805_default: pinmux {
- gpio01 {
- pins = "gpio0", "gpio1";
- function = "gpio";
- output-high;
- };
- };
-};
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v3] dt-bindings: mfd: Convert rk805 pinctrl to DT schema
2026-09-23 6:27 [PATCH v3] dt-bindings: mfd: Convert rk805 pinctrl to DT schema Quchaosheng
@ 2026-09-23 6:39 ` sashiko-bot
0 siblings, 0 replies; 2+ messages in thread
From: sashiko-bot @ 2026-09-23 6:39 UTC (permalink / raw)
To: Quchaosheng; +Cc: robh, mfd, conor+dt, lee, devicetree
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] dt-bindings: mfd: DT ABI breakage for rk805 pinctrl container node
- [Low] dt-bindings: mfd: missing driver prefix in commit message
--
commit fb35b4123e96d1c068df56e50d1eaaf6204d1a23
Author: Quchaosheng <quchaosheng000406@163.com>
dt-bindings: mfd: Convert rk805 pinctrl to DT schema
This commit converts the pinctrl binding for the Rockchip RK805 PMIC from a
standalone text file to a YAML schema integrated into rockchip,rk805.yaml. It
drops the standalone text binding and adds a child node schema for pin
configuration nodes.
Link: https://sashiko.dev/#/patchset/20260923034245.396417-1-quchaosheng000406@163.com?part=1
> dt-bindings: mfd: Convert rk805 pinctrl to DT schema
[Severity: Low]
Does this commit message subject violate the MFD subsystem naming conventions?
The guidelines strictly require the prefix format:
mfd: <Driver>: <Capitalized description>
The driver or binding name component (e.g., rk805: or rockchip,rk805:)
appears to be completely missing before the capitalized description.
> diff --git a/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml b/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
> index da2391530c16c..681a90a265c06 100644
> --- a/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
> +++ b/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
> @@ -86,6 +86,34 @@ properties:
> unevaluatedProperties: false
> unevaluatedProperties: false
>
> +patternProperties:
> + '-pins$':
> + type: object
[Severity: High]
Does this pattern restrict child nodes to only those ending in -pins,
incorrectly rejecting the legacy pinmux container node?
Device tree bindings are considered kernel ABI, and schemas must validate
existing correct device trees. The original pinctrl-rk805.txt explicitly
documented a nested structure where a container node (named pinmux) held
sub-nodes (e.g., gpio01) containing the actual pin configuration.
With the new YAML schema setting additionalProperties: false at the top level
and restricting child nodes via patternProperties to only match the -pins$
regex, existing device trees using the valid legacy pinmux container node
will be actively rejected by dtbs_check because pinmux does not match
-pins$ and is not explicitly defined in the schema.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260923062746.516666-1-quchaosheng000406@163.com?part=1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-23 6:39 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-23 6:27 [PATCH v3] dt-bindings: mfd: Convert rk805 pinctrl to DT schema Quchaosheng
2026-09-23 6:39 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox