Hi Laurent, Geert,
On Thu, Sep 05, 2019 at 03:20:59PM +0300, Laurent Pinchart wrote:
Hi Geert,
On Thu, Sep 05, 2019 at 02:05:34PM +0200, Geert Uytterhoeven wrote:
On Thu, Sep 5, 2019 at 1:50 PM Laurent Pinchart wrote:
On Fri, Aug 30, 2019 at 08:01:09PM +0200, Jacopo Mondi wrote:
On Mon, Aug 26, 2019 at 01:15:50PM +0300, Laurent Pinchart wrote:
How about converting this binding to yaml alreay ? It should be fairly simple.
I'm trying to, and I'm having my portion of fun time at it.
The definition of the schema itself seems good, but I wonder, is this the first renesas schema we have? Because it seems to me the schema validator is having an hard time to digest the examplea 'clocks' and 'power-domains' properties, which have 1 phandle and 2 specifiers and 1 phandle and 1 specifier respectively for Rensas SoCs.
In other words, if in the example I have:
examples:
- | cmm0: cmm@fea40000 { compatible = "renesas,r8a7796-cmm"; reg = <0 0xfea40000 0 0x1000>; clocks = <&cpg 711> <---- 1 phandle + 1 specifier resets = <&cpg 711>; power-domains = <&sysc>; <---- 1 phandle };
The schema validation is good.
While if I use an actual example
- | cmm0: cmm@fea40000 { compatible = "renesas,r8a7796-cmm"; reg = <0 0xfea40000 0 0x1000>; clocks = <&cpg CPG_MOD 711> <---- 1 phandle + 2 specifier resets = <&cpg 711>; power-domains = <&sysc R8A7796_PD_ALWAYS_ON>; <---- 1 phandle }; + 1 specfier
The schema validation fails... Error: Documentation/devicetree/bindings/display/renesas,cmm.example.dts:20.29-30 syntax error FATAL ERROR: Unable to parse input tree
Are clocks properties with > 2 entries and power-domains properties with
1 entries supported?
Because from what I read here: https://github.com/robherring/yaml-bindings/blob/master/schemas/clock/clock.... "The length of a clock specifier is defined by the value of a #clock-cells property in the clock provider node."
And that's expected, but is the examples actually validated against the clock provider pointed by the phandle? Because in that case, if we had a yaml schema for the cpg-mssr provider, it would indeed specify clock-cells=2.
Do we need a schema for cpg-mssr first, or am I doing something else wrong?
I think you just need to #include the headers that define CPG_MOD and R8A7796_PD_ALWAYS_ON.
If that helps, you might want to replace the symbols in the examples by their actual values (1 resp. 32).
And perhaps keep the symbols as comments?
clocks = <&cpg 1 /* CPG_MOD */ 711>; power-domains = <&sysc 32 /* R8A7796_PD_ALWAYS_ON */>;
I think adding the required #include at the beginning of the example is a better solution.
I didn't realize that, but it actually makes sense, as the example is extracted and actually compiled from the yaml schema.. brilliant!
With a simple:
--- a/Documentation/devicetree/bindings/display/renesas,cmm.yaml +++ b/Documentation/devicetree/bindings/display/renesas,cmm.yaml @@ -51,6 +51,9 @@ additionalProperties: false
examples: - | + #include <dt-bindings/clock/r8a7796-cpg-mssr.h> + #include <dt-bindings/power/r8a7796-sysc.h>
The example now compiles.
Thanks, I will submit the bindings in yaml format in next iteration.
-- Regards,
Laurent Pinchart