Re: [PATCH 1/1] dt-bindings: timer: Convert ingenic,tcu.txt to YAML

From: Rob Herring
Date: Mon Mar 02 2020 - 15:00:08 EST


On Mon, Mar 2, 2020 at 1:35 PM Paul Cercueil <paul@xxxxxxxxxxxxxxx> wrote:
>
>
>
> Le lun., mars 2, 2020 at 13:07, Rob Herring <robh+dt@xxxxxxxxxx> a
> Ãcrit :
> > On Mon, Mar 2, 2020 at 12:25 PM Paul Cercueil <paul@xxxxxxxxxxxxxxx>
> > wrote:
> >>
> >> Hi Rob,
> >>
> >>
> >> Le lun., mars 2, 2020 at 11:06, Rob Herring <robh+dt@xxxxxxxxxx> a
> >> Ãcrit :
> >> > On Sun, Mar 1, 2020 at 11:47 AM Paul Cercueil
> >> <paul@xxxxxxxxxxxxxxx>
> >> > wrote:
> >> >>
> >> >
> >> > Well, this flew into linux-next quickly and breaks 'make
> >> > dt_binding_check'... Please drop, revert or fix quickly.
> >>
> >> For my defense I said to merge "provided Rob acks it" ;)
> >>
> >> >> Convert the ingenic,tcu.txt file to YAML.
> >> >>
> >> >> Signed-off-by: Paul Cercueil <paul@xxxxxxxxxxxxxxx>
> >> >> ---
> >> >> .../devicetree/bindings/timer/ingenic,tcu.txt | 138 ----------
> >> >> .../bindings/timer/ingenic,tcu.yaml | 235
> >> >> ++++++++++++++++++
> >> >> 2 files changed, 235 insertions(+), 138 deletions(-)
> >> >> delete mode 100644
> >> >> Documentation/devicetree/bindings/timer/ingenic,tcu.txt
> >> >> create mode 100644
> >> >> Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >> >
> >> >
> >> >> diff --git
> >> >> a/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >> >> b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >> >> new file mode 100644
> >> >> index 000000000000..1ded3b4762bb
> >> >> --- /dev/null
> >> >> +++ b/Documentation/devicetree/bindings/timer/ingenic,tcu.yaml
> >> >> @@ -0,0 +1,235 @@
> >> >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> >> >> +%YAML 1.2
> >> >> +---
> >> >> +$id: http://devicetree.org/schemas/timer/ingenic,tcu.yaml#
> >> >> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >> >> +
> >> >> +title: Ingenic SoCs Timer/Counter Unit (TCU) devicetree
> >> bindings
> >> >> +
> >> >> +description: |
> >> >> + For a description of the TCU hardware and drivers, have a
> >> look at
> >> >> + Documentation/mips/ingenic-tcu.rst.
> >> >> +
> >> >> +maintainers:
> >> >> + - Paul Cercueil <paul@xxxxxxxxxxxxxxx>
> >> >> +
> >> >> +properties:
> >> >> + $nodename:
> >> >> + pattern: "^timer@.*"
> >> >
> >> > '.*' is redundant.
> >> >
> >> >> +
> >> >> + "#address-cells":
> >> >> + const: 1
> >> >> +
> >> >> + "#size-cells":
> >> >> + const: 1
> >> >> +
> >> >> + "#clock-cells":
> >> >> + const: 1
> >> >> +
> >> >> + "#interrupt-cells":
> >> >> + const: 1
> >> >> +
> >> >> + interrupt-controller: true
> >> >> +
> >> >> + ranges: true
> >> >> +
> >> >> + compatible:
> >> >> + items:
> >> >> + - enum:
> >> >> + - ingenic,jz4740-tcu
> >> >> + - ingenic,jz4725b-tcu
> >> >> + - ingenic,jz4770-tcu
> >> >> + - ingenic,x1000-tcu
> >> >> + - const: simple-mfd
> >> >
> >> > This breaks several examples in dt_binding_check because this
> >> schema
> >> > will be applied to every 'simple-mfd' node. You need a custom
> >> select
> >> > entry that excludes 'simple-mfd'. There should be several
> >> examples in
> >> > tree to copy.
> >>
> >> Why would it be applied to all 'single-mfd' nodes?
> >
> > single-mfd?
>
> simple-mfd* of course, sorry.
>
> > The way the tool decides to apply a schema or not is my matching on
> > any of the compatible strings (or node name if no compatible
> > specified). You can override this with 'select'.
> >
> >> Doesn't what I wrote
> >> specify that it needs one of ingenic,*-tcu _and_ simple-mfd?
> >
> > Yes, but matching is on any of them. You need to add:
>
> Alright, will do. Is there a reason why it's done that way? It sounds a
> bit counter-intuitive.

I'm not sure how we could do it differently. We need some way to
express 'apply this schema to a node if ...'. If we just matched on
'compatible' schema as is, then we'd get silence if there's any error
in 'compatible'. That can still happen, but it's reduced in the cases
where there's more than one compatible string as only 1 has to be
right. It's also very common that valid combinations of compatible
strings are not documented clearly or followed correctly, so we can
catch these errors. I wasn't a fan of having to list out compatible
strings twice, so the tool does it for you in the common case.

Rob