Re: [PATCH v5] dt-bindings: mfd: rockchip,rk805: Convert pinctrl to DT schema

From: Rob Herring (Arm)

Date: Tue Oct 06 2026 - 12:00:22 EST



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@xxxxxxxxxx>
> Link: https://sashiko.dev/#/patchset/20260923034245.396417-1-quchaosheng000406@xxxxxxx?part=1
> Link: https://sashiko.dev/#/patchset/20260923062746.516666-1-quchaosheng000406@xxxxxxx?part=1
> Link: https://sashiko.dev/#/patchset/20260923074337.575122-1-quchaosheng000406@xxxxxxx?part=1
> Assisted-by: LLM
> Signed-off-by: Quchaosheng <quchaosheng000406@xxxxxxx>
> ---
> 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@xxxxxxxxxx>