* [PATCH v5] dt-bindings: mfd: rockchip,rk805: Convert pinctrl to DT schema
@ 2026-09-23 8:30 Quchaosheng
2026-10-06 15:52 ` Rob Herring (Arm)
0 siblings, 1 reply; 2+ messages in thread
From: Quchaosheng @ 2026-09-23 8:30 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 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 nodes may be direct children of the PMIC, or sit one level deeper
inside a "pinmux" grouping node, which is the layout the example of the
text binding used. pinctrl-bindings.txt allows the configuration nodes to
be grandchildren of the pin controller, and the driver reaches both
layouts: pinconf_generic_dt_node_to_map() parses the referenced node and
then walks its children. The example shows both.
The example also regains the gpio-controller and #gpio-cells lines that the
example of the text binding had.
Reported-by: Sashiko <sashiko-bot@kernel.org>
Link: https://sashiko.dev/#/patchset/20260923034245.396417-1-quchaosheng000406@163.com?part=1
Link: https://sashiko.dev/#/patchset/20260923062746.516666-1-quchaosheng000406@163.com?part=1
Link: https://sashiko.dev/#/patchset/20260923074337.575122-1-quchaosheng000406@163.com?part=1
Assisted-by: LLM
Signed-off-by: Quchaosheng <quchaosheng000406@163.com>
---
Changes in v5:
- The child nodes of the "pinmux" node were matched with a patternProperties
entry guarded by "if: type: object". That has no "else", so a non-object
property of the grouping node, a misspelled "typo = <1>;" for instance,
matched the pattern and passed. Match them with additionalProperties
against the same definition instead. dtschema puts phandle and status into
the allowed properties there, so the grouping node keeps the phandle that
pinctrl-0 points at, and every other property has to be a pin
configuration node.
Changes in v4:
- Describe the pin configuration nodes both as direct children and inside a
"pinmux" grouping node. Only the flat form was described, so the layout
used by the example of the text binding this replaces was still rejected:
pmic@18 (rockchip,rk805): 'pinmux' does not match any of the regexes:
'-pins$', '^pinctrl-[0-9]+$'
The nodes are now one definition referenced from both places, and the
example shows the flat node and a "pinmux" node holding one.
- Name the binding in the summary, as
Documentation/devicetree/bindings/submitting-patches.rst shows for a
conversion ("dt-bindings: iio: adc: adi,ad7476: Convert to DT schema").
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 | 60 +++++++++++++++++-
.../bindings/pinctrl/pinctrl-rk805.txt | 63 -------------------
2 files changed, 59 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..ecd9846dffec 100644
--- a/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
+++ b/Documentation/devicetree/bindings/mfd/rockchip,rk805.yaml
@@ -77,6 +77,16 @@ properties:
description:
The input supply for LDO_REG3.
+ # pinctrl-bindings.txt allows the pin configuration nodes to be grandchildren
+ # of the pin controller, and the text binding this replaces used that layout:
+ # a "pinmux" node holding the nodes that carry "pins". The driver reaches both
+ # layouts, because pinconf_generic_dt_node_to_map() parses the referenced node
+ # and then walks its children.
+ pinmux:
+ type: object
+ additionalProperties:
+ $ref: '#/$defs/rk805-pin-config'
+
regulators:
type: object
patternProperties:
@@ -86,6 +96,38 @@ properties:
unevaluatedProperties: false
unevaluatedProperties: false
+$defs:
+ rk805-pin-config:
+ 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
+
+patternProperties:
+ '-pins$':
+ $ref: '#/$defs/rk805-pin-config'
+
allOf:
- if:
properties:
@@ -125,9 +167,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>, <&rk805_grouped>;
rockchip,system-power-controller;
wakeup-source;
+ gpio-controller;
+ #gpio-cells = <2>;
#clock-cells = <0>;
vcc1-supply = <&vcc_sys>;
@@ -137,6 +181,20 @@ examples:
vcc5-supply = <&vcc_io>;
vcc6-supply = <&vcc_io>;
+ rk805_default: rk805-default-pins {
+ pins = "gpio0";
+ function = "gpio";
+ output-high;
+ };
+
+ rk805_grouped: pinmux {
+ gpio01 {
+ pins = "gpio1";
+ function = "gpio";
+ output-low;
+ };
+ };
+
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 [flat|nested] 2+ messages in thread
* Re: [PATCH v5] dt-bindings: mfd: rockchip,rk805: Convert pinctrl to DT schema
2026-09-23 8:30 [PATCH v5] dt-bindings: mfd: rockchip,rk805: Convert pinctrl to DT schema Quchaosheng
@ 2026-10-06 15:52 ` Rob Herring (Arm)
0 siblings, 0 replies; 2+ messages in thread
From: Rob Herring (Arm) @ 2026-10-06 15:52 UTC (permalink / raw)
To: Quchaosheng
Cc: Conor Dooley, Lee Jones, mfd, linux-arm-kernel, Zhang Qing,
linux-rockchip, devicetree, Krzysztof Kozlowski, Heiko Stuebner,
Chris Zhong, linux-kernel
On Wed, 23 Sep 2026 16:30:01 +0800, Quchaosheng wrote:
> 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 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 nodes may be direct children of the PMIC, or sit one level deeper
> inside a "pinmux" grouping node, which is the layout the example of the
> text binding used. pinctrl-bindings.txt allows the configuration nodes to
> be grandchildren of the pin controller, and the driver reaches both
> layouts: pinconf_generic_dt_node_to_map() parses the referenced node and
> then walks its children. The example shows both.
>
> The example also regains the gpio-controller and #gpio-cells lines that the
> example of the text binding had.
>
> Reported-by: Sashiko <sashiko-bot@kernel.org>
> Link: https://sashiko.dev/#/patchset/20260923034245.396417-1-quchaosheng000406@163.com?part=1
> Link: https://sashiko.dev/#/patchset/20260923062746.516666-1-quchaosheng000406@163.com?part=1
> Link: https://sashiko.dev/#/patchset/20260923074337.575122-1-quchaosheng000406@163.com?part=1
> Assisted-by: LLM
> Signed-off-by: Quchaosheng <quchaosheng000406@163.com>
> ---
> Changes in v5:
> - The child nodes of the "pinmux" node were matched with a patternProperties
> entry guarded by "if: type: object". That has no "else", so a non-object
> property of the grouping node, a misspelled "typo = <1>;" for instance,
> matched the pattern and passed. Match them with additionalProperties
> against the same definition instead. dtschema puts phandle and status into
> the allowed properties there, so the grouping node keeps the phandle that
> pinctrl-0 points at, and every other property has to be a pin
> configuration node.
>
> Changes in v4:
> - Describe the pin configuration nodes both as direct children and inside a
> "pinmux" grouping node. Only the flat form was described, so the layout
> used by the example of the text binding this replaces was still rejected:
>
> pmic@18 (rockchip,rk805): 'pinmux' does not match any of the regexes:
> '-pins$', '^pinctrl-[0-9]+$'
>
> The nodes are now one definition referenced from both places, and the
> example shows the flat node and a "pinmux" node holding one.
> - Name the binding in the summary, as
> Documentation/devicetree/bindings/submitting-patches.rst shows for a
> conversion ("dt-bindings: iio: adc: adi,ad7476: Convert to DT schema").
>
> 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 | 60 +++++++++++++++++-
> .../bindings/pinctrl/pinctrl-rk805.txt | 63 -------------------
> 2 files changed, 59 insertions(+), 64 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/pinctrl/pinctrl-rk805.txt
>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-06 15:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-23 8:30 [PATCH v5] dt-bindings: mfd: rockchip,rk805: Convert pinctrl to DT schema Quchaosheng
2026-10-06 15:52 ` Rob Herring (Arm)
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®