Message ID | 20200221021002.18795-3-yamada.masahiro@socionext.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/3] dt-bindings: arm: Convert UniPhier board/SoC bindings to json-schema | expand |
On Fri, Feb 21, 2020 at 3:10 AM Masahiro Yamada <yamada.masahiro@socionext.com> wrote: > Convert the UniPhier pin controller binding to DT schema format. > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Nice! > In the original .txt file, there is a description: > The UniPhier pinctrl should be a subnode of a "syscon" compatible node > > I did not figure out how to represent (or check) it in dt-schema. > I just moved it to a comment line in 'examples'. > If there is a better way, please let me know. There is no way to do that AFAICT, we are checking nodes from one node and downwards, never upwards. The syscon needs to have its own binding file: if it has another specific compatible such as compatible = "foo", "syscon"; then for the DT bindings for foo, make sure to add this subnode as optional/compulsory if you want to tie up the whole thing. > -Required properties: > -- compatible: should be one of the following: > - "socionext,uniphier-ld4-pinctrl" - for LD4 SoC > - "socionext,uniphier-pro4-pinctrl" - for Pro4 SoC > - "socionext,uniphier-sld8-pinctrl" - for sLD8 SoC > - "socionext,uniphier-pro5-pinctrl" - for Pro5 SoC > - "socionext,uniphier-pxs2-pinctrl" - for PXs2 SoC > - "socionext,uniphier-ld6b-pinctrl" - for LD6b SoC > - "socionext,uniphier-ld11-pinctrl" - for LD11 SoC > - "socionext,uniphier-ld20-pinctrl" - for LD20 SoC > - "socionext,uniphier-pxs3-pinctrl" - for PXs3 SoC But: > + soc-glue@5f800000 { > + compatible = "socionext,uniphier-pro4-soc-glue", "simple-mfd", "syscon"; > + reg = <0x5f800000 0x2000>; > + > + pinctrl: pinctrl { > + compatible = "socionext,uniphier-pro4-pinctrl"; > + }; > + }; It looks like you want to check also for "simple-mfd" and "syscon" following after the enum (two consts) It seems you want to check that reg is there. It seems the subnode pinctrl is also compulsory. All of this have examples in example-schema.yaml IIRC. Yours, Linus Walleij
Hi Linus, On Sat, Feb 29, 2020 at 7:13 AM Linus Walleij <linus.walleij@linaro.org> wrote: > > On Fri, Feb 21, 2020 at 3:10 AM Masahiro Yamada > <yamada.masahiro@socionext.com> wrote: > > > Convert the UniPhier pin controller binding to DT schema format. > > > > Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> > > Nice! > > > In the original .txt file, there is a description: > > The UniPhier pinctrl should be a subnode of a "syscon" compatible node > > > > I did not figure out how to represent (or check) it in dt-schema. > > I just moved it to a comment line in 'examples'. > > If there is a better way, please let me know. > > There is no way to do that AFAICT, we are checking nodes from > one node and downwards, never upwards. The syscon needs to > have its own binding file: if it has another specific compatible > such as compatible = "foo", "syscon"; then for the DT bindings > for foo, make sure to add this subnode as optional/compulsory > if you want to tie up the whole thing. Thanks for your advice. Documentation/devicetree/bindings/mfd/syscon.yaml already contains sunxi-specific compatibles, but I hesitate to add more and more platform-specific stuff in this file. Maybe, I can add Documentation/devicetree/bindings/mfd/socionext,uniphier-soc-glue.yaml and then, check 'reg' and compulsory sub-nodes. > > -Required properties: > > -- compatible: should be one of the following: > > - "socionext,uniphier-ld4-pinctrl" - for LD4 SoC > > - "socionext,uniphier-pro4-pinctrl" - for Pro4 SoC > > - "socionext,uniphier-sld8-pinctrl" - for sLD8 SoC > > - "socionext,uniphier-pro5-pinctrl" - for Pro5 SoC > > - "socionext,uniphier-pxs2-pinctrl" - for PXs2 SoC > > - "socionext,uniphier-ld6b-pinctrl" - for LD6b SoC > > - "socionext,uniphier-ld11-pinctrl" - for LD11 SoC > > - "socionext,uniphier-ld20-pinctrl" - for LD20 SoC > > - "socionext,uniphier-pxs3-pinctrl" - for PXs3 SoC > > But: > > > + soc-glue@5f800000 { > > + compatible = "socionext,uniphier-pro4-soc-glue", "simple-mfd", "syscon"; > > + reg = <0x5f800000 0x2000>; > > + > > + pinctrl: pinctrl { > > + compatible = "socionext,uniphier-pro4-pinctrl"; > > + }; > > + }; > > It looks like you want to check also for "simple-mfd" and "syscon" > following after the enum (two consts) > > It seems you want to check that reg is there. Documentation/devicetree/bindings/mfd/syscon.yaml already checks the 'reg' by the 'contains syscon' pattern, but I can repeat it in my yaml file. Thanks. > It seems the subnode pinctrl is also compulsory. > > All of this have examples in example-schema.yaml IIRC. > > Yours, > Linus Walleij
diff --git a/Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.txt deleted file mode 100644 index 8173b12138ad..000000000000 --- a/Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.txt +++ /dev/null @@ -1,27 +0,0 @@ -UniPhier SoCs pin controller - -Required properties: -- compatible: should be one of the following: - "socionext,uniphier-ld4-pinctrl" - for LD4 SoC - "socionext,uniphier-pro4-pinctrl" - for Pro4 SoC - "socionext,uniphier-sld8-pinctrl" - for sLD8 SoC - "socionext,uniphier-pro5-pinctrl" - for Pro5 SoC - "socionext,uniphier-pxs2-pinctrl" - for PXs2 SoC - "socionext,uniphier-ld6b-pinctrl" - for LD6b SoC - "socionext,uniphier-ld11-pinctrl" - for LD11 SoC - "socionext,uniphier-ld20-pinctrl" - for LD20 SoC - "socionext,uniphier-pxs3-pinctrl" - for PXs3 SoC - -Note: -The UniPhier pinctrl should be a subnode of a "syscon" compatible node. - -Example: - soc-glue@5f800000 { - compatible = "socionext,uniphier-pro4-soc-glue", - "simple-mfd", "syscon"; - reg = <0x5f800000 0x2000>; - - pinctrl: pinctrl { - compatible = "socionext,uniphier-pro4-pinctrl"; - }; - }; diff --git a/Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml new file mode 100644 index 000000000000..f8a93d8680f9 --- /dev/null +++ b/Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml @@ -0,0 +1,42 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pinctrl/socionext,uniphier-pinctrl.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: UniPhier SoCs pin controller + +maintainers: + - Masahiro Yamada <yamada.masahiro@socionext.com> + +properties: + $nodename: + pattern: "pinctrl" + + compatible: + enum: + - socionext,uniphier-ld4-pinctrl + - socionext,uniphier-pro4-pinctrl + - socionext,uniphier-sld8-pinctrl + - socionext,uniphier-pro5-pinctrl + - socionext,uniphier-pxs2-pinctrl + - socionext,uniphier-ld6b-pinctrl + - socionext,uniphier-ld11-pinctrl + - socionext,uniphier-ld20-pinctrl + - socionext,uniphier-pxs3-pinctrl + +required: + - compatible + +examples: + - | + // The UniPhier pinctrl should be a subnode of a "syscon" compatible node. + + soc-glue@5f800000 { + compatible = "socionext,uniphier-pro4-soc-glue", "simple-mfd", "syscon"; + reg = <0x5f800000 0x2000>; + + pinctrl: pinctrl { + compatible = "socionext,uniphier-pro4-pinctrl"; + }; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 3cb4c8a9107d..920bef1f5308 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2548,7 +2548,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier.gi S: Maintained F: Documentation/devicetree/bindings/arm/socionext/uniphier.yaml F: Documentation/devicetree/bindings/gpio/socionext,uniphier-gpio.yaml -F: Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.txt +F: Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml F: arch/arm/boot/dts/uniphier* F: arch/arm/include/asm/hardware/cache-uniphier.h F: arch/arm/mach-uniphier/
Convert the UniPhier pin controller binding to DT schema format. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- In the original .txt file, there is a description: The UniPhier pinctrl should be a subnode of a "syscon" compatible node I did not figure out how to represent (or check) it in dt-schema. I just moved it to a comment line in 'examples'. If there is a better way, please let me know. .../pinctrl/socionext,uniphier-pinctrl.txt | 27 ------------ .../pinctrl/socionext,uniphier-pinctrl.yaml | 42 +++++++++++++++++++ MAINTAINERS | 2 +- 3 files changed, 43 insertions(+), 28 deletions(-) delete mode 100644 Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.txt create mode 100644 Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml